Pretty JSON and extended Webuntis Error Handling
This commit is contained in:
parent
7cbae807e4
commit
4274393cd2
8
.idea/libraries/Dart_Packages.xml
generated
8
.idea/libraries/Dart_Packages.xml
generated
@ -555,6 +555,13 @@
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="pretty_json">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dev/pretty_json-2.0.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="process">
|
||||
<value>
|
||||
<list>
|
||||
@ -964,6 +971,7 @@
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/pointycastle-3.6.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/pool-1.5.1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/pretty_json-2.0.0/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/process-4.2.4/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/provider-6.0.5/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/pub_semver-2.1.3/lib" />
|
||||
|
@ -90,6 +90,7 @@ class _AppState extends State<App> {
|
||||
const Icon(Icons.chat),
|
||||
Consumer<ChatListProps>(
|
||||
builder: (context, value, child) {
|
||||
if(value.primaryLoading()) return const SizedBox.shrink();
|
||||
int messages = value.getRoomsResponse.data.map((e) => e.unreadMessages).reduce((a, b) => a+b);
|
||||
return Visibility(
|
||||
visible: messages > 0,
|
||||
|
@ -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
|
||||
|
@ -59,16 +59,14 @@ class _DebugOverviewState extends State<DebugOverview> {
|
||||
itemCount: files.length,
|
||||
itemBuilder: (context, index) {
|
||||
String filename = files[index].split("/").last;
|
||||
//String data = getValue(index).toString().replaceAll("{", "{\n ").replaceAll("[", "[\n ").replaceAll(",", ",\n ");
|
||||
String data = getValue(index).toString();
|
||||
|
||||
return ListTile(
|
||||
leading: const Icon(Icons.text_snippet_outlined),
|
||||
title: Text("(${data.length} z) [$filename] ${Jiffy.unixFromMillisecondsSinceEpoch(getValue(index)['lastupdate']).fromNow()}"),
|
||||
title: Text("(${getValue(index).toString().length} z) [$filename] ${Jiffy.unixFromMillisecondsSinceEpoch(getValue(index)['lastupdate']).fromNow()}"),
|
||||
textColor: Colors.black,
|
||||
onTap: () {
|
||||
Navigator.push(context, MaterialPageRoute(builder: (context) {
|
||||
return JsonViewer(title: filename, data: data);
|
||||
return JsonViewer(title: filename, data: getValue(index));
|
||||
},));
|
||||
},
|
||||
);
|
||||
|
@ -1,8 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:pretty_json/pretty_json.dart';
|
||||
|
||||
class JsonViewer extends StatelessWidget {
|
||||
String title;
|
||||
String data;
|
||||
Map<String, dynamic> data;
|
||||
|
||||
JsonViewer({Key? key, required this.title, required this.data}) : super(key: key);
|
||||
|
||||
@ -14,8 +15,13 @@ class JsonViewer extends StatelessWidget {
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
scrollDirection: Axis.vertical,
|
||||
child: Text(data.replaceAllMapped(RegExp(r'[{,}]'), (match) => "${match.group(0)}\n ")),
|
||||
child: Text(format(data)),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
static String format(Map<String, dynamic> jsonInput) {
|
||||
return prettyJson(jsonInput, indent: 2);
|
||||
//return jsonInput.replaceAllMapped(RegExp(r'[{,}]'), (match) => "${match.group(0)}\n ");
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user