From 4c8face22aa95f4428d8a8234118028a2af1b322 Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Wed, 8 Apr 2026 21:59:41 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Kalender-Toggle=20sofort=20wirksam=20+?= =?UTF-8?q?=20Tint=20f=C3=BCr=20mehrt=C3=A4gige=20Ganztags-Events=20-=20fe?= =?UTF-8?q?tchAndRender(true)=20beim=20Ein-/Ausblenden=20eines=20Kalenders?= =?UTF-8?q?=20erzwingt=20=20=20einen=20Neu-Abruf=20statt=20Cache-Treffer,?= =?UTF-8?q?=20damit=20die=20=C3=84nderung=20sofort=20sichtbar=20ist=20-=20?= =?UTF-8?q?Tint-Berechnung=20in=20der=20Wochenansicht=20ber=C3=BCcksichtig?= =?UTF-8?q?t=20jetzt=20auch=20=20=20mehrt=C3=A4gige=20Ganztags-Events=20(z?= =?UTF-8?q?.B.=20Urlaub),=20nicht=20nur=20mehrt=C3=A4gige=20=20=20Termin-E?= =?UTF-8?q?vents=20=E2=80=94=20exclusive=20Enddaten=20werden=20dabei=20kor?= =?UTF-8?q?rekt=20normalisiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/js/calendar.js | 2 +- frontend/js/views/week.js | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/frontend/js/calendar.js b/frontend/js/calendar.js index 631d012..6a8c6fb 100644 --- a/frontend/js/calendar.js +++ b/frontend/js/calendar.js @@ -486,7 +486,7 @@ function renderCalendarList() { if (cal) cal.enabled = cb.checked; } } - fetchAndRender(); + fetchAndRender(true); }); }); diff --git a/frontend/js/views/week.js b/frontend/js/views/week.js index 98de4c4..087ed6d 100644 --- a/frontend/js/views/week.js +++ b/frontend/js/views/week.js @@ -20,6 +20,15 @@ export function renderWeek(container, currentDate, events, onSlotClick, onEventC const timedEvs = events.filter(ev => !ev.allDay); // Multi-day timed events: timed but spanning more than one calendar day const multiDayTimedEvs = timedEvs.filter(ev => !isSameDay(new Date(ev.start), new Date(ev.end))); + // Multi-day all-day events (exclusive end → subtract 1 day before comparing) + const multiDayAllDayEvs = allDayEvs.filter(ev => { + const s = new Date(ev.start); + const e = new Date(ev.end); + if (e > s) e.setDate(e.getDate() - 1); // exclusive → inclusive + return !isSameDay(s, e); + }); + // All events that should generate a column background tint + const tintEvs = [...multiDayTimedEvs, ...multiDayAllDayEvs]; // Returns true if event overlaps any part of the given day function spansDay(ev, day) { @@ -121,8 +130,8 @@ export function renderWeek(container, currentDate, events, onSlotClick, onEventC `; }).join(''); - // Background tint for days covered by multi-day timed events - const tintHtml = multiDayTimedEvs.filter(ev => spansDay(ev, day)).map(ev => { + // Background tint for days covered by multi-day events (timed or all-day) + const tintHtml = tintEvs.filter(ev => spansDay(ev, day)).map(ev => { const color = ev.color || ev.calendarColor || '#4285f4'; return `
`; }).join('');