Pretty JSON and extended Webuntis Error Handling

This commit is contained in:
2023-02-22 16:31:26 +01:00
parent 7cbae807e4
commit 4274393cd2
5 changed files with 47 additions and 14 deletions

View File

@ -1,8 +1,10 @@
import 'package:flutter/cupertino.dart';
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:jiffy/jiffy.dart';
import 'package:marianum_mobile/api/webuntis/queries/getHolidays/getHolidaysResponse.dart';
import 'package:marianum_mobile/screen/settings/debug/jsonViewer.dart';
import 'package:timetable_view/timetable_view.dart';
import '../../../api/webuntis/queries/getHolidays/getHolidays.dart';
@ -80,6 +82,20 @@ class _WeekViewState extends State<WeekView> {
ListTile(
leading: const Icon(Icons.people),
title: Text("Klasse(n): ${timetableData.kl.map((e) => e['name']).join(", ")}"),
),
ListTile(
leading: const Icon(Icons.bug_report_outlined),
title: const Text("Webuntis Rohdaten zeigen"),
onTap: () => showDialog(context: context, builder: (context) {
return AlertDialog(
scrollable: true,
title: const Text("Rohdaten"),
content: Text(JsonViewer.format(timetableData.toJson())),
actions: [
TextButton(onPressed: () => Navigator.of(context).pop(), child: const SingleChildScrollView(child: Text("Schließen")))
],
);
}),
)
],
),
@ -142,8 +158,9 @@ class _WeekViewState extends State<WeekView> {
//Every Day
List<TableEvent> events = List<TableEvent>.generate(
timetable.result.where((element) => element.date == day).length, (index) {
GetTimetableResponseObject tableEvent = timetable.result.where((element) => element.date == day).elementAt(index);
timetable.result.where((element) => element.date == day).length, (index) {
GetTimetableResponseObject tableEvent = timetable.result.where((element) => element.date == day).elementAt(index);
try {
GetSubjectsResponseObject subject = subjects.result.firstWhere((subject) => subject.id == tableEvent.su[0]['id']);
return TableEvent(
@ -158,9 +175,12 @@ class _WeekViewState extends State<WeekView> {
currentDay.add(Duration(hours: parseTime(tableEvent.startTime).hour, minutes: parseTime(tableEvent.startTime).minute)),
currentDay.add(Duration(hours: parseTime(tableEvent.endTime).hour, minutes: parseTime(tableEvent.endTime).minute)),
),
location: "\n${rooms.result.firstWhere((room) => room.id == tableEvent.ro[0]['id']).name} - ${tableEvent.te[0]['longname']} (${tableEvent.te[0]['name']})",
location: "\n${rooms.result.firstWhereOrNull((room) => room.id == tableEvent.ro[0]['id'])?.name ?? "?"} - ${tableEvent.te[0]['longname']} (${tableEvent.te[0]['name']})",
);
} on Error {
return TableEvent(title: "Unbekannt", eventId: index, laneIndex: day, startTime: parseTime(tableEvent.startTime), endTime: parseTime(tableEvent.endTime));
}
}
);
//Timepointer
@ -176,10 +196,10 @@ class _WeekViewState extends State<WeekView> {
}
laneEvents.add(
LaneEvents(
lane: currentLane,
events: events
)
LaneEvents(
lane: currentLane,
events: events
)
);
}
@ -238,7 +258,7 @@ class CustomTableStyle extends TimetableStyle {
@override
double get timeItemHeight => MediaQuery.of(context).size.width > 1000 ? 60 : 90;
@override
double get timeItemWidth => 50;
double get timeItemWidth => 40;
@override
double get laneHeight => 40;
@override