From 826b165f8aabfc77dbedec8a22b0b71fbeb91831 Mon Sep 17 00:00:00 2001 From: Gregor Vostrak Date: Wed, 14 Jan 2026 18:41:06 +0100 Subject: [PATCH] make time entry calendar use seconds as a duration basis, fixes #996 --- .../ui/src/FullCalendar/FullCalendarDayHeader.vue | 6 +++--- .../ui/src/FullCalendar/TimeEntryCalendar.vue | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/resources/js/packages/ui/src/FullCalendar/FullCalendarDayHeader.vue b/resources/js/packages/ui/src/FullCalendar/FullCalendarDayHeader.vue index dfd851c2..8335d839 100644 --- a/resources/js/packages/ui/src/FullCalendar/FullCalendarDayHeader.vue +++ b/resources/js/packages/ui/src/FullCalendar/FullCalendarDayHeader.vue @@ -6,10 +6,10 @@ import type { Dayjs } from 'dayjs'; const props = defineProps<{ date: Dayjs; - totalMinutes?: number; + totalSeconds?: number; }>(); -const totalSeconds = computed(() => (props.totalMinutes ?? 0) * 60); +const totalSecondsValue = computed(() => props.totalSeconds ?? 0); // Injected organization for formatting settings const organization = inject('organization') as ComputedRef | undefined; @@ -25,7 +25,7 @@ const dateFormat = computed(() => organization?.value?.date_format); {{ formatDate(date.toISOString(), dateFormat) }} - {{ formatHumanReadableDuration(totalSeconds, intervalFormat, numberFormat) }} + {{ formatHumanReadableDuration(totalSecondsValue, intervalFormat, numberFormat) }} diff --git a/resources/js/packages/ui/src/FullCalendar/TimeEntryCalendar.vue b/resources/js/packages/ui/src/FullCalendar/TimeEntryCalendar.vue index f6e124dc..77d8004f 100644 --- a/resources/js/packages/ui/src/FullCalendar/TimeEntryCalendar.vue +++ b/resources/js/packages/ui/src/FullCalendar/TimeEntryCalendar.vue @@ -179,20 +179,20 @@ const dailyTotals = computed(() => { const totals: Record = {}; props.timeEntries.forEach((entry) => { const date = getDayJsInstance()(entry.start).format('YYYY-MM-DD'); - let duration: number; + let durationSeconds: number; if (entry.end !== null) { // Completed entry - duration = getDayJsInstance()(entry.end).diff( + durationSeconds = getDayJsInstance()(entry.end).diff( getDayJsInstance()(entry.start), - 'minutes' + 'seconds' ); } else { // Running entry - use current time - duration = currentTime.value.diff(getDayJsInstance()(entry.start), 'minutes'); + durationSeconds = currentTime.value.diff(getDayJsInstance()(entry.start), 'seconds'); } - totals[date] = (totals[date] || 0) + duration; + totals[date] = (totals[date] || 0) + durationSeconds; }); return totals; }); @@ -444,7 +444,7 @@ onUnmounted(() => { :date=" getDayJsInstance()(arg.date.toISOString()).utc().tz(getUserTimezone(), true) " - :total-minutes=" + :total-seconds=" dailyTotals[ getDayJsInstance()(arg.date) .utc()