Skip to content

Commit c25d1bf

Browse files
committed
Change openingHours format to next 7 weekdays
1 parent ce12ae3 commit c25d1bf

File tree

3 files changed

+62
-32
lines changed

3 files changed

+62
-32
lines changed

lib/main.dart

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,8 @@ class Area {
194194

195195
class StudySpace {
196196
final String title;
197-
List<OpeningHours> openingHours;
197+
List<OpeningHours>
198+
openingHours; // From Monday (list index 0) to Sunday (list index 6)
198199
final String pictureUrl;
199200
final BuildingPosition buildingPosition;
200201
final String address;
@@ -319,14 +320,13 @@ class _MyHomePageState extends State<MyHomePage> {
319320
studySpaces
320321
.where((space) => space.connectedToMLibraryApi)
321322
.forEach((space) {
322-
space.openingHours.clear();
323323
for (var day in nextSevenDays) {
324324
var newOpeningHours = getOpeningHours(space.title, day);
325325
if (kDebugMode) {
326326
print(
327327
"opening hours for ${space.title} on ${day.year}-${day.month}-${day.day} is $newOpeningHours.");
328328
}
329-
space.openingHours.add(newOpeningHours!);
329+
space.openingHours[day.weekday - 1] = newOpeningHours!;
330330
}
331331
});
332332
});
@@ -348,31 +348,32 @@ class _MyHomePageState extends State<MyHomePage> {
348348
}))
349349
.toList()
350350
: studySpaces;
351+
final openingHoursIndex = getOpeningHoursIndex();
351352
var filteredStudySpaces = appState
352353
.when(
353354
filterResults: () => studySpaces
354355
.where((space) => isOpenDuring(
355356
OpeningHours.range(filterStartTime, filterEndTime),
356-
space.openingHours[0]))
357+
space.openingHours[openingHoursIndex]))
357358
.toList(),
358359
keywordSearch: () => queryFilteredStudySpaces,
359360
filterSearch: () => queryFilteredStudySpaces,
360361
home: () => queryFilteredStudySpaces,
361362
)
362-
.sorted((space1, space2) => space1.openingHours[0].when(
363-
allDay: () => space2.openingHours[0].when(
363+
.sorted((space1, space2) => space1.openingHours[openingHoursIndex].when(
364+
allDay: () => space2.openingHours[openingHoursIndex].when(
364365
allDay: () => 0,
365366
range: (_start, _end) => -1,
366367
closed: () => -1),
367368
range: (TimeOfDay space1Start, TimeOfDay space1End) =>
368-
space2.openingHours[0].when(
369+
space2.openingHours[openingHoursIndex].when(
369370
allDay: () => 1,
370371
range: (space2Start, space2End) =>
371372
timeOfDayLessThanEqual(space2End, space1End)
372373
? -1
373374
: (space2End == space1End ? 0 : 1),
374375
closed: () => -1),
375-
closed: () => space2.openingHours[0].when(
376+
closed: () => space2.openingHours[openingHoursIndex].when(
376377
allDay: () => 1, range: (_start, _end) => 1, closed: () => 0),
377378
));
378379
return Scaffold(
@@ -609,6 +610,7 @@ class _MyHomePageState extends State<MyHomePage> {
609610
}
610611

611612
Widget showListItem(StudySpace studySpace) {
613+
var openingHoursIndex = getOpeningHoursIndex();
612614
return GestureDetector(
613615
onTap: () {
614616
Navigator.push(
@@ -631,7 +633,9 @@ class _MyHomePageState extends State<MyHomePage> {
631633
),
632634
SizedBox(
633635
height: Theme.of(context).textTheme.bodySmall!.fontSize! / 2),
634-
Text(openingHoursToString(studySpace.openingHours[0]),
636+
Text(
637+
openingHoursToString(
638+
studySpace.openingHours[openingHoursIndex]),
635639
style: Theme.of(context).textTheme.bodyMedium),
636640
],
637641
mainAxisAlignment: MainAxisAlignment.start,
@@ -807,6 +811,10 @@ class _MyHomePageState extends State<MyHomePage> {
807811
}
808812
}
809813

814+
/// Weekday values start on Monday as 1 all the way to Sunday as 7
815+
/// We need to subtract 1 from all weekday values to get 0-based list index
816+
int getOpeningHoursIndex() => DateTime.now().weekday - 1;
817+
810818
/// Determine the current position of the device.
811819
///
812820
/// When the location services are not enabled or permissions

lib/studySpaceList.dart

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import 'package:mstudy/main.dart';
44
List<StudySpace> studySpaces = [
55
StudySpace(
66
title: "Art, Architecture, and Engineering Library",
7-
openingHours: [const OpeningHours.allDay()],
7+
openingHours: List.filled(7, const OpeningHours.allDay()),
88
pictureUrl: "assets/duderstadt.webp",
99
address: "2281 Bonisteel Blvd",
1010
buildingPosition:
@@ -16,8 +16,16 @@ List<StudySpace> studySpaces = [
1616
StudySpace(
1717
title: "Hatcher Library",
1818
openingHours: [
19+
...List.filled(
20+
4,
21+
const OpeningHours.range(
22+
TimeOfDay(hour: 8, minute: 0), TimeOfDay(hour: 19, minute: 0))),
1923
const OpeningHours.range(
20-
TimeOfDay(hour: 8, minute: 0), TimeOfDay(hour: 19, minute: 0))
24+
TimeOfDay(hour: 8, minute: 0), TimeOfDay(hour: 17, minute: 0)),
25+
const OpeningHours.range(
26+
TimeOfDay(hour: 10, minute: 0), TimeOfDay(hour: 18, minute: 0)),
27+
const OpeningHours.range(
28+
TimeOfDay(hour: 13, minute: 0), TimeOfDay(hour: 19, minute: 0)),
2129
],
2230
pictureUrl: "assets/hatcher.webp",
2331
address: "913 S. University Avenue",
@@ -37,7 +45,15 @@ List<StudySpace> studySpaces = [
3745
),
3846
StudySpace(
3947
title: "Shapiro Library",
40-
openingHours: [const OpeningHours.allDay()],
48+
openingHours: [
49+
...List.filled(4, const OpeningHours.allDay()),
50+
const OpeningHours.range(
51+
TimeOfDay(hour: 0, minute: 0), TimeOfDay(hour: 18, minute: 0)),
52+
const OpeningHours.range(
53+
TimeOfDay(hour: 10, minute: 0), TimeOfDay(hour: 18, minute: 0)),
54+
const OpeningHours.range(
55+
TimeOfDay(hour: 10, minute: 0), TimeOfDay(hour: 0, minute: 0)),
56+
],
4157
pictureUrl: "assets/shapiro.webp",
4258
address: "919 S. University Ave",
4359
buildingPosition:
@@ -49,8 +65,12 @@ List<StudySpace> studySpaces = [
4965
StudySpace(
5066
title: "Fine Arts Library",
5167
openingHours: [
52-
const OpeningHours.range(
53-
TimeOfDay(hour: 9, minute: 0), TimeOfDay(hour: 17, minute: 0))
68+
...List.filled(
69+
5,
70+
const OpeningHours.range(
71+
TimeOfDay(hour: 10, minute: 0), TimeOfDay(hour: 13, minute: 0))),
72+
const OpeningHours.closed(),
73+
const OpeningHours.closed(),
5474
],
5575
pictureUrl: "assets/fine_arts.webp",
5676
address: "855 S. University Ave",
@@ -63,8 +83,12 @@ List<StudySpace> studySpaces = [
6383
StudySpace(
6484
title: "Taubman Health Sciences Library",
6585
openingHours: [
66-
const OpeningHours.range(
67-
TimeOfDay(hour: 9, minute: 0), TimeOfDay(hour: 17, minute: 0))
86+
...List.filled(
87+
5,
88+
const OpeningHours.range(
89+
TimeOfDay(hour: 9, minute: 0), TimeOfDay(hour: 17, minute: 0))),
90+
const OpeningHours.closed(),
91+
const OpeningHours.closed(),
6892
],
6993
pictureUrl: "assets/taubman.webp",
7094
address: "1135 Catherine St",
@@ -77,8 +101,12 @@ List<StudySpace> studySpaces = [
77101
StudySpace(
78102
title: "Music Library",
79103
openingHours: [
80-
const OpeningHours.range(
81-
TimeOfDay(hour: 9, minute: 0), TimeOfDay(hour: 17, minute: 0))
104+
...List.filled(
105+
5,
106+
const OpeningHours.range(
107+
TimeOfDay(hour: 9, minute: 0), TimeOfDay(hour: 17, minute: 0))),
108+
const OpeningHours.closed(),
109+
const OpeningHours.closed(),
82110
],
83111
pictureUrl: "assets/music.webp",
84112
address: "1100 Baits Dr",
@@ -91,20 +119,14 @@ List<StudySpace> studySpaces = [
91119
StudySpace(
92120
title: "East Quad",
93121
openingHours: [
122+
...List.filled(
123+
5,
124+
const OpeningHours.range(
125+
TimeOfDay(hour: 9, minute: 0), TimeOfDay(hour: 21, minute: 30))),
94126
const OpeningHours.range(
95-
TimeOfDay(hour: 8, minute: 0), TimeOfDay(hour: 20, minute: 0)),
96-
const OpeningHours.range(
97-
TimeOfDay(hour: 8, minute: 0), TimeOfDay(hour: 20, minute: 0)),
98-
const OpeningHours.range(
99-
TimeOfDay(hour: 8, minute: 0), TimeOfDay(hour: 20, minute: 0)),
100-
const OpeningHours.range(
101-
TimeOfDay(hour: 8, minute: 0), TimeOfDay(hour: 20, minute: 0)),
102-
const OpeningHours.range(
103-
TimeOfDay(hour: 8, minute: 0), TimeOfDay(hour: 20, minute: 0)),
104-
const OpeningHours.range(
105-
TimeOfDay(hour: 8, minute: 0), TimeOfDay(hour: 20, minute: 0)),
127+
TimeOfDay(hour: 9, minute: 0), TimeOfDay(hour: 20, minute: 0)),
106128
const OpeningHours.range(
107-
TimeOfDay(hour: 8, minute: 0), TimeOfDay(hour: 20, minute: 0)),
129+
TimeOfDay(hour: 9, minute: 0), TimeOfDay(hour: 20, minute: 0)),
108130
],
109131
pictureUrl: "assets/east_quad.webp",
110132
address: "701 E. University",

lib/studySpacePage.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class OpeningHourCard extends StatelessWidget {
1515
Widget build(BuildContext context) {
1616
List<Widget> hoursList = [];
1717
DateTime today = DateTime.now();
18-
hoursList.addAll(openingHours.mapIndexed((index, hours) {
18+
hoursList.addAll(openingHours.mapIndexed((index, _) {
1919
var day = today.add(Duration(days: index));
2020
return Container(
2121
decoration: BoxDecoration(
@@ -40,7 +40,7 @@ class OpeningHourCard extends StatelessWidget {
4040
style: Theme.of(context).textTheme.titleMedium)),
4141
Expanded(
4242
flex: 55,
43-
child: Text(openingHoursToString(hours),
43+
child: Text(openingHoursToString(openingHours[day.weekday - 1]),
4444
textAlign: TextAlign.end,
4545
style: Theme.of(context).textTheme.titleMedium)),
4646
]));

0 commit comments

Comments
 (0)