2.8 KiB
Seite: Veranstaltung bearbeiten
Route
/shows/:showId/edit
Die Route bearbeitet den Showkopf einer bestehenden Veranstaltung anhand der URL-Variable showId. In shows-routing.module.ts ist für diese Route kein eigener canActivate-Guard definiert.
Zweck
Die Seite ändert Datum und Veranstaltungstyp einer vorhandenen Veranstaltung. Sie ist für Korrekturen an den Kopfdaten gedacht; Songauswahl, Reihenfolge, Texte, Veröffentlichung, Archivierung, Teilen, CCLI-Meldung und DOCX-Export werden auf der Detailseite verwaltet.
Datenquellen
ActivatedRoute.paramsliefertshowId.ShowService.read$(showId)laedt die Show einmalig.ShowService.SHOW_TYPE_PUBLICundShowService.SHOW_TYPE_PRIVATEliefern die auswählbaren Typen.ShowService.update$(id, data)speichert die Änderungen.ShowDataService.update()schreibt die Aktualisierung inshows/{id}.
EditComponent haelt außerdem ShowDataService.list$ als shows$, nutzt diesen Stream in der aktuellen Vorlage aber nicht sichtbar.
Wichtige UI-Elemente
app-page-framemit TitelVeranstaltungen.- Karte
Veranstaltung ändernmit Rücksprung zur Detailseite/shows/{id}. - Formularfeld
Art der Veranstaltungals gruppierte Auswahl. - Formularfeld
Datummit Material-Datepicker. - Button
Speichern.
Aktionen
- Seite laden: liest die Show und befüllt das Formular mit
id,dateundshowType. - Speichern: markiert alle Felder als berührt, prüft Pflichtfelder und aktualisiert Datum sowie Typ.
- Nach dem Speichern: Navigation zurück nach
/shows/{id}.
Statuslogik
Beim Initialisieren wird das Formular zuerst zurückgesetzt und danach einmalig aus der geladenen Show befüllt. Das Speichern bricht ab, wenn das Formular ungültig ist oder id, date oder showType fehlen.
Beim Speichern wird nur Folgendes geändert:
dateals FirestoreTimestamp.fromDate(date)showType
Die Seite ändert keine Werte für published, reportedType, archived, order, songIds oder shareId.
Berechtigungen
- Die Route selbst hat im Shows-Routing keinen eigenen Guard.
- Der Einstieg zur Bearbeitungsseite ist auf der Detailseite nur für
leader, den Besitzer der Show und unveröffentlichte Shows sichtbar. - Direkte URL-Aufrufe werden auf Komponentenebene nicht zusätzlich durch
RoleDirectiveoderOwnerDirectiveabgefangen.
Technische Hinweise
- Das Formular ist ein Reactive Form mit den Controls
id,dateundshowType. - Die Show wird mit
take(1)nur einmal in das Formular übernommen. - Die Typauswahl verwendet dieselben Konstanten wie die Neuanlage und zeigt die Werte über
ShowTypePipean. - Änderungen am Feld
showTypeberechnenpublicnicht neu; gespeichert wird nur der Typ. Falls der Öffentlich-/Privat-Status nach Typwechsel relevant ist, muss diese Logik separat berücksichtigt werden.