4.1 KiB
Seite: Veranstaltungsliste
Route
/shows
Die Route ist der Standardpfad des Shows-Moduls. In shows-routing.module.ts ist kein eigener canActivate-Guard auf dieser Route definiert.
Zweck
Die Veranstaltungsliste ist der Einstieg in den Veranstaltungsbereich. Sie trennt eigene, noch zu bearbeitende Veranstaltungen von bereits veröffentlichten Veranstaltungen und bietet für berechtigte Benutzer Filter sowie den Einstieg zur Neuanlage.
Datenquellen
ShowService.list$()liefert die für den aktuellen Benutzer sichtbaren Veranstaltungen.ShowService.list$(false, true)liefert eigene Veranstaltungen inklusive archivierter eigener Einträge.ShowService.listPublicSince$(lastMonths)fragt veröffentlichte, nicht archivierte Veranstaltungen serverseitig nach Zeitraum ab.- Falls die serverseitige Abfrage keine Ergebnisse liefert, nutzt die Liste einen lokalen Fallback aus geladenen veröffentlichten und nicht archivierten Shows.
FilterStoreService.showFilter$speichert Zeitraum, Ersteller, Veranstaltungstyp und Archiv-Filter.UserService.user$bestimmt den aktuellen Benutzer und dessen Rolle.FilterComponent.owners$()baut die Ersteller-Auswahl aus den in Shows verwendetenowner-IDs undUserService.getUserbyId$().
Wichtige UI-Elemente
- Seitenrahmen
app-page-framemit TitelVeranstaltungen. - Sidebar mit
app-filter, sichtbar für Rollen mit Sidebar-Zugriff. - Karte
Meine Veranstaltungenfür eigene Entwürfe, nicht gemeldete veröffentlichte Veranstaltungen und optional archivierte Veranstaltungen. - Karte
Veröffentlichte Veranstaltungenfür veröffentlichte, nicht archivierte Veranstaltungen. - Listeneintraege zeigen Datum, Erstellername, übersetzten Veranstaltungstyp und optional ein Status-Badge.
- Button
Neue Veranstaltung anlegen, der nach/shows/newführt. - Hinweiszeile bei aktiven Filtern mit Anzahl der angezeigten Veranstaltungen und Aktion
Filter zurücksetzen.
Aktionen
- Veranstaltung öffnen: Klick auf einen Listeneintrag navigiert relativ zu
show.id, also nach/shows/:showId. - Neue Veranstaltung anlegen: nur über den Button in
Meine Veranstaltungen. - Filter ändern: Zeitraum, Ersteller, Veranstaltungstyp und Archiv-Anzeige werden direkt im
FilterStoreServiceaktualisiert. - Filter zurücksetzen: stellt den Standardfilter wieder her.
Statuslogik
Der Standardfilter ist:
- Zeitraum: letzter Monat
- Ersteller: alle
- Veranstaltungstyp: alle
- Archiviert: aus
Öffentliche Veranstaltungen werden absteigend nach Datum sortiert und zusätzlich nach Ersteller und Veranstaltungstyp gefiltert. Der Zeitraum wird in 30-Tage-Monaten berechnet; alle nutzt den Wert 99999.
Eigene Veranstaltungen erscheinen in Meine Veranstaltungen, wenn sie dem aktuellen Benutzer gehören und eine der folgenden Bedingungen erfüllen:
- nicht veröffentlicht
reportedType === 'pending'- archiviert und der Archiv-Filter ist aktiv
Status-Badges in Meine Veranstaltungen:
archiviert, wennshow.archivedgesetzt istnicht gemeldet, wenn die Show veröffentlicht istunveröffentlicht, wenn die Show nicht veröffentlicht ist
Berechtigungen
- Die Route selbst hat im Shows-Routing keinen eigenen Guard.
- Sidebar und Filter sind nur sichtbar, wenn die Rolle
adminoderleaderenthält. - Der Button
Neue Veranstaltung anlegenist perRoleDirectiveaufleaderbeschränkt. - Benutzer ohne Sidebar-Zugriff sehen nur die veröffentlichten Veranstaltungen ohne Filterbereich.
Technische Hinweise
ShowService.list$()filtert archivierte Shows grundsaetzlich aus, lässt eigene archivierte Shows aber zu, wennincludeOwnArchivedaktiv ist.ShowDataService.listPublicSince$()verwendet Firestore-Constraintspublished == true, optionaldate >= startTimestampundorderBy('date', 'desc'); archivierte Shows werden danach clientseitig entfernt.- Die Seite nutzt
combineLatest,switchMap,mapundshareReplay-basierte Streams; die Darstellung erfolgt komplett reaktiv überAsyncPipe. - Filterwerte bleiben über
FilterStoreServiceerhalten und werden sowohl in der Sidebar als auch für die Listenberechnung verwendet.