feat(heures) : affichage des jours travaillés (CUSTOM) sur la vue Jour
Auto Tag Develop / tag (push) Successful in 12s
Auto Tag Develop / tag (push) Successful in 12s
Le libellé sous le nom de l'employé affiche en suffixe les jours du planning workDaysHours au format court (ex. BUREAU — CDI — LU,JE) pour les contrats CUSTOM. Résolu à la date filtrée et exposé via WorkHourDayContext.workDaysHours ; formaté front par formatWorkedDaysShort. Limité aux CUSTOM (35h/39h/forfait/intérim sans planning → rien affiché) et à l'écran Heures (pas Heures Conducteurs). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -37,6 +37,26 @@ export const requiresWorkDaysHours = (
|
||||
|
||||
const DAY_SHORT_LABELS: Record<number, string> = { 1: 'Lun', 2: 'Mar', 3: 'Mer', 4: 'Jeu', 5: 'Ven' }
|
||||
|
||||
const DAY_TINY_LABELS: Record<number, string> = { 1: 'LU', 2: 'MA', 3: 'ME', 4: 'JE', 5: 'VE' }
|
||||
|
||||
/**
|
||||
* Very compact worked-days summary for the day view header, e.g. "LU,VE".
|
||||
* Lists the iso days actually worked (minutes > 0), uppercase 2-letter, comma-separated.
|
||||
* Returns null when the schedule is empty/unset (non-CUSTOM contracts have no schedule).
|
||||
*/
|
||||
export const formatWorkedDaysShort = (
|
||||
workDaysHours: Record<number, number> | null | undefined
|
||||
): string | null => {
|
||||
if (!workDaysHours) return null
|
||||
const days = Object.entries(workDaysHours)
|
||||
.map(([iso, minutes]) => [Number(iso), Number(minutes)] as const)
|
||||
.filter(([iso, minutes]) => iso >= 1 && iso <= 5 && minutes > 0)
|
||||
.sort(([a], [b]) => a - b)
|
||||
.map(([iso]) => DAY_TINY_LABELS[iso])
|
||||
if (days.length === 0) return null
|
||||
return days.join(',')
|
||||
}
|
||||
|
||||
/**
|
||||
* Compact human-readable summary of a per-day schedule, e.g. "Lun 2h, Jeu 2h".
|
||||
* Returns null when the schedule is empty/unset.
|
||||
|
||||
Reference in New Issue
Block a user