104 lines
3.1 KiB
Dart
104 lines
3.1 KiB
Dart
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:marianum_mobile/widget/loadingPacket.dart';
|
|
import 'package:provider/provider.dart';
|
|
import 'package:timetable_view/timetable_view.dart';
|
|
|
|
import '../../../dataOld/incommingPackets/timetablePacket.dart';
|
|
|
|
class TimetableOld extends StatefulWidget {
|
|
const TimetableOld({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
State<TimetableOld> createState() => _TimetableOldState();
|
|
}
|
|
|
|
class _TimetableOldState extends State<TimetableOld> {
|
|
|
|
@override
|
|
void initState() {
|
|
Provider.of<TimetablePacket>(context, listen: false).invoke();
|
|
super.initState();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Consumer<TimetablePacket>(
|
|
builder: (context, data, child) {
|
|
|
|
return LoadingPacket(packet: data, child: TimetableView(
|
|
laneEventsList: _buildLaneEvents(context, data),
|
|
onEventTap: (TableEvent event) {},
|
|
timetableStyle: CustomTableStyle(context),
|
|
onEmptySlotTap: (int laneIndex, TableEventTime start, TableEventTime end) => {},
|
|
));
|
|
},
|
|
);
|
|
}
|
|
|
|
List<LaneEvents> _buildLaneEvents(context, TimetablePacket data) {
|
|
List<LaneEvents> laneEvents = List<LaneEvents>.empty(growable: true);
|
|
for (var day in data.timeTable.days) {
|
|
List<TableEvent> tableEvents = List<TableEvent>.empty(growable: true);
|
|
|
|
for (var element in day.entries) {
|
|
tableEvents.add(
|
|
TableEvent(
|
|
backgroundColor: Theme.of(context).primaryColor,
|
|
padding: const EdgeInsets.all(5),
|
|
title: element.subject,
|
|
location: "\n${element.room}",
|
|
eventId: tableEvents.length,
|
|
laneIndex: tableEvents.length,
|
|
startTime: TableEventTime(hour: element.start.hour, minute: element.start.minute),
|
|
endTime: TableEventTime(hour: element.end.hour, minute: element.end.minute)
|
|
)
|
|
);
|
|
}
|
|
|
|
laneEvents.add(
|
|
LaneEvents(
|
|
lane: Lane(laneIndex: laneEvents.length, name: day.name, textStyle: TextStyle(color: Theme.of(context).primaryColor, fontWeight: FontWeight.bold)),
|
|
events: tableEvents
|
|
)
|
|
);
|
|
}
|
|
|
|
|
|
return laneEvents;
|
|
}
|
|
|
|
void onEventTapCallBack(TableEvent event) {
|
|
print(
|
|
"Event Clicked!! LaneIndex ${event.laneIndex} Title: ${event.title} StartHour: ${event.startTime.hour} EndHour: ${event.endTime.hour}");
|
|
}
|
|
|
|
void onTimeSlotTappedCallBack(
|
|
int laneIndex, TableEventTime start, TableEventTime end) {
|
|
print(
|
|
"Empty Slot Clicked !! LaneIndex: $laneIndex StartHour: ${start.hour} EndHour: ${end.hour}");
|
|
}
|
|
}
|
|
|
|
class CustomTableStyle extends TimetableStyle {
|
|
dynamic context;
|
|
CustomTableStyle(context) {
|
|
this.context = context;
|
|
}
|
|
|
|
|
|
@override
|
|
int get startHour => 07;
|
|
@override
|
|
int get endHour => 17;
|
|
@override
|
|
double get laneWidth => 200;
|
|
@override
|
|
Color get cornerColor => Theme.of(context).primaryColor;
|
|
@override
|
|
Color get timeItemTextColor => Theme.of(context).primaryColor;
|
|
@override
|
|
// TODO: implement timeItemHeight
|
|
double get timeItemHeight => 60;
|
|
} |