// assets/js/family-calendar.js const weeks = [ { month: "September", code: "W36", dates: "01/09 – 07/09", caroleOffDays: 0, isSchoolHoliday: false, isBankHoliday: false, alex: { cp: 0, rtt: 0, ja: 0 }, laia: { cp: 0, rtt: 0, ja: 0 }, }, { month: "September", code: "W38", dates: "15/09 – 21/09", caroleOffDays: 2, isSchoolHoliday: false, isBankHoliday: false, alex: { cp: 0, rtt: 0, ja: 0 }, laia: { cp: 0, rtt: 0, ja: 0 }, }, { month: "October", code: "W40", dates: "29/09 – 05/10", caroleOffDays: 0, isSchoolHoliday: false, isBankHoliday: false, alex: { cp: 0, rtt: 0, ja: 0 }, laia: { cp: 0, rtt: 0, ja: 0 }, }, { month: "August", code: "W32", dates: "03/08 – 09/08", caroleOffDays: 5, isSchoolHoliday: true, isBankHoliday: false, alex: { cp: 0, rtt: 0, ja: 0 }, laia: { cp: 0, rtt: 0, ja: 0 }, }, // TODO: compléter le reste des semaines W36 → W35 ]; function renderTable() { const planningBody = document.getElementById("planningBody"); if (!planningBody) return; planningBody.innerHTML = ""; const showOnlyCaroleOff = document.getElementById("showOnlyCaroleOff")?.checked; const showOnlySchoolHoliday = document.getElementById( "showOnlySchoolHoliday" )?.checked; weeks.forEach((week, index) => { if (showOnlyCaroleOff && week.caroleOffDays === 0) return; if (showOnlySchoolHoliday && !week.isSchoolHoliday) return; const tr = document.createElement("tr"); if (week.caroleOffDays > 0) tr.classList.add("fc-row--carole-off"); if (week.isSchoolHoliday) tr.classList.add("fc-row--school-holiday"); if (week.isBankHoliday) tr.classList.add("fc-row--bank-holiday"); tr.innerHTML = ` ${week.month} ${week.code} ${week.dates} ${week.caroleOffDays || ""} ${week.isSchoolHoliday ? "Oui" : ""} ${week.isBankHoliday ? "Oui" : ""} `; planningBody.appendChild(tr); }); attachInputListeners(); updateSummary(); } function attachInputListeners() { const planningBody = document.getElementById("planningBody"); if (!planningBody) return; planningBody.querySelectorAll("input[type='number']").forEach((input) => { input.addEventListener("change", (e) => { const w = parseInt(e.target.dataset.week, 10); const person = e.target.dataset.person; const type = e.target.dataset.type; const value = parseFloat(e.target.value || "0"); weeks[w][person][type] = value; updateSummary(); }); }); } function updateSummary() { const summaryDiv = document.getElementById("summaryText"); if (!summaryDiv) return; const alexCpInit = parseFloat( document.getElementById("alexCpInit")?.value || "0" ); const alexRttInit = parseFloat( document.getElementById("alexRttInit")?.value || "0" ); const alexJaInit = parseFloat( document.getElementById("alexJaInit")?.value || "0" ); const laiaCpInit = parseFloat( document.getElementById("laiaCpInit")?.value || "0" ); const laiaRttInit = parseFloat( document.getElementById("laiaRttInit")?.value || "0" ); const laiaJaInit = parseFloat( document.getElementById("laiaJaInit")?.value || "0" ); let alexCpUsed = 0, alexRttUsed = 0, alexJaUsed = 0; let laiaCpUsed = 0, laiaRttUsed = 0, laiaJaUsed = 0; weeks.forEach((week) => { alexCpUsed += week.alex.cp; alexRttUsed += week.alex.rtt; alexJaUsed += week.alex.ja; laiaCpUsed += week.laia.cp; laiaRttUsed += week.laia.rtt; laiaJaUsed += week.laia.ja; }); const alexCpLeft = alexCpInit - alexCpUsed; const alexRttLeft = alexRttInit - alexRttUsed; const alexJaLeft = alexJaInit - alexJaUsed; const laiaCpLeft = laiaCpInit - laiaCpUsed; const laiaRttLeft = laiaRttInit - laiaRttUsed; const laiaJaLeft = laiaJaInit - laiaJaUsed; summaryDiv.innerHTML = `

Alex
CP utilisés : ${alexCpUsed.toFixed(2)} / ${alexCpInit.toFixed( 2 )} (reste ${alexCpLeft.toFixed(2)})
RTT utilisés : ${alexRttUsed.toFixed(2)} / ${alexRttInit.toFixed( 2 )} (reste ${alexRttLeft.toFixed(2)})
JA utilisés : ${alexJaUsed.toFixed(2)} / ${alexJaInit.toFixed( 2 )} (reste ${alexJaLeft.toFixed(2)})

Laia
CP utilisés : ${laiaCpUsed.toFixed(2)} / ${laiaCpInit.toFixed( 2 )} (reste ${laiaCpLeft.toFixed(2)})
RTT utilisés : ${laiaRttUsed.toFixed(2)} / ${laiaRttInit.toFixed( 2 )} (reste ${laiaRttLeft.toFixed(2)})
JA utilisés : ${laiaJaUsed.toFixed(2)} / ${laiaJaInit.toFixed(2)})

`; } function initFamilyCalendar() { if (!document.getElementById("planningBody")) return; [ "alexCpInit", "alexRttInit", "alexJaInit", "laiaCpInit", "laiaRttInit", "laiaJaInit", ].forEach((id) => { const el = document.getElementById(id); if (el) el.addEventListener("change", updateSummary); }); ["showOnlyCaroleOff", "showOnlySchoolHoliday"].forEach((id) => { const el = document.getElementById(id); if (el) el.addEventListener("change", renderTable); }); renderTable(); } document.addEventListener("DOMContentLoaded", initFamilyCalendar);