Added additional Timetable information and coloring
This commit is contained in:
		@@ -44,9 +44,69 @@ class _WeekViewState extends State<WeekView> {
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
    return TimetableView(
 | 
			
		||||
      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),
 | 
			
		||||
      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),
 | 
			
		||||
                  endTime: parseTime(1500),
 | 
			
		||||
                  padding: const EdgeInsets.all(5),
 | 
			
		||||
                  backgroundColor: Theme.of(context).disabledColor,
 | 
			
		||||
                  backgroundColor: Colors.indigoAccent,
 | 
			
		||||
                  location: "\n${holidayInfo.longName}",
 | 
			
		||||
                )
 | 
			
		||||
              ]),
 | 
			
		||||
@@ -94,10 +154,8 @@ class _WeekViewState extends State<WeekView> {
 | 
			
		||||
      //Every Day
 | 
			
		||||
 | 
			
		||||
      List<TableEvent> events = List<TableEvent>.generate(
 | 
			
		||||
          timetable.result.where((element) => element.date == day).length,
 | 
			
		||||
              (index) {
 | 
			
		||||
          timetable.result.where((element) => element.date == day).length, (index) {
 | 
			
		||||
            GetTimetableResponseObject tableEvent = timetable.result.where((element) => element.date == day).elementAt(index);
 | 
			
		||||
 | 
			
		||||
            GetSubjectsResponseObject subject = subjects.result.firstWhere((subject) => subject.id == tableEvent.su[0]['id']);
 | 
			
		||||
 | 
			
		||||
            return TableEvent(
 | 
			
		||||
@@ -108,6 +166,7 @@ class _WeekViewState extends State<WeekView> {
 | 
			
		||||
              endTime: parseTime(tableEvent.endTime),
 | 
			
		||||
              padding: const EdgeInsets.all(5),
 | 
			
		||||
              backgroundColor: getEventColor(
 | 
			
		||||
                tableEvent.code ?? "",
 | 
			
		||||
                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)),
 | 
			
		||||
              ),
 | 
			
		||||
@@ -161,7 +220,9 @@ class _WeekViewState extends State<WeekView> {
 | 
			
		||||
    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(startTime.isAfter(DateTime.now())) return Theme.of(context).primaryColor;
 | 
			
		||||
    return Colors.redAccent;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user