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)" >