@@ -192,6 +192,7 @@ class StudySpace {
192
192
final BuildingPosition buildingPosition;
193
193
final String address;
194
194
final PhoneNumber phoneNumber;
195
+ final bool connectedToMLibraryApi;
195
196
196
197
StudySpace ({
197
198
required this .title,
@@ -200,6 +201,7 @@ class StudySpace {
200
201
required this .buildingPosition,
201
202
required this .address,
202
203
required this .phoneNumber,
204
+ required this .connectedToMLibraryApi,
203
205
});
204
206
}
205
207
@@ -230,6 +232,7 @@ class _MyHomePageState extends State<MyHomePage> {
230
232
buildingPosition:
231
233
BuildingPosition (latitude: 42.291165 , longitude: - 83.715716 ),
232
234
phoneNumber: PhoneNumber ("734" , "647" , "5747" ),
235
+ connectedToMLibraryApi: true ,
233
236
),
234
237
StudySpace (
235
238
title: "Hatcher Library" ,
@@ -243,6 +246,7 @@ class _MyHomePageState extends State<MyHomePage> {
243
246
latitude: 42.276334 ,
244
247
longitude: - 83.737981 ), // Uses Hatcher Library South
245
248
phoneNumber: PhoneNumber ("734" , "764" , "0401" ),
249
+ connectedToMLibraryApi: true ,
246
250
),
247
251
StudySpace (
248
252
title: "Shapiro Library" ,
@@ -252,6 +256,7 @@ class _MyHomePageState extends State<MyHomePage> {
252
256
buildingPosition:
253
257
BuildingPosition (latitude: 42.275615 , longitude: - 83.737183 ),
254
258
phoneNumber: PhoneNumber ("734" , "764" , "7490" ),
259
+ connectedToMLibraryApi: true ,
255
260
),
256
261
StudySpace (
257
262
title: "Fine Arts Library" ,
@@ -264,19 +269,21 @@ class _MyHomePageState extends State<MyHomePage> {
264
269
buildingPosition:
265
270
BuildingPosition (latitude: 42.274944 , longitude: - 83.738995 ),
266
271
phoneNumber: PhoneNumber ("734" , "764" , "5405" ),
272
+ connectedToMLibraryApi: true ,
267
273
),
268
274
StudySpace (
269
- title: "Asia Library" ,
270
- openingHours: [
271
- const OpeningHours .range (
272
- TimeOfDay (hour: 8 , minute: 0 ), TimeOfDay (hour: 19 , minute: 0 ))
273
- ],
274
- pictureUrl: "assets/asia.webp" ,
275
- address:
276
- "913 S. University Ave" , // located on 4th floor of Hatcher North
277
- buildingPosition:
278
- BuildingPosition (latitude: 42.276334 , longitude: - 83.737981 ),
279
- phoneNumber: PhoneNumber ("734" , "764" , "0406" )),
275
+ title: "Asia Library" ,
276
+ openingHours: [
277
+ const OpeningHours .range (
278
+ TimeOfDay (hour: 8 , minute: 0 ), TimeOfDay (hour: 19 , minute: 0 ))
279
+ ],
280
+ pictureUrl: "assets/asia.webp" ,
281
+ address: "913 S. University Ave" , // located on 4th floor of Hatcher North
282
+ buildingPosition:
283
+ BuildingPosition (latitude: 42.276334 , longitude: - 83.737981 ),
284
+ phoneNumber: PhoneNumber ("734" , "764" , "0406" ),
285
+ connectedToMLibraryApi: true ,
286
+ ),
280
287
StudySpace (
281
288
title: "Taubman Health Sciences Library" ,
282
289
openingHours: [
@@ -288,18 +295,21 @@ class _MyHomePageState extends State<MyHomePage> {
288
295
buildingPosition:
289
296
BuildingPosition (latitude: 42.283548 , longitude: - 83.734451 ),
290
297
phoneNumber: PhoneNumber ("734" , "764" , "1210" ),
298
+ connectedToMLibraryApi: true ,
291
299
),
292
300
StudySpace (
293
- title: "Music Library" ,
294
- openingHours: [
295
- const OpeningHours .range (
296
- TimeOfDay (hour: 9 , minute: 0 ), TimeOfDay (hour: 17 , minute: 0 ))
297
- ],
298
- pictureUrl: "assets/music.webp" ,
299
- address: "1100 Baits Dr" ,
300
- buildingPosition:
301
- BuildingPosition (latitude: 42.290373 , longitude: - 83.721006 ),
302
- phoneNumber: PhoneNumber ("734" , "764" , "2512" ))
301
+ title: "Music Library" ,
302
+ openingHours: [
303
+ const OpeningHours .range (
304
+ TimeOfDay (hour: 9 , minute: 0 ), TimeOfDay (hour: 17 , minute: 0 ))
305
+ ],
306
+ pictureUrl: "assets/music.webp" ,
307
+ address: "1100 Baits Dr" ,
308
+ buildingPosition:
309
+ BuildingPosition (latitude: 42.290373 , longitude: - 83.721006 ),
310
+ phoneNumber: PhoneNumber ("734" , "764" , "2512" ),
311
+ connectedToMLibraryApi: true ,
312
+ )
303
313
];
304
314
305
315
@override
@@ -308,6 +318,15 @@ class _MyHomePageState extends State<MyHomePage> {
308
318
if (kDebugMode) {
309
319
getCurrentPosition ().then ((position) {
310
320
print ("Current position is $position " );
321
+ for (var space in studySpaces) {
322
+ var distance = Geolocator .distanceBetween (
323
+ position.latitude,
324
+ position.longitude,
325
+ space.buildingPosition.latitude,
326
+ space.buildingPosition.longitude);
327
+ print (
328
+ "Distance from current position to ${space .title } is ${distance }m." );
329
+ }
311
330
});
312
331
}
313
332
SharedPreferences .getInstance ().then ((prefs) {
@@ -367,6 +386,7 @@ class _MyHomePageState extends State<MyHomePage> {
367
386
}
368
387
369
388
/// Update the opening hours for the next 7 days of all study spaces
389
+ /// connected to the M library API
370
390
void updateOpeningHoursForNextSevenDays () {
371
391
List <DateTime > nextSevenDays = [];
372
392
var nextDay = DateTime .now ();
@@ -375,7 +395,9 @@ class _MyHomePageState extends State<MyHomePage> {
375
395
nextDay = nextDay.add (const Duration (days: 1 ));
376
396
}
377
397
setState (() {
378
- studySpaces = studySpaces.map ((space) {
398
+ studySpaces = studySpaces
399
+ .where ((space) => space.connectedToMLibraryApi)
400
+ .map ((space) {
379
401
space.openingHours.clear ();
380
402
for (var day in nextSevenDays) {
381
403
var newOpeningHours = getOpeningHours (space.title, day);
@@ -755,13 +777,13 @@ class _MyHomePageState extends State<MyHomePage> {
755
777
...fallAndWinter.values
756
778
];
757
779
ProcessedOpeningHours result = {};
758
- for ( var space in studySpaces ) {
780
+ studySpaces. where (( space) => space.connectedToMLibraryApi). forEach ((space ) {
759
781
for (var hours in prioritizedHours) {
760
782
if (hours[space.title] != null ) {
761
783
result.putIfAbsent (space.title, () => []).addAll (hours[space.title]! );
762
784
}
763
785
}
764
- }
786
+ });
765
787
return result;
766
788
}
767
789
@@ -789,7 +811,10 @@ class _MyHomePageState extends State<MyHomePage> {
789
811
790
812
for (var resource in response.collection) {
791
813
String title = resource.attributes["title" ]! as String ;
792
- if (studySpaces.map ((space) => space.title).contains (title)) {
814
+ if (studySpaces
815
+ .where ((space) => space.connectedToMLibraryApi)
816
+ .map ((space) => space.title)
817
+ .contains (title)) {
793
818
resource.relationships["field_hours_open" ]? .forEach ((fieldHoursOpen) {
794
819
var emptyOpeningHoursWithId = OpeningDateAndHours (
795
820
id: fieldHoursOpen.id,
0 commit comments