From fca55fe0e177da01902c525e4408b306b435bcb8 Mon Sep 17 00:00:00 2001 From: Gregor Vostrak Date: Mon, 1 Sep 2025 17:21:43 +0200 Subject: [PATCH] improve calendar fetching behaviour to always include prev/next period --- resources/js/Pages/Calendar.vue | 104 ++++++++------------------------ 1 file changed, 26 insertions(+), 78 deletions(-) diff --git a/resources/js/Pages/Calendar.vue b/resources/js/Pages/Calendar.vue index 9db28582..884b3924 100644 --- a/resources/js/Pages/Calendar.vue +++ b/resources/js/Pages/Calendar.vue @@ -29,16 +29,28 @@ const enableCalendarQuery = computed(() => { return !!getCurrentOrganizationId() && !!calendarStart.value && !!calendarEnd.value; }); -const formattedStartDate = computed(() => { - return calendarStart.value - ? getDayJsInstance()(calendarStart.value).utc().tz(getUserTimezone(), true).utc().format() - : null; -}); +// Calculate expanded date range to include previous and next periods with timezone transformations +const expandedDateRange = computed(() => { + if (!calendarStart.value || !calendarEnd.value) { + return { start: null, end: null }; + } -const formattedEndDate = computed(() => { - return calendarEnd.value - ? getDayJsInstance()(calendarEnd.value).utc().tz(getUserTimezone(), true).utc().format() - : null; + const dayjs = getDayJsInstance(); + const duration = dayjs(calendarEnd.value).diff(dayjs(calendarStart.value), 'milliseconds'); + + // Calculate previous period + const previousStart = dayjs(calendarStart.value).subtract(duration, 'milliseconds'); + // Calculate next period + const nextEnd = dayjs(calendarEnd.value).add(duration, 'milliseconds'); + + // Apply timezone transformations + const formattedStart = previousStart.utc().tz(getUserTimezone(), true).utc().format(); + const formattedEnd = nextEnd.utc().tz(getUserTimezone(), true).utc().format(); + + return { + start: formattedStart, + end: formattedEnd, + }; }); const { data: timeEntryResponse, isLoading: timeEntriesLoading } = useQuery({ @@ -46,20 +58,21 @@ const { data: timeEntryResponse, isLoading: timeEntriesLoading } = useQuery