From 7913c586804e46bf819900d9b52695bd46506573 Mon Sep 17 00:00:00 2001 From: Nicolas Drolet Date: Tue, 13 Jan 2026 16:28:59 -0500 Subject: [PATCH] feat(timesheet-approval): add display of overtime to overview and details dialog. Minor changes to timesheet appearance, holidays --- src/i18n/en-ca/index.ts | 2 + src/i18n/fr-ca/index.ts | 2 + .../components/employee-list-table-item.vue | 21 +++++--- .../details-dialog-chart-hours-worked.vue | 14 +++++- .../details-dialog-chart-shift-types.vue | 9 ++++ .../components/overview-list.vue | 48 +++++++++++++++++-- .../components/shift-list-date-widget.vue | 3 +- .../components/shift-list-weekly-overview.vue | 26 ++++++++-- .../components/timesheet-wrapper.vue | 3 +- .../timesheets/services/timesheet-service.ts | 4 +- src/stores/timesheet-store.ts | 6 ++- 11 files changed, 118 insertions(+), 20 deletions(-) diff --git a/src/i18n/en-ca/index.ts b/src/i18n/en-ca/index.ts index df05cdc..ade6d75 100644 --- a/src/i18n/en-ca/index.ts +++ b/src/i18n/en-ca/index.ts @@ -239,6 +239,7 @@ export default { close: "close", download: "download", open: "open", + day: "day", }, misc: { or: "or", @@ -278,6 +279,7 @@ export default { total_expenses: "total expenses: ", vacation_available: "vacation time available: ", sick_available: "sick time available: ", + banked_available: "available banked hours: ", current_shifts: "shifts worked", apply_preset: "auto-fill", apply_preset_day: "Apply schedule to day", diff --git a/src/i18n/fr-ca/index.ts b/src/i18n/fr-ca/index.ts index 1672ca9..d18f8fc 100644 --- a/src/i18n/fr-ca/index.ts +++ b/src/i18n/fr-ca/index.ts @@ -239,6 +239,7 @@ export default { close: "fermer", download: "télécharger", open: "ouvrir", + day: "jour", }, misc: { or: "ou", @@ -278,6 +279,7 @@ export default { total_expenses: "dépenses totales: ", vacation_available: "vacances disponibles: ", sick_available: "congés maladie disponible: ", + banked_available: "heures en banque disponibles: ", current_shifts: "quarts entrées", apply_preset: "auto-remplir", apply_preset_day: "Appliquer horaire pour la journée", diff --git a/src/modules/employee-list/components/employee-list-table-item.vue b/src/modules/employee-list/components/employee-list-table-item.vue index 1aef68e..b0d0606 100644 --- a/src/modules/employee-list/components/employee-list-table-item.vue +++ b/src/modules/employee-list/components/employee-list-table-item.vue @@ -4,7 +4,7 @@ > import { useQuasar } from 'quasar'; import type { EmployeeProfile } from 'src/modules/employee-list/models/employee-profile.models'; - import { ref } from 'vue'; + import { computed, ref } from 'vue'; const q = useQuasar(); const is_mouseover = ref(false); @@ -15,17 +15,23 @@ isManagement?: boolean; }>() - defineEmits<{ + const is_showing_highlight = computed(() => isManagement && is_mouseover.value) + + const emit = defineEmits<{ onProfileClick: [email: string] }>(); const getItemStyle = (): string => { const active_style = row.last_work_day === null ? '' : 'opacity: 0.6;'; const dark_style = q.dark.isActive ? 'border: 2px solid var(--q-accent);' : ''; - const hover_style = isManagement ? (is_mouseover.value ? `transform: scale(1.1); z-index: 2;` : 'transform: scale(1) skew(0)') : ''; - return `${active_style} ${dark_style} ${hover_style}`; + return `${active_style} ${dark_style}`; } + + const onProfileClick = (email: string) => { + is_mouseover.value = false; + emit('onProfileClick', email) + };