From b7bb3805a29b385624c51ba05ad17e071949d4e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Mon, 19 Jun 2023 10:54:23 +0200 Subject: [PATCH] Added explicit timetable objects with defined types --- .idea/libraries/Dart_Packages.xml | 192 +++++++----------- .idea/libraries/Flutter_Plugins.xml | 28 +-- .../getTimetable/getTimetableResponse.dart | 61 +++++- .../getTimetable/getTimetableResponse.g.dart | 100 ++++++++- .../pages/timetable/appointmentDetails.dart | 8 +- lib/view/pages/timetable/timetable.dart | 6 +- linux/flutter/generated_plugin_registrant.cc | 4 - linux/flutter/generated_plugins.cmake | 1 - macos/Flutter/GeneratedPluginRegistrant.swift | 2 - .../flutter/generated_plugin_registrant.cc | 3 - windows/flutter/generated_plugins.cmake | 1 - 11 files changed, 235 insertions(+), 171 deletions(-) diff --git a/.idea/libraries/Dart_Packages.xml b/.idea/libraries/Dart_Packages.xml index 5da2980..ad74def 100644 --- a/.idea/libraries/Dart_Packages.xml +++ b/.idea/libraries/Dart_Packages.xml @@ -47,7 +47,7 @@ - @@ -131,14 +131,14 @@ - - @@ -152,7 +152,7 @@ - @@ -208,7 +208,7 @@ - @@ -229,7 +229,7 @@ - @@ -257,7 +257,7 @@ - @@ -299,7 +299,7 @@ - @@ -327,35 +327,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - @@ -439,7 +411,7 @@ - @@ -488,14 +460,14 @@ - - @@ -530,14 +502,14 @@ - - @@ -555,31 +527,10 @@ - - - - - - - - - - - - - - - - - - - @@ -635,7 +586,7 @@ - @@ -656,7 +607,7 @@ - @@ -698,7 +649,7 @@ - @@ -754,7 +705,7 @@ - @@ -768,7 +719,7 @@ - @@ -880,7 +831,7 @@ - @@ -1020,63 +971,63 @@ - - - - - - - - - @@ -1104,7 +1055,7 @@ - @@ -1125,7 +1076,7 @@ - @@ -1139,7 +1090,7 @@ - @@ -1174,7 +1125,7 @@ - @@ -1259,15 +1210,15 @@ - - + + - + @@ -1279,10 +1230,10 @@ - - + + - + @@ -1290,14 +1241,14 @@ - + - + - + @@ -1306,11 +1257,7 @@ - - - - - + @@ -1319,25 +1266,22 @@ - + - - + + - - + + - - - - + @@ -1345,10 +1289,10 @@ - + - + @@ -1361,9 +1305,9 @@ - + - + @@ -1379,7 +1323,7 @@ - + @@ -1398,29 +1342,29 @@ - - - - - - - - - + + + + + + + + + - + - + - + - + diff --git a/.idea/libraries/Flutter_Plugins.xml b/.idea/libraries/Flutter_Plugins.xml index 96b7f1b..1b9db45 100644 --- a/.idea/libraries/Flutter_Plugins.xml +++ b/.idea/libraries/Flutter_Plugins.xml @@ -1,23 +1,15 @@ - - - - - - - - @@ -26,17 +18,19 @@ - - - - - - - - - + + + + + + + + + + + diff --git a/lib/api/webuntis/queries/getTimetable/getTimetableResponse.dart b/lib/api/webuntis/queries/getTimetable/getTimetableResponse.dart index d3f438c..e9752f2 100644 --- a/lib/api/webuntis/queries/getTimetable/getTimetableResponse.dart +++ b/lib/api/webuntis/queries/getTimetable/getTimetableResponse.dart @@ -32,10 +32,10 @@ class GetTimetableResponseObject { String? sg; String? bkRemark; String? bkText; - List kl; - List te; - List su; - List ro; + List kl; + List te; + List su; + List ro; GetTimetableResponseObject({ required this.id, @@ -83,4 +83,57 @@ class GetTimetableResponseObjectFieldsObject { factory GetTimetableResponseObjectFieldsObject.fromJson(Map json) => _$GetTimetableResponseObjectFieldsObjectFromJson(json); Map 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 json) => _$GetTimetableResponseObjectClassFromJson(json); + Map 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 json) => _$GetTimetableResponseObjectTeacherFromJson(json); + Map toJson() => _$GetTimetableResponseObjectTeacherToJson(this); +} + +@JsonSerializable() +class GetTimetableResponseObjectSubject { + int id; + String name; + String longname; + + GetTimetableResponseObjectSubject(this.id, this.name, this.longname); + + factory GetTimetableResponseObjectSubject.fromJson(Map json) => _$GetTimetableResponseObjectSubjectFromJson(json); + Map toJson() => _$GetTimetableResponseObjectSubjectToJson(this); +} + +@JsonSerializable() +class GetTimetableResponseObjectRoom { + int id; + String name; + String longname; + + GetTimetableResponseObjectRoom(this.id, this.name, this.longname); + + factory GetTimetableResponseObjectRoom.fromJson(Map json) => _$GetTimetableResponseObjectRoomFromJson(json); + Map toJson() => _$GetTimetableResponseObjectRoomToJson(this); } \ No newline at end of file diff --git a/lib/api/webuntis/queries/getTimetable/getTimetableResponse.g.dart b/lib/api/webuntis/queries/getTimetable/getTimetableResponse.g.dart index 6df085e..7436b30 100644 --- a/lib/api/webuntis/queries/getTimetable/getTimetableResponse.g.dart +++ b/lib/api/webuntis/queries/getTimetable/getTimetableResponse.g.dart @@ -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, - te: json['te'] as List, - su: json['su'] as List, - ro: json['ro'] as List, + kl: (json['kl'] as List) + .map((e) => GetTimetableResponseObjectClass.fromJson( + e as Map)) + .toList(), + te: (json['te'] as List) + .map((e) => GetTimetableResponseObjectTeacher.fromJson( + e as Map)) + .toList(), + su: (json['su'] as List) + .map((e) => GetTimetableResponseObjectSubject.fromJson( + e as Map)) + .toList(), + ro: (json['ro'] as List) + .map((e) => GetTimetableResponseObjectRoom.fromJson( + e as Map)) + .toList(), )..bkText = json['bkText'] as String?; Map _$GetTimetableResponseObjectToJson( @@ -62,10 +74,10 @@ Map _$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 _$GetTimetableResponseObjectFieldsObjectToJson( 'longname': instance.longname, 'externalkey': instance.externalkey, }; + +GetTimetableResponseObjectClass _$GetTimetableResponseObjectClassFromJson( + Map json) => + GetTimetableResponseObjectClass( + json['id'] as int, + json['name'] as String, + json['longname'] as String, + json['externalkey'] as String?, + ); + +Map _$GetTimetableResponseObjectClassToJson( + GetTimetableResponseObjectClass instance) => + { + 'id': instance.id, + 'name': instance.name, + 'longname': instance.longname, + 'externalkey': instance.externalkey, + }; + +GetTimetableResponseObjectTeacher _$GetTimetableResponseObjectTeacherFromJson( + Map 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 _$GetTimetableResponseObjectTeacherToJson( + GetTimetableResponseObjectTeacher instance) => + { + 'id': instance.id, + 'name': instance.name, + 'longname': instance.longname, + 'orgid': instance.orgid, + 'orgname': instance.orgname, + 'externalkey': instance.externalkey, + }; + +GetTimetableResponseObjectSubject _$GetTimetableResponseObjectSubjectFromJson( + Map json) => + GetTimetableResponseObjectSubject( + json['id'] as int, + json['name'] as String, + json['longname'] as String, + ); + +Map _$GetTimetableResponseObjectSubjectToJson( + GetTimetableResponseObjectSubject instance) => + { + 'id': instance.id, + 'name': instance.name, + 'longname': instance.longname, + }; + +GetTimetableResponseObjectRoom _$GetTimetableResponseObjectRoomFromJson( + Map json) => + GetTimetableResponseObjectRoom( + json['id'] as int, + json['name'] as String, + json['longname'] as String, + ); + +Map _$GetTimetableResponseObjectRoomToJson( + GetTimetableResponseObjectRoom instance) => + { + 'id': instance.id, + 'name': instance.name, + 'longname': instance.longname, + }; diff --git a/lib/view/pages/timetable/appointmentDetails.dart b/lib/view/pages/timetable/appointmentDetails.dart index fd37dd7..2f4fe8d 100644 --- a/lib/view/pages/timetable/appointmentDetails.dart +++ b/lib/view/pages/timetable/appointmentDetails.dart @@ -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), ], diff --git a/lib/view/pages/timetable/timetable.dart b/lib/view/pages/timetable/timetable.dart index 58053be..dabc84b 100644 --- a/lib/view/pages/timetable/timetable.dart +++ b/lib/view/pages/timetable/timetable.dart @@ -192,11 +192,11 @@ class _TimetableState extends State { 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), ); diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 7299b5c..f6f23bf 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,13 +6,9 @@ #include "generated_plugin_registrant.h" -#include #include void fl_register_plugins(FlPluginRegistry* registry) { - g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); - file_selector_plugin_register_with_registrar(file_selector_linux_registrar); g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 786ff5c..f16b4c3 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,7 +3,6 @@ # list(APPEND FLUTTER_PLUGIN_LIST - file_selector_linux url_launcher_linux ) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 9d5f78f..7026e66 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,7 +6,6 @@ import FlutterMacOS import Foundation import device_info_plus -import file_selector_macos import package_info import path_provider_foundation import shared_preferences_foundation @@ -16,7 +15,6 @@ import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) - FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FLTPackageInfoPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 779f0ee..9871f6b 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,13 +6,10 @@ #include "generated_plugin_registrant.h" -#include #include #include void RegisterPlugins(flutter::PluginRegistry* registry) { - FileSelectorWindowsRegisterWithRegistrar( - registry->GetRegistrarForPlugin("FileSelectorWindows")); SyncfusionPdfviewerWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("SyncfusionPdfviewerWindowsPlugin")); UrlLauncherWindowsRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 3757972..2487723 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,7 +3,6 @@ # list(APPEND FLUTTER_PLUGIN_LIST - file_selector_windows syncfusion_pdfviewer_windows url_launcher_windows )