Restored full timetable implementation using SFCalendar
This commit is contained in:
@ -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) {
|
||||
|
Reference in New Issue
Block a user