Added explicit timetable objects with defined types
This commit is contained in:
@ -32,10 +32,10 @@ class GetTimetableResponseObject {
|
||||
String? sg;
|
||||
String? bkRemark;
|
||||
String? bkText;
|
||||
List<dynamic> kl;
|
||||
List<dynamic> te;
|
||||
List<dynamic> su;
|
||||
List<dynamic> ro;
|
||||
List<GetTimetableResponseObjectClass> kl;
|
||||
List<GetTimetableResponseObjectTeacher> te;
|
||||
List<GetTimetableResponseObjectSubject> su;
|
||||
List<GetTimetableResponseObjectRoom> ro;
|
||||
|
||||
GetTimetableResponseObject({
|
||||
required this.id,
|
||||
@ -83,4 +83,57 @@ class GetTimetableResponseObjectFieldsObject {
|
||||
|
||||
factory GetTimetableResponseObjectFieldsObject.fromJson(Map<String, dynamic> json) => _$GetTimetableResponseObjectFieldsObjectFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$GetTimetableResponseObjectFieldsObjectToJson(this);
|
||||
}
|
||||
|
||||
@JsonSerializable()
|
||||
class GetTimetableResponseObjectClass {
|
||||
int id;
|
||||
String name;
|
||||
String longname;
|
||||
String? externalkey;
|
||||
|
||||
GetTimetableResponseObjectClass(this.id, this.name, this.longname, this.externalkey);
|
||||
|
||||
factory GetTimetableResponseObjectClass.fromJson(Map<String, dynamic> json) => _$GetTimetableResponseObjectClassFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$GetTimetableResponseObjectClassToJson(this);
|
||||
}
|
||||
|
||||
@JsonSerializable()
|
||||
class GetTimetableResponseObjectTeacher {
|
||||
int id;
|
||||
String name;
|
||||
String longname;
|
||||
int? orgid;
|
||||
String? orgname;
|
||||
String? externalkey;
|
||||
|
||||
|
||||
GetTimetableResponseObjectTeacher(this.id, this.name, this.longname, this.orgid, this.orgname, this.externalkey);
|
||||
|
||||
factory GetTimetableResponseObjectTeacher.fromJson(Map<String, dynamic> json) => _$GetTimetableResponseObjectTeacherFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$GetTimetableResponseObjectTeacherToJson(this);
|
||||
}
|
||||
|
||||
@JsonSerializable()
|
||||
class GetTimetableResponseObjectSubject {
|
||||
int id;
|
||||
String name;
|
||||
String longname;
|
||||
|
||||
GetTimetableResponseObjectSubject(this.id, this.name, this.longname);
|
||||
|
||||
factory GetTimetableResponseObjectSubject.fromJson(Map<String, dynamic> json) => _$GetTimetableResponseObjectSubjectFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$GetTimetableResponseObjectSubjectToJson(this);
|
||||
}
|
||||
|
||||
@JsonSerializable()
|
||||
class GetTimetableResponseObjectRoom {
|
||||
int id;
|
||||
String name;
|
||||
String longname;
|
||||
|
||||
GetTimetableResponseObjectRoom(this.id, this.name, this.longname);
|
||||
|
||||
factory GetTimetableResponseObjectRoom.fromJson(Map<String, dynamic> json) => _$GetTimetableResponseObjectRoomFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$GetTimetableResponseObjectRoomToJson(this);
|
||||
}
|
@ -38,10 +38,22 @@ GetTimetableResponseObject _$GetTimetableResponseObjectFromJson(
|
||||
activityType: json['activityType'] as String?,
|
||||
sg: json['sg'] as String?,
|
||||
bkRemark: json['bkRemark'] as String?,
|
||||
kl: json['kl'] as List<dynamic>,
|
||||
te: json['te'] as List<dynamic>,
|
||||
su: json['su'] as List<dynamic>,
|
||||
ro: json['ro'] as List<dynamic>,
|
||||
kl: (json['kl'] as List<dynamic>)
|
||||
.map((e) => GetTimetableResponseObjectClass.fromJson(
|
||||
e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
te: (json['te'] as List<dynamic>)
|
||||
.map((e) => GetTimetableResponseObjectTeacher.fromJson(
|
||||
e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
su: (json['su'] as List<dynamic>)
|
||||
.map((e) => GetTimetableResponseObjectSubject.fromJson(
|
||||
e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
ro: (json['ro'] as List<dynamic>)
|
||||
.map((e) => GetTimetableResponseObjectRoom.fromJson(
|
||||
e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
)..bkText = json['bkText'] as String?;
|
||||
|
||||
Map<String, dynamic> _$GetTimetableResponseObjectToJson(
|
||||
@ -62,10 +74,10 @@ Map<String, dynamic> _$GetTimetableResponseObjectToJson(
|
||||
'sg': instance.sg,
|
||||
'bkRemark': instance.bkRemark,
|
||||
'bkText': instance.bkText,
|
||||
'kl': instance.kl,
|
||||
'te': instance.te,
|
||||
'su': instance.su,
|
||||
'ro': instance.ro,
|
||||
'kl': instance.kl.map((e) => e.toJson()).toList(),
|
||||
'te': instance.te.map((e) => e.toJson()).toList(),
|
||||
'su': instance.su.map((e) => e.toJson()).toList(),
|
||||
'ro': instance.ro.map((e) => e.toJson()).toList(),
|
||||
};
|
||||
|
||||
GetTimetableResponseObjectFields _$GetTimetableResponseObjectFieldsFromJson(
|
||||
@ -101,3 +113,75 @@ Map<String, dynamic> _$GetTimetableResponseObjectFieldsObjectToJson(
|
||||
'longname': instance.longname,
|
||||
'externalkey': instance.externalkey,
|
||||
};
|
||||
|
||||
GetTimetableResponseObjectClass _$GetTimetableResponseObjectClassFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
GetTimetableResponseObjectClass(
|
||||
json['id'] as int,
|
||||
json['name'] as String,
|
||||
json['longname'] as String,
|
||||
json['externalkey'] as String?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$GetTimetableResponseObjectClassToJson(
|
||||
GetTimetableResponseObjectClass instance) =>
|
||||
<String, dynamic>{
|
||||
'id': instance.id,
|
||||
'name': instance.name,
|
||||
'longname': instance.longname,
|
||||
'externalkey': instance.externalkey,
|
||||
};
|
||||
|
||||
GetTimetableResponseObjectTeacher _$GetTimetableResponseObjectTeacherFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
GetTimetableResponseObjectTeacher(
|
||||
json['id'] as int,
|
||||
json['name'] as String,
|
||||
json['longname'] as String,
|
||||
json['orgid'] as int?,
|
||||
json['orgname'] as String?,
|
||||
json['externalkey'] as String?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$GetTimetableResponseObjectTeacherToJson(
|
||||
GetTimetableResponseObjectTeacher instance) =>
|
||||
<String, dynamic>{
|
||||
'id': instance.id,
|
||||
'name': instance.name,
|
||||
'longname': instance.longname,
|
||||
'orgid': instance.orgid,
|
||||
'orgname': instance.orgname,
|
||||
'externalkey': instance.externalkey,
|
||||
};
|
||||
|
||||
GetTimetableResponseObjectSubject _$GetTimetableResponseObjectSubjectFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
GetTimetableResponseObjectSubject(
|
||||
json['id'] as int,
|
||||
json['name'] as String,
|
||||
json['longname'] as String,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$GetTimetableResponseObjectSubjectToJson(
|
||||
GetTimetableResponseObjectSubject instance) =>
|
||||
<String, dynamic>{
|
||||
'id': instance.id,
|
||||
'name': instance.name,
|
||||
'longname': instance.longname,
|
||||
};
|
||||
|
||||
GetTimetableResponseObjectRoom _$GetTimetableResponseObjectRoomFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
GetTimetableResponseObjectRoom(
|
||||
json['id'] as int,
|
||||
json['name'] as String,
|
||||
json['longname'] as String,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$GetTimetableResponseObjectRoomToJson(
|
||||
GetTimetableResponseObjectRoom instance) =>
|
||||
<String, dynamic>{
|
||||
'id': instance.id,
|
||||
'name': instance.name,
|
||||
'longname': instance.longname,
|
||||
};
|
||||
|
@ -26,13 +26,13 @@ class AppointmentDetails {
|
||||
GetRoomsResponseObject room;
|
||||
|
||||
try {
|
||||
subject = webuntisData.getSubjectsResponse.result.firstWhere((subject) => subject.id == timetableData.su[0]['id']);
|
||||
subject = webuntisData.getSubjectsResponse.result.firstWhere((subject) => subject.id == timetableData.su[0].id);
|
||||
} catch(e) {
|
||||
subject = GetSubjectsResponseObject(0, "?", "Lesefehler", "?", true);
|
||||
}
|
||||
|
||||
try {
|
||||
room = webuntisData.getRoomsResponse.result.firstWhere((room) => room.id == timetableData.ro[0]['id']);
|
||||
room = webuntisData.getRoomsResponse.result.firstWhere((room) => room.id == timetableData.ro[0].id);
|
||||
} catch(e) {
|
||||
room = GetRoomsResponseObject(0, "?", "Lesefehler", true, "?");
|
||||
}
|
||||
@ -72,7 +72,7 @@ class AppointmentDetails {
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.person),
|
||||
title: Text("Lehrkraft: (${timetableData.te[0]['name']}) ${timetableData.te[0]['longname']}"),
|
||||
title: Text("Lehrkraft: (${timetableData.te[0].name}) ${timetableData.te[0].longname}"),
|
||||
trailing: IconButton(
|
||||
icon: const Icon(Icons.textsms_outlined),
|
||||
onPressed: () {
|
||||
@ -86,7 +86,7 @@ class AppointmentDetails {
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.people),
|
||||
title: Text("Klasse(n): ${timetableData.kl.map((e) => e['name']).join(", ")}"),
|
||||
title: Text("Klasse(n): ${timetableData.kl.map((e) => e.name).join(", ")}"),
|
||||
),
|
||||
DebugTile(timetableData.toJson()).asTile(context),
|
||||
],
|
||||
|
@ -192,11 +192,11 @@ class _TimetableState extends State<Timetable> {
|
||||
id: element,
|
||||
startTime: startTime,
|
||||
endTime: endTime,
|
||||
subject: subjects.result.firstWhere((subject) => subject.id == element.su[0]['id']).alternateName,
|
||||
subject: subjects.result.firstWhere((subject) => subject.id == element.su[0].id).alternateName,
|
||||
location: ""
|
||||
"${rooms.result.firstWhere((room) => room.id == element.ro[0]['id']).name}"
|
||||
"${rooms.result.firstWhere((room) => room.id == element.ro[0].id).name}"
|
||||
"\n"
|
||||
"${element.te.first['longname']}",
|
||||
"${element.te.first.longname}",
|
||||
notes: element.activityType,
|
||||
color: _getEventColor(element.code, startTime, endTime),
|
||||
);
|
||||
|
Reference in New Issue
Block a user