Skip to content

feat(medien): Übersicht als Pflegewerkzeug statt als Galerie - #298

Merged
nichtLehdev merged 1 commit into
mainfrom
feat/media-overview-rework
Sep 11, 2026
Merged

feat(medien): Übersicht als Pflegewerkzeug statt als Galerie#298
nichtLehdev merged 1 commit into
mainfrom
feat/media-overview-rework

Conversation

@nichtLehdev

Copy link
Copy Markdown
Owner

Dritter von drei Teilen. Basis ist #297, das wiederum auf #296 steht.

Warum

Die Seite war als Galerie gebaut, benutzt wird sie als Metadaten-Editor. Das Kachelraster zeigte zwanzig Vorschaubilder und verbarg jedes Feld, das man ändern wollte — ohne 57 Dialoge nacheinander zu öffnen ließ sich nicht sagen, welchem Bild der Alt-Text oder die Urheberangabe fehlt.

Dazu war der Bearbeiten-Dialog aus rohen <input>-, <button>- und <label>-Elementen gebaut, während die UI-Bausteine (Input, Textarea, Label, Checkbox, Button) direkt daneben ungenutzt lagen. Fokusrahmen, Deaktiviert-Darstellung und Dunkelmodus wichen dadurch vom übrigen Dashboard ab, und Hochlade- und Bearbeiten-Dialog sahen nicht einmal untereinander gleich aus.

Was sich ändert

  • Karten/Tabelle über DashboardListViewToggle wie in den übrigen Listen, Einstellung bleibt gespeichert. Die Tabelle zeigt Alt-Text und Urheber mit „fehlt“-Markierung — genau das, wofür die Seite benutzt wird.
  • Schnellfilter für Ausstehend, Ohne Alt-Text, Ohne Urheberangabe. Die Kennzahlen darüber sind anklickbar und setzen denselben Filter.
  • Mehrfachauswahl mit Freigeben, Löschen und Herunterladen als ZIP.
  • Zweispaltiger Bearbeiten-Dialog auf Basis der UI-Bausteine: links Bild, Zuschnitt und Download, rechts das Formular.
  • Fokuspunkt lässt sich endlich setzen. Die Spalten focalPointX/focalPointY gab es längst, nur keinen Weg dorthin — bislang half nur Zuschneiden, was das Original verbrauchte.
  • Zuschnitt liegt über dem Dialog statt an seiner Stelle. „Abbrechen“ führt damit zurück ins Formular statt zurück ins Raster; getippte, noch nicht gespeicherte Angaben stehen noch da. Nach erfolgreichem Zuschnitt räumt der Dialog den Fokuspunkt mit ab, weil der Server ihn verwirft — sonst schriebe „Speichern“ den alten Punkt wieder auf ein neu zugeschnittenes Bild.
  • Hochladen per Drag & Drop und mit mehreren Dateien auf einmal, Name je Datei bearbeitbar, Copyright und Fotograf:in für alle gemeinsam.
  • Löschdialog nennt Datei und Verwendung und warnt rot vor den beiden Beziehungen mit onDelete: Cascade. Geprüft an AG5Y9331.JPG: „Achtung: Es werden weitere Einträge mitgelöscht — Startseiten-Karussell“. Bisher stand dort nur „Bist du sicher?“, ohne auch nur den Dateinamen zu nennen.
  • Aktionen in einer eigenen Zeile unter der Kachel. Als schwebende Leiste über dem Bild waren sie am Rechner bis zum Hover unsichtbar und im Eck gedrängt.
  • Fehlende Dateien zeigen den gestalteten Platzhalter (ImageWithFallback) statt einer schwarzen Fläche.

Zwei Fehler nebenbei

Das Suchfeld in der Filterleiste war 34 Pixel breit (nachgemessen), während die beiden Auswahlfelder je 518 Pixel nahmen: Select rendert einen festen w-full-Rahmen, der das flex-1-Suchfeld auf seine Mindestbreite zusammendrückte. Die feste Breite sitzt jetzt außen an der Aufrufstelle — der gemeinsame Baustein bleibt unangetastet, weil andere Seiten auf w-full bauen.

Und Escape schließt die Dialoge, solange kein zweiter darüber liegt. ScrollableModal bekommt dafür ein optionales onClose; wo nur onBackdropClick gesetzt ist, bleibt es beim bisherigen Verhalten.

Prüfung

tsc und eslint . sauber, Prettier angewandt, 600 Tests grün. Im Browser gegen die laufende Instanz durchgegangen: Feld leeren und speichern, Zuschnitt abbrechen mit erhaltenem Text, Tabellenansicht samt Fortbestehen über einen Neuladevorgang, serverseitiger Filter (57 → 53), ZIP-Download zweier Dateien, Kaskadenwarnung im Löschdialog. Nichts davon wurde tatsächlich gelöscht; der eine geänderte Testwert wurde wiederhergestellt.

Offen

media.tags wird von nichts in der Anwendung gelesen. Die Felder funktionieren jetzt korrekt, statt halb kaputt zu sein — ob das Feld bleiben soll, ist eine eigene Entscheidung.

@nichtLehdev
nichtLehdev added this pull request to stack #299 September 11, 2026 14:48
@nichtLehdev
nichtLehdev force-pushed the feat/media-overview-rework branch from 05ea047 to 3f1794a Compare September 11, 2026 14:49
Base automatically changed from feat/media-download to main September 11, 2026 14:54
Die Seite war als Galerie gebaut, benutzt wird sie als Metadaten-Editor: Das
Kachelraster zeigte zwanzig Vorschaubilder und verbarg jedes Feld, das man
ändern wollte. Ohne 57 Dialoge nacheinander zu öffnen ließ sich nicht sagen,
welchem Bild der Alt-Text oder die Urheberangabe fehlt.

Neu:

- Umschalter Karten/Tabelle über `DashboardListViewToggle` wie in den übrigen
  Listen, Einstellung bleibt gespeichert. Die Tabelle zeigt Alt-Text und
  Urheber mit "fehlt"-Markierung.
- Schnellfilter für Ausstehend, Ohne Alt-Text und Ohne Urheberangabe; die
  Kennzahlen darüber sind anklickbar und setzen denselben Filter.
- Mehrfachauswahl mit Freigeben, Löschen und Herunterladen. Mehrere Dateien
  werden im Browser zu einem ZIP gepackt — JSZip liegt ohnehin im Bündel, und
  der Server muss so nicht 200 Bilder gleichzeitig vorhalten.
- Zweispaltiger Bearbeiten-Dialog auf Basis der UI-Bausteine statt roher
  `<input>`-Elemente. Links Bild, Zuschnitt und Download, rechts das Formular.
- Fokuspunkt lässt sich endlich setzen. Die Spalten gab es längst, nur keinen
  Weg dorthin: bislang half nur Zuschneiden, was das Original verbrauchte.
- Der Zuschnitt liegt jetzt über dem Dialog statt an seiner Stelle. "Abbrechen"
  führt damit zurück ins Formular, und getippte Angaben stehen noch da.
- Hochladen per Drag & Drop und mit mehreren Dateien auf einmal.
- Der Löschdialog nennt Datei und Verwendung und warnt rot vor den beiden
  Beziehungen mit `onDelete: Cascade`: Bläserheft und Startseiten-Karussell
  verschwanden bisher stillschweigend mit dem Bild.
- Aktionen stehen in einer eigenen Zeile unter der Kachel. Als schwebende
  Leiste über dem Bild waren sie am Rechner bis zum Hover unsichtbar.
- Fehlende Dateien zeigen den gestalteten Platzhalter statt einer schwarzen
  Fläche.

Zwei Fehler nebenbei: Das Suchfeld war 34 Pixel breit, weil `Select` einen
festen `w-full`-Rahmen rendert und die Auswahlfelder das flexible Suchfeld
zusammendrückten — die feste Breite sitzt jetzt außen, der gemeinsame Baustein
bleibt unangetastet. Und Escape schließt die Dialoge, solange kein zweiter
darüber liegt.
@nichtLehdev
nichtLehdev force-pushed the feat/media-overview-rework branch from 3f1794a to f791447 Compare September 11, 2026 14:54
@nichtLehdev
nichtLehdev merged commit 2181489 into main Sep 11, 2026
8 checks passed
@nichtLehdev
nichtLehdev deleted the feat/media-overview-rework branch September 11, 2026 14:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant