Added additional Timetable information and coloring
This commit is contained in:
		@@ -44,9 +44,69 @@ class _WeekViewState extends State<WeekView> {
 | 
				
			|||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    return TimetableView(
 | 
					    return TimetableView(
 | 
				
			||||||
      laneEventsList: _buildLaneEvents(widget.value),
 | 
					      laneEventsList: _buildLaneEvents(widget.value),
 | 
				
			||||||
      onEventTap: (TableEvent event) {},
 | 
					      onEventTap: (TableEvent event) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					          GetTimetableResponseObject timetableData = widget.value.getTimetableResponse.result.firstWhere((element) => element.id == event.eventId);
 | 
				
			||||||
 | 
					          GetSubjectsResponseObject subject = widget.value.getSubjectsResponse.result.firstWhere((subject) => subject.id == timetableData.su[0]['id']);
 | 
				
			||||||
 | 
					          GetRoomsResponseObject room = widget.value.getRoomsResponse.result.firstWhere((room) => room.id == timetableData.ro[0]['id']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          showModalBottomSheet(context: context, builder: (context) => Column(
 | 
				
			||||||
 | 
					            children: [
 | 
				
			||||||
 | 
					              Padding(
 | 
				
			||||||
 | 
					                padding: EdgeInsets.symmetric(vertical: 30),
 | 
				
			||||||
 | 
					                child: Center(
 | 
				
			||||||
 | 
					                  child: Column(
 | 
				
			||||||
 | 
					                    children: [
 | 
				
			||||||
 | 
					                      Icon(Icons.info),
 | 
				
			||||||
 | 
					                      SizedBox(height: 10),
 | 
				
			||||||
 | 
					                      Text("${subject.alternateName} - (${subject.longName})", style: const TextStyle(fontSize: 30)),
 | 
				
			||||||
 | 
					                      Text("${Jiffy(event.startTime).format("HH:mm")} - ${Jiffy(event.endTime).format("HH:mm")}", style: const TextStyle(fontSize: 15)),
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              Expanded(
 | 
				
			||||||
 | 
					                child: ListView(
 | 
				
			||||||
 | 
					                  children: [
 | 
				
			||||||
 | 
					                    ListTile(
 | 
				
			||||||
 | 
					                      leading: const Icon(Icons.notifications_active),
 | 
				
			||||||
 | 
					                      title: Text("Status: ${timetableData.code != null ? "Entfällt" : "Findet statt"}"),
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    ListTile(
 | 
				
			||||||
 | 
					                      leading: const Icon(Icons.room),
 | 
				
			||||||
 | 
					                      title: Text("Raum: ${room.name}"),
 | 
				
			||||||
 | 
					                      trailing: const Icon(Icons.house_outlined),
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    ListTile(
 | 
				
			||||||
 | 
					                      leading: const Icon(Icons.person),
 | 
				
			||||||
 | 
					                      title: Text("Lehrkraft: (${timetableData.te[0]['name']}) ${timetableData.te[0]['longname']}"),
 | 
				
			||||||
 | 
					                      trailing: const Icon(Icons.textsms_outlined),
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    ListTile(
 | 
				
			||||||
 | 
					                      leading: const Icon(Icons.abc),
 | 
				
			||||||
 | 
					                      title: Text("Typ: ${timetableData.activityType}"),
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    ListTile(
 | 
				
			||||||
 | 
					                      leading: const Icon(Icons.people),
 | 
				
			||||||
 | 
					                      title: Text("Klasse(n): ${timetableData.kl.map((e) => e['name']).join(", ")}"),
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
 | 
					                  ],
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					              )
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					          ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } on StateError {
 | 
				
			||||||
 | 
					          return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
      timetableStyle: CustomTableStyle(context),
 | 
					      timetableStyle: CustomTableStyle(context),
 | 
				
			||||||
      onEmptySlotTap: (int laneIndex, TableEventTime start, TableEventTime end) => {},
 | 
					      onEmptySlotTap: (int laneIndex, TableEventTime start, TableEventTime end) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -79,7 +139,7 @@ class _WeekViewState extends State<WeekView> {
 | 
				
			|||||||
                  startTime: parseTime(0800),
 | 
					                  startTime: parseTime(0800),
 | 
				
			||||||
                  endTime: parseTime(1500),
 | 
					                  endTime: parseTime(1500),
 | 
				
			||||||
                  padding: const EdgeInsets.all(5),
 | 
					                  padding: const EdgeInsets.all(5),
 | 
				
			||||||
                  backgroundColor: Theme.of(context).disabledColor,
 | 
					                  backgroundColor: Colors.indigoAccent,
 | 
				
			||||||
                  location: "\n${holidayInfo.longName}",
 | 
					                  location: "\n${holidayInfo.longName}",
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
              ]),
 | 
					              ]),
 | 
				
			||||||
@@ -94,10 +154,8 @@ class _WeekViewState extends State<WeekView> {
 | 
				
			|||||||
      //Every Day
 | 
					      //Every Day
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      List<TableEvent> events = List<TableEvent>.generate(
 | 
					      List<TableEvent> events = List<TableEvent>.generate(
 | 
				
			||||||
          timetable.result.where((element) => element.date == day).length,
 | 
					          timetable.result.where((element) => element.date == day).length, (index) {
 | 
				
			||||||
              (index) {
 | 
					 | 
				
			||||||
            GetTimetableResponseObject tableEvent = timetable.result.where((element) => element.date == day).elementAt(index);
 | 
					            GetTimetableResponseObject tableEvent = timetable.result.where((element) => element.date == day).elementAt(index);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            GetSubjectsResponseObject subject = subjects.result.firstWhere((subject) => subject.id == tableEvent.su[0]['id']);
 | 
					            GetSubjectsResponseObject subject = subjects.result.firstWhere((subject) => subject.id == tableEvent.su[0]['id']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return TableEvent(
 | 
					            return TableEvent(
 | 
				
			||||||
@@ -108,6 +166,7 @@ class _WeekViewState extends State<WeekView> {
 | 
				
			|||||||
              endTime: parseTime(tableEvent.endTime),
 | 
					              endTime: parseTime(tableEvent.endTime),
 | 
				
			||||||
              padding: const EdgeInsets.all(5),
 | 
					              padding: const EdgeInsets.all(5),
 | 
				
			||||||
              backgroundColor: getEventColor(
 | 
					              backgroundColor: getEventColor(
 | 
				
			||||||
 | 
					                tableEvent.code ?? "",
 | 
				
			||||||
                currentDay.add(Duration(hours: parseTime(tableEvent.startTime).hour, minutes: parseTime(tableEvent.startTime).minute)),
 | 
					                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)),
 | 
					                currentDay.add(Duration(hours: parseTime(tableEvent.endTime).hour, minutes: parseTime(tableEvent.endTime).minute)),
 | 
				
			||||||
              ),
 | 
					              ),
 | 
				
			||||||
@@ -161,7 +220,9 @@ class _WeekViewState extends State<WeekView> {
 | 
				
			|||||||
    return TableEventTime(hour: input.hour, minute: input.minute);
 | 
					    return TableEventTime(hour: input.hour, minute: input.minute);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Color getEventColor(DateTime startTime, DateTime endTime) {
 | 
					  Color getEventColor(String? code, DateTime startTime, DateTime endTime) {
 | 
				
			||||||
 | 
					    if(code == "cancelled") return Colors.deepPurple;
 | 
				
			||||||
 | 
					    if(code == "irregular") return Colors.blueAccent;
 | 
				
			||||||
    if(endTime.isBefore(DateTime.now())) return Colors.grey;
 | 
					    if(endTime.isBefore(DateTime.now())) return Colors.grey;
 | 
				
			||||||
    if(startTime.isAfter(DateTime.now())) return Theme.of(context).primaryColor;
 | 
					    if(startTime.isAfter(DateTime.now())) return Theme.of(context).primaryColor;
 | 
				
			||||||
    return Colors.redAccent;
 | 
					    return Colors.redAccent;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user