implemented current schoolyear API and dynamic timetable scroll boundaries, added handling for out-of-range errors to narrow accessible dates, optimized holiday region rendering by collapsing overlaps, and refined holiday tile UI

This commit is contained in:
2026-05-14 15:07:48 +02:00
parent 2cb8321d07
commit 582eff8750
13 changed files with 368 additions and 51 deletions
@@ -29,6 +29,11 @@ _TimetableState _$TimetableStateFromJson(Map<String, dynamic> json) =>
: GetHolidaysResponse.fromJson(
json['schoolHolidays'] as Map<String, dynamic>,
),
schoolyear: json['schoolyear'] == null
? null
: GetCurrentSchoolyearResponse.fromJson(
json['schoolyear'] as Map<String, dynamic>,
),
timegrid: json['timegrid'] == null
? null
: GetTimegridUnitsResponse.fromJson(
@@ -42,6 +47,12 @@ _TimetableState _$TimetableStateFromJson(Map<String, dynamic> json) =>
startDate: DateTime.parse(json['startDate'] as String),
endDate: DateTime.parse(json['endDate'] as String),
dataVersion: (json['dataVersion'] as num?)?.toInt() ?? 0,
accessibleStartDate: json['accessibleStartDate'] == null
? null
: DateTime.parse(json['accessibleStartDate'] as String),
accessibleEndDate: json['accessibleEndDate'] == null
? null
: DateTime.parse(json['accessibleEndDate'] as String),
);
Map<String, dynamic> _$TimetableStateToJson(_TimetableState instance) =>
@@ -50,9 +61,12 @@ Map<String, dynamic> _$TimetableStateToJson(_TimetableState instance) =>
'rooms': instance.rooms,
'subjects': instance.subjects,
'schoolHolidays': instance.schoolHolidays,
'schoolyear': instance.schoolyear,
'timegrid': instance.timegrid,
'customEvents': instance.customEvents,
'startDate': instance.startDate.toIso8601String(),
'endDate': instance.endDate.toIso8601String(),
'dataVersion': instance.dataVersion,
'accessibleStartDate': instance.accessibleStartDate?.toIso8601String(),
'accessibleEndDate': instance.accessibleEndDate?.toIso8601String(),
};