diff --git a/web-dashboard/index.html b/web-dashboard/index.html index 7acc29b..1f29107 100644 --- a/web-dashboard/index.html +++ b/web-dashboard/index.html @@ -3544,15 +3544,27 @@ } } + // Eine Ankündigung gilt als "erledigt", sobald ihr Termin (eventDate) + // verstrichen ist — Ankündigungen ohne Termin haben kein automatisches + // "erledigt"-Signal und bleiben bestehen, bis der Vermieter sie löscht. + function isAnnouncementPast(a) { + return !!a.eventDate && stripTime(new Date(a.eventDate)) < stripTime(new Date()); + } + function renderAnnouncements(announcements) { const isLandlord = currentUser.role === 'LANDLORD' || currentUser.role === 'ADMIN'; + // Für Mieter verschwinden erledigte (vergangene) Ankündigungen automatisch + // aus dieser Liste — im WG-Kalender bleiben sie weiterhin sichtbar. + // Der Vermieter sieht auch vergangene Ankündigungen, um sie ggf. löschen + // zu können. + const visibleAnnouncements = isLandlord ? announcements : announcements.filter(a => !isAnnouncementPast(a)); const list = document.getElementById('announcementList'); list.innerHTML = ''; - if (!announcements.length) { + if (!visibleAnnouncements.length) { list.appendChild(el('div', 'empty-state', 'Keine Ankündigungen.')); return; } - announcements.forEach(a => { + visibleAnnouncements.forEach(a => { const row = el('div', 'ticket-row'); const left = el('div'); left.appendChild(el('div', 'title', a.title));