From eb5910dffe16cd7ba632b6816f656cf7bf32c408 Mon Sep 17 00:00:00 2001 From: tristan Date: Wed, 29 Apr 2026 17:27:46 +0200 Subject: [PATCH] =?UTF-8?q?feat=20:=20surlignage=20des=20jours=20f=C3=A9ri?= =?UTF-8?q?=C3=A9s=20sur=20la=20vue=20semaine=20des=20heures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Quand un employé n'a pas d'absence sur un jour férié, la cellule prend le fond bleu clair (#b3e5fc) et affiche le nom du férié au survol — cohérent avec la vue jour. Co-Authored-By: Claude Opus 4.7 (1M context) --- doc/functional-rules.md | 1 + .../driver-hours/DriverHoursWeekView.vue | 21 +++++++++-- frontend/components/hours/HoursWeekView.vue | 22 +++++++++-- frontend/data/documentation-content.ts | 2 +- frontend/services/dto/work-hour.ts | 1 + src/Dto/WorkHours/WeeklyDaySummary.php | 1 + src/State/WorkHourWeeklySummaryProvider.php | 37 +++++++++++++++++++ .../WorkHourWeeklySummaryProviderTest.php | 17 ++++++--- 8 files changed, 90 insertions(+), 12 deletions(-) diff --git a/doc/functional-rules.md b/doc/functional-rules.md index f142445..b155bdd 100644 --- a/doc/functional-rules.md +++ b/doc/functional-rules.md @@ -173,6 +173,7 @@ Documents complementaires: - Exclusions configurables: variable d'env `EXCLUDED_PUBLIC_HOLIDAYS` (liste de libellés séparés par virgules). Par défaut `"Lundi de Pentecôte"` — journée de solidarité généralement travaillée. Le filtre s'applique à tous les consommateurs (frontend + calculs backend) en amont du retour du service. - Onglet congés: jours fériés affichés sur le calendrier avec fond `rgb(179, 229, 252)` et nom au survol - Écran Heures et Heures Conducteurs (vue jour): le nom du férié est affiché dans la colonne Absence sous forme de pill (fond `#b3e5fc`, icône `mdi:calendar-star`), distinct du pill absence +- Écran Heures et Heures Conducteurs (vue semaine): la cellule du jour férié prend le fond `#b3e5fc` quand l'employé n'a pas d'absence ce jour-là, avec le nom du férié au survol (`title`). Si une absence est posée, la couleur de l'absence prime ; le `title` cumule les deux libellés (`Absence — Férié : Nom`). - Règle courante: - absences autorisées sur jour férié (création/édition depuis l'écran Heures et le Calendrier). Quand une absence est posée, le crédit virtuel férié est désactivé — c'est le `countAsWorkedHours` du type d'absence qui pilote - saisie d'heures ou de jours de présence autorisée — les heures saisies comptent normalement dans le total hebdo et le calcul RTT diff --git a/frontend/components/driver-hours/DriverHoursWeekView.vue b/frontend/components/driver-hours/DriverHoursWeekView.vue index 8fc8c16..a750128 100644 --- a/frontend/components/driver-hours/DriverHoursWeekView.vue +++ b/frontend/components/driver-hours/DriverHoursWeekView.vue @@ -44,7 +44,7 @@ class="text-left leading-4 rounded-md px-2 py-1" :class="daily.hasAbsence ? 'text-white' : ''" :style="getDailyCellStyle(daily)" - :title="daily.absenceLabel ?? ''" + :title="cellTitle(daily)" >
J {{ formatMinutes(daily.dayMinutes) }}
N {{ formatMinutes(daily.nightMinutes) }}
@@ -93,12 +93,27 @@ import type { WeeklyWorkHourSummary } from '~/services/dto/work-hour' import { contractNatureLabel } from '~/utils/contract' +const HOLIDAY_BG_COLOR = '#b3e5fc' + const getDailyCellStyle = (daily: { hasAbsence?: boolean absenceColor?: string | null + holidayLabel?: string | null }) => { - if (!daily.hasAbsence) return undefined - return { backgroundColor: daily.absenceColor || '#dc2626' } + if (daily.hasAbsence) return { backgroundColor: daily.absenceColor || '#dc2626' } + if (daily.holidayLabel) return { backgroundColor: HOLIDAY_BG_COLOR } + return undefined +} + +const cellTitle = (daily: { + hasAbsence?: boolean + absenceLabel?: string | null + holidayLabel?: string | null +}) => { + const parts: string[] = [] + if (daily.absenceLabel) parts.push(daily.absenceLabel) + if (daily.holidayLabel) parts.push(`Férié : ${daily.holidayLabel}`) + return parts.join(' — ') } defineProps<{ diff --git a/frontend/components/hours/HoursWeekView.vue b/frontend/components/hours/HoursWeekView.vue index 7e51ab5..d9033dc 100644 --- a/frontend/components/hours/HoursWeekView.vue +++ b/frontend/components/hours/HoursWeekView.vue @@ -27,6 +27,7 @@ class="flex items-center justify-between rounded-md px-2 py-1 text-xs" :class="daily.hasAbsence ? 'text-white' : 'text-primary-500'" :style="getDailyCellStyle(daily)" + :title="cellTitle(daily)" > {{ weekDayHeaders[i]?.label ?? '' }} {{ daily.present ?? 0 }} @@ -104,7 +105,7 @@ class="text-left leading-4 rounded-md px-2 py-1" :class="daily.hasAbsence ? 'text-white' : ''" :style="getDailyCellStyle(daily)" - :title="daily.absenceLabel ?? ''" + :title="cellTitle(daily)" >