refactor: display team members in calendar regardless of date while restricting empty team indicator to past days

This commit is contained in:
kdeterme 2026-09-09 13:59:45 +02:00
parent 89794fa294
commit 5bf606315e

View file

@ -527,31 +527,29 @@ document.addEventListener('DOMContentLoaded', function () {
let membersHTML = ''; let membersHTML = '';
const isFutureDay = day.date > todayStr; const isFutureDay = day.date > todayStr;
const isMemberHistoryAllowed = typeof canViewMemberHistory !== 'undefined' ? Boolean(canViewMemberHistory) : false; const isMemberHistoryAllowed = typeof canViewMemberHistory !== 'undefined' ? Boolean(canViewMemberHistory) : false;
if (!isFutureDay) { if (dayData.members && dayData.members.length > 0) {
if (dayData.members && dayData.members.length > 0) { const formattedMembers = dayData.members.map(m => {
const formattedMembers = dayData.members.map(m => { const name = typeof m === 'object' && m ? m.name : m;
const name = typeof m === 'object' && m ? m.name : m; const id = typeof m === 'object' && m ? m.id : null;
const id = typeof m === 'object' && m ? m.id : null; const isAbsent = typeof m === 'object' && m ? Boolean(m.is_absent) : false;
const isAbsent = typeof m === 'object' && m ? Boolean(m.is_absent) : false; const absenceReason = typeof m === 'object' && m ? (m.absence_reason || '') : '';
const absenceReason = typeof m === 'object' && m ? (m.absence_reason || '') : '';
let memberNameHtml = escapeHtml(name); let memberNameHtml = escapeHtml(name);
if (isMemberHistoryAllowed && id) { if (isMemberHistoryAllowed && id) {
memberNameHtml = `<a href="#" class="member-history-link text-decoration-none ${isAbsent ? 'text-danger' : 'text-muted fw-semibold'}" data-member-id="${id}">${escapeHtml(name)}</a>`; memberNameHtml = `<a href="#" class="member-history-link text-decoration-none ${isAbsent ? 'text-danger' : 'text-muted fw-semibold'}" data-member-id="${id}">${escapeHtml(name)}</a>`;
} }
if (isAbsent) { if (isAbsent) {
return `<span class="text-decoration-line-through text-danger opacity-75" title="${escapeHtml(absenceReason || gettext('Absent'))}">${memberNameHtml}</span> <span class="badge text-bg-danger p-0 px-1 font-monospace" style="font-size:0.6rem;">${escapeHtml(absenceReason || gettext('Absent'))}</span>`; return `<span class="text-decoration-line-through text-danger opacity-75" title="${escapeHtml(absenceReason || gettext('Absent'))}">${memberNameHtml}</span> <span class="badge text-bg-danger p-0 px-1 font-monospace" style="font-size:0.6rem;">${escapeHtml(absenceReason || gettext('Absent'))}</span>`;
} }
return memberNameHtml; return memberNameHtml;
}).join(', '); }).join(', ');
membersHTML = `<div class="team-members-list text-muted small fst-italic mb-2" style="border-left: 3px solid ${teamColor};" title="${gettext('Composition de l’équipe')}"> membersHTML = `<div class="team-members-list text-muted small fst-italic mb-2" style="border-left: 3px solid ${teamColor};" title="${gettext('Composition de l’équipe')}">
<i class="bi bi-people-fill me-1" style="color: ${teamColor};"></i>${formattedMembers} <i class="bi bi-people-fill me-1" style="color: ${teamColor};"></i>${formattedMembers}
</div>`; </div>`;
} else if (team.id !== null) { } else if (team.id !== null && !isFutureDay) {
membersHTML = `<div class="team-members-list text-muted small fst-italic mb-2 text-opacity-50" style="border-left: 3px solid #cbd5e1;"> membersHTML = `<div class="team-members-list text-muted small fst-italic mb-2 text-opacity-50" style="border-left: 3px solid #cbd5e1;">
<i class="bi bi-people me-1"></i>(${gettext('Aucun membre')}) <i class="bi bi-people me-1"></i>(${gettext('Aucun membre')})
</div>`; </div>`;
}
} }
let itvsHTML = '<div class="teams-daily-interventions-stack">'; let itvsHTML = '<div class="teams-daily-interventions-stack">';