group method
Groups all slots by their weekday and time unit.
Implementation
Map<Weekday, Map<(SlotTimeUnit, SlotTimeUnit), List<Slot>>> group() {
if (!state.hasData) {
return {};
}
final grouped = <Weekday, Map<(SlotTimeUnit, SlotTimeUnit), List<Slot>>>{};
for (final slot in state.requireData) {
grouped[slot.weekday] ??= {};
final timeGroup = (slot.startUnit, slot.endUnit);
grouped[slot.weekday]![timeGroup] ??= [];
grouped[slot.weekday]![timeGroup]!.add(slot);
grouped[slot.weekday]![timeGroup]!.sort(
(a, b) {
if (a.startUnit == b.startUnit) {
return a.endUnit.compareTo(b.endUnit);
}
return a.startUnit.compareTo(b.startUnit);
},
);
}
return grouped;
}