Skip to content
Snippets Groups Projects
Commit 5c1bf763 authored by doodlezucc's avatar doodlezucc
Browse files

use date variable in TimetableData

parent d1d99908
No related branches found
No related tags found
No related merge requests found
......@@ -95,6 +95,7 @@ class CacheableTimetable extends Cacheable<TimetableData> {
}
return TimetableData(
date: date,
lessons: timetableLessons,
rooms: rooms.values.toSet(),
teachers: teachers.values.toSet(),
......
......@@ -8,6 +8,7 @@ import '../untis/lecture.dart';
import '../untis/lesson.dart';
import '../untis/period.dart';
import '../untis/timetable.dart';
import '../util/date_extension.dart';
import '../util/listenable.dart';
import 'period_background.dart';
import 'weekday_content.dart';
......@@ -66,17 +67,20 @@ class _TimetableState extends State<Timetable> {
: mergeLessons(_getLessonsOfDay(index), profile.hiddenLectures);
}
DateTime getDateAtWeekdayIndex(int index) {
final monday = DateTime.now().atStartOfWeek();
return monday.add(Duration(days: index));
}
@override
Widget build(BuildContext context) {
return Column(
children: [
Row(
children: List.generate(Timetable.weekdayCount, (index) {
final now = DateTime.now();
final currentWeekday = now.weekday;
final monday = now.subtract(Duration(days: currentWeekday - 1));
final indexedDay = getDateAtWeekdayIndex(index);
final indexedDay = monday.add(Duration(days: index));
return Expanded(
child: WeekdayHeader(
date: indexedDay,
......@@ -104,12 +108,11 @@ class _TimetableState extends State<Timetable> {
crossAxisAlignment: CrossAxisAlignment.start,
children: List.generate(Timetable.weekdayCount, (index) {
final lessons = getMergedLessonsOfDay(index);
final isCurrentDay =
DateTime.now().weekday - 1 == index;
final date = getDateAtWeekdayIndex(index);
return Expanded(
child: WeekdayContent(
showTimeIndicator: isCurrentDay,
date: date,
lessons: lessons,
appContext: widget.appContext,
),
......
......@@ -3,13 +3,14 @@ import 'dart:math';
import 'package:flutter/material.dart';
import '../context.dart';
import '../util/date_extension.dart';
import '../util/simultaneous.dart';
import '../untis/lesson.dart';
import 'lesson.dart';
import 'time_indicator.dart';
class WeekdayContent extends StatelessWidget {
final bool showTimeIndicator;
final DateTime date;
final List<Lesson> lessons;
final List<FloatingLesson> floatingLessons;
final AppContext appContext;
......@@ -17,9 +18,12 @@ class WeekdayContent extends StatelessWidget {
int get latestLessonEnd =>
lessons.isEmpty ? 0 : lessons.map((e) => e.endMinutes).reduce(max);
bool get showTimeIndicator =>
date.atStartOfDay() == DateTime.now().atStartOfDay();
WeekdayContent({
super.key,
required this.showTimeIndicator,
required this.date,
required this.lessons,
required this.appContext,
}) : floatingLessons = solveSimultaneous(
......
......@@ -65,13 +65,10 @@ class UntisLesson extends Lesson with UntisMixin {
UntisLesson(
this.json, {
required Lecture lecture,
required Set<Room> rooms,
required Set<Teacher> teachers,
required super.lecture,
required super.rooms,
required super.teachers,
}) : super(
lecture: lecture,
rooms: rooms,
teachers: teachers,
date: _parseDate(json['date']),
start: _parseTime(json['startTime']),
end: _parseTime(json['endTime']),
......
import '../util/date_extension.dart';
import 'lesson.dart';
import 'room.dart';
import 'teacher.dart';
class TimetableData {
final DateTime date;
final Set<UntisLesson> lessons;
final Set<Teacher> teachers;
final Set<Room> rooms;
TimetableData({
required this.date,
required this.lessons,
required this.teachers,
required this.rooms,
});
static TimetableData merge(TimetableData a, TimetableData b) {
if (a.date.atStartOfWeek() != b.date.atStartOfWeek()) {
throw StateError('Timetables are from different weeks');
}
return TimetableData(
date: a.date,
lessons: a.lessons.union(b.lessons),
teachers: a.teachers.union(b.teachers),
rooms: a.rooms.union(b.rooms),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment