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));