11<script setup lang="ts">
2- import { differenceInCalendarDays } from ' date-fns'
32import { toZonedTime } from ' date-fns-tz'
43import OpeningHours from ' opening_hours'
54
65function getOpeningHoursStatus(
76 expression : string | null | undefined ,
87 timezone : string | null | undefined ,
9- latitude ? : number ,
10- longitude ? : number ,
118 reference : Date = new Date (),
12- ): { isOpen: boolean , message: string , nextChange: Date | null , isTomorrow : boolean } {
9+ ): { isOpen: boolean , message: string , nextChange: Date | null } {
1310 if (! expression || ! timezone )
14- return { isOpen: false , message: ' Hours unavailable' , nextChange: null , isTomorrow: false }
11+ return { isOpen: false , message: ' Hours unavailable' , nextChange: null }
1512
1613 try {
17- const zoned = toZonedTime (reference , timezone )
18-
19- const nominatiomData: any = { timezone }
20- if (Number .isFinite (latitude ))
21- nominatiomData .lat = latitude
22- if (Number .isFinite (longitude ))
23- nominatiomData .lon = longitude
24-
25- const schedule = new OpeningHours (expression .trim (), nominatiomData )
26-
27- const isOpen = schedule .getState (zoned )
28- const nextChange = schedule .getNextChange (zoned ) || null
29- const nextIsTomorrow = nextChange
30- ? differenceInCalendarDays (toZonedTime (nextChange , timezone ), toZonedTime (reference , timezone )) === 1
31- : false
14+ const localDate = toZonedTime (reference , timezone )
15+ const schedule = new OpeningHours (expression .trim ())
3216
17+ const isOpen = schedule .getState (localDate )
18+ const nextChange = schedule .getNextChange (localDate ) || null
3319 const message = isOpen ? ' Open now' : ' Closed'
3420
35- return { isOpen , message , nextChange , isTomorrow: nextIsTomorrow }
21+ return { isOpen , message , nextChange }
3622 }
3723 catch {
38- return { isOpen: false , message: ' Hours unavailable' , nextChange: null , isTomorrow: false }
24+ return { isOpen: false , message: ' Hours unavailable' , nextChange: null }
3925 }
4026}
4127
@@ -62,8 +48,6 @@ const { data: locations } = await useFetch('/api/search', {
6248 hoursStatus: getOpeningHoursStatus (
6349 location .openingHours ,
6450 location .timezone ,
65- location .latitude ,
66- location .longitude ,
6751 ),
6852 })) ?? []
6953 },
@@ -201,11 +185,7 @@ function removeCategory(categoryId: string) {
201185 font-medium mb-0 mt-6
202186 >
203187 <template v-if =" location .hoursStatus .nextChange " >
204- {{ location.hoursStatus.message }} · {{ location.hoursStatus.isOpen ? 'Closes' : 'Opens' }}
205- <template v-if =" location .hoursStatus .isTomorrow && ! location .hoursStatus .isOpen " >
206- tomorrow
207- </template >
208- at
188+ {{ location.hoursStatus.message }} · {{ location.hoursStatus.isOpen ? 'Closes' : 'Opens' }} at
209189 <NuxtTime
210190 :datetime =" location.hoursStatus.nextChange"
211191 hour =" numeric"
0 commit comments