Restored full timetable implementation using SFCalendar

This commit is contained in:
2023-05-20 16:30:06 +02:00
parent ba53da1b14
commit 9a1247de5f
9 changed files with 515 additions and 312 deletions

View File

@ -14,7 +14,7 @@ import '../../api/webuntis/queries/getTimetable/getTimetableResponse.dart';
import '../../api/webuntis/webuntisError.dart';
extension DateTimeExtension on DateTime {
DateTime next(int day) {
DateTime jumpToNextWeekDay(int day) {
return add(
Duration(
days: (day - weekday) % DateTime.daysPerWeek,
@ -24,7 +24,7 @@ extension DateTimeExtension on DateTime {
}
class TimetableProps extends DataHolder {
var _queryWeek = DateTime.now();
final _queryWeek = DateTime.now().add(const Duration(days: 2));
late DateTime startDate = getDate(_queryWeek.subtract(Duration(days: _queryWeek.weekday - 1)));
late DateTime endDate = getDate(_queryWeek.add(Duration(days: DateTime.daysPerWeek - _queryWeek.weekday)));
@ -87,33 +87,18 @@ class TimetableProps extends DataHolder {
);
}
void nearest() {
_queryWeek = _queryWeek = DateTime.now();
if(_queryWeek.weekday == DateTime.saturday || _queryWeek.weekday == DateTime.sunday) _queryWeek = _queryWeek.add(const Duration(days: 2));
updateWeek();
}
void switchWeek({previous = false}) {
if(previous) {
_queryWeek = _queryWeek.subtract(const Duration(days: 7));
} else {
_queryWeek = _queryWeek.add(const Duration(days: 7));
}
updateWeek();
}
DateTime getDate(DateTime d) => DateTime(d.year, d.month, d.day);
bool isWeekend(DateTime queryDate) {
return queryDate.weekday == DateTime.saturday || queryDate.weekday == DateTime.sunday;
}
void updateWeek() {
void updateWeek(DateTime start, DateTime end) {
properties().forEach((element) => element = null);
error = null;
notifyListeners();
startDate = getDate(_queryWeek.subtract(Duration(days: _queryWeek.weekday - 1)));
endDate = getDate(_queryWeek.add(Duration(days: DateTime.daysPerWeek - _queryWeek.weekday)));
startDate = start.subtract(const Duration(days: 7));
endDate = end.add(const Duration(days: 7));
try {
run();
} on WebuntisError catch(e) {