67 lines
4.1 KiB
Dart
67 lines
4.1 KiB
Dart
import 'package:reverse_nn/enums/direction.dart';
|
|
import 'package:sprintf/sprintf.dart';
|
|
|
|
enum Schedule {
|
|
daily(elements: [
|
|
ScheduleElement(startHours: 4, startMinutes: 0, duration: 415, direction: Direction.inCity),
|
|
ScheduleElement(startHours: 10, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 11, startMinutes: 0, duration: 115, direction: Direction.outCity),
|
|
ScheduleElement(startHours: 12, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 13, startMinutes: 0, duration: 145, direction: Direction.inCity),
|
|
ScheduleElement(startHours: 15, startMinutes: 25, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 15, startMinutes: 30, duration: 205, direction: Direction.outCity),
|
|
ScheduleElement(startHours: 18, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 19, startMinutes: 0, duration: 55, direction: Direction.inCity),
|
|
ScheduleElement(startHours: 19, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 20, startMinutes: 0, duration: 475, direction: Direction.outCity),
|
|
ScheduleElement(startHours: 3, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
]),
|
|
friday(elements: [
|
|
ScheduleElement(startHours: 4, startMinutes: 0, duration: 415, direction: Direction.inCity),
|
|
ScheduleElement(startHours: 10, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 11, startMinutes: 0, duration: 115, direction: Direction.outCity),
|
|
ScheduleElement(startHours: 12, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 13, startMinutes: 0, duration: 55, direction: Direction.inCity),
|
|
ScheduleElement(startHours: 13, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 14, startMinutes: 0, duration: 840, direction: Direction.outCity),
|
|
]),
|
|
saturday(elements: [
|
|
ScheduleElement(startHours: 4, startMinutes: 0, duration: 655, direction: Direction.outCity),
|
|
ScheduleElement(startHours: 14, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 15, startMinutes: 0, duration: 175, direction: Direction.inCity),
|
|
ScheduleElement(startHours: 17, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 18, startMinutes: 0, duration: 115, direction: Direction.outCity),
|
|
ScheduleElement(startHours: 19, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 20, startMinutes: 0, duration: 115, direction: Direction.inCity),
|
|
ScheduleElement(startHours: 21, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 22, startMinutes: 0, duration: 355, direction: Direction.outCity),
|
|
ScheduleElement(startHours: 3, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
]),
|
|
sunday(elements: [
|
|
ScheduleElement(startHours: 4, startMinutes: 0, duration: 235, direction: Direction.inCity),
|
|
ScheduleElement(startHours: 7, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 8, startMinutes: 0, duration: 175, direction: Direction.outCity),
|
|
ScheduleElement(startHours: 10, startMinutes: 55, duration: 5, direction: Direction.change),
|
|
ScheduleElement(startHours: 11, startMinutes: 0, duration: 1020, direction: Direction.inCity),
|
|
]);
|
|
|
|
const Schedule({required this.elements});
|
|
|
|
final List<ScheduleElement> elements;
|
|
}
|
|
|
|
class ScheduleElement {
|
|
final int startHours;
|
|
final int startMinutes;
|
|
|
|
final int duration;
|
|
final Direction direction;
|
|
|
|
const ScheduleElement({required this.startHours, required this.startMinutes, required this.duration, required this.direction});
|
|
|
|
String getStartedTimeString() { return sprintf('%02i:%02i', [startHours, startMinutes]); }
|
|
String getEndedTimeString() {
|
|
DateTime e = DateTime(2024, 8, 1, startHours, startMinutes).add(Duration(minutes: duration)).subtract(const Duration(microseconds: 1));
|
|
return sprintf('%02i:%02i', [e.hour, e.minute]);
|
|
}
|
|
} |