forked from FroSteel/Planification
Version 2026.5.26 — Badge user inconnu cliquable + retry 60s (max 10 essais)
[code interpolé]
This commit is contained in:
@@ -4707,9 +4707,30 @@ function buildCard(tech, isoDate) {
|
||||
|
||||
const isPompier = tech.interventions.some(iv => iv.isPompier);
|
||||
const isAbsent = isTechAbsent(tech, isoDate);
|
||||
// v2026.5.30 : détecter aussi les absences récurrentes hardcodées (Pillonel vendredi)
|
||||
// pour leur appliquer le code couleur cyan (comme Congé) au lieu du rouge Pompier.
|
||||
const isRecurring = isPillonelAbsentFriday(tech, isoDate);
|
||||
|
||||
if (isPompier) card.classList.add("is-pompier");
|
||||
if (isAbsent) card.classList.add("is-absent");
|
||||
|
||||
// v2026.5.27 : déterminer la catégorie d'absence principale (maladie/conge/pompier)
|
||||
// pour appliquer le bon code couleur sur la carte entière.
|
||||
// v2026.5.30 : les absences récurrentes hardcodées prennent la catégorie
|
||||
// "recurring" (même cyan que Congé, texte distinct).
|
||||
let absenceCategory = null; // "maladie" | "conge" | "pompier" | "recurring" | null
|
||||
if (isRecurring) {
|
||||
absenceCategory = "recurring";
|
||||
} else if (isPompier) {
|
||||
absenceCategory = "pompier";
|
||||
} else if (isAbsent) {
|
||||
const catBlock = tech.interventions.find(iv => iv.type === "AL-Absence" && iv.absenceCategory);
|
||||
if (catBlock) absenceCategory = catBlock.absenceCategory;
|
||||
}
|
||||
if (absenceCategory) {
|
||||
card.classList.add("absence-cat-" + absenceCategory);
|
||||
}
|
||||
|
||||
const realInterventions = tech.interventions.filter(iv =>
|
||||
iv.type !== "AL-Absence" && !iv.isPompier
|
||||
);
|
||||
@@ -4725,23 +4746,57 @@ function buildCard(tech, isoDate) {
|
||||
// --- Header ---
|
||||
const header = document.createElement("div");
|
||||
header.className = "card-header";
|
||||
|
||||
// v2026.5.27 : pastille colorée supprimée (v2026.5.28) — la barre gauche de la
|
||||
// carte + le badge à droite suffisent pour indiquer la catégorie d'absence.
|
||||
|
||||
const nameEl = document.createElement("div");
|
||||
nameEl.className = "card-tech-name";
|
||||
nameEl.textContent = tech.name;
|
||||
header.appendChild(nameEl);
|
||||
|
||||
if (isPompier || isAbsent) {
|
||||
if (isPompier || isAbsent || isRecurring) {
|
||||
const badge = document.createElement("div");
|
||||
badge.className = "card-tech-badge";
|
||||
if (isPompier) {
|
||||
if (isRecurring) {
|
||||
// v2026.5.30 : absence récurrente (Pillonel vendredi) → badge "Absent" cyan
|
||||
badge.classList.add("badge-recurring");
|
||||
badge.textContent = "Absent";
|
||||
} else if (isPompier) {
|
||||
badge.classList.add("badge-pompier");
|
||||
badge.textContent = "Pompier";
|
||||
} else if (absenceCategory === "maladie") {
|
||||
badge.classList.add("badge-maladie");
|
||||
badge.textContent = "Maladie/Accident";
|
||||
} else if (absenceCategory === "conge") {
|
||||
// Déterminer singulier/pluriel selon la durée
|
||||
const ab = absenceBlocks.find(a => a.absenceCategory === "conge") || absenceBlocks[0];
|
||||
const multiDay = ab && ab.startDate && ab.endDate && ab.startDate !== ab.endDate;
|
||||
badge.classList.add("badge-conge");
|
||||
badge.textContent = multiDay ? "Congés" : "Congé";
|
||||
} else {
|
||||
badge.classList.add("badge-absent");
|
||||
badge.textContent = "Absent";
|
||||
}
|
||||
header.appendChild(badge);
|
||||
}
|
||||
|
||||
// v2026.5.32 : stats rapides pour la vue horizontale (cachées en classique)
|
||||
const rowStats = document.createElement("div");
|
||||
rowStats.className = "tech-row-stats";
|
||||
const totalInterv = realInterventions.length;
|
||||
const pill1 = document.createElement("span");
|
||||
pill1.className = "stat-pill";
|
||||
pill1.textContent = totalInterv + " interv.";
|
||||
rowStats.appendChild(pill1);
|
||||
if (morning > 0 || afternoon > 0) {
|
||||
const pill2 = document.createElement("span");
|
||||
pill2.className = "stat-pill";
|
||||
pill2.textContent = morning + "m · " + afternoon + "a";
|
||||
rowStats.appendChild(pill2);
|
||||
}
|
||||
header.appendChild(rowStats);
|
||||
|
||||
card.appendChild(header);
|
||||
|
||||
// --- Body ---
|
||||
@@ -4762,6 +4817,9 @@ function buildCard(tech, isoDate) {
|
||||
} else if (isAbsent && absenceBlocks.length) {
|
||||
const note = document.createElement("div");
|
||||
note.className = "card-status-note absent";
|
||||
if (absenceCategory) {
|
||||
note.classList.add("absent-" + absenceCategory);
|
||||
}
|
||||
const ab = absenceBlocks[0];
|
||||
if (ab.startDate && ab.endDate && ab.startDate !== ab.endDate) {
|
||||
note.textContent = `Absent du ${ab.startDate.substring(0, 5)} au ${ab.endDate.substring(0, 5)}`;
|
||||
|
||||
Reference in New Issue
Block a user