Papierkorb: Mehrfachauswahl mit Checkboxen, Sammel-Restore/-Löschen, Alle auswählen #128

Closed
opened 2026-07-15 14:11:29 +02:00 by fable-5 · 1 comment
Collaborator

UI-Erweiterung (Stefans Wunsch per Chat, 15.07.2026, für den nächsten Meilenstein)

Die Papierkorb-Ansicht (apps/web/src/pages/TrashPage.tsx, #31) kann bisher nur Seite für Seite wiederherstellen oder endgültig löschen. Gewünscht:

  • Checkbox je Seite in der Liste, um mehrere Seiten auszuwählen.
  • Sammel-Aktionen: die ausgewählten Seiten mit EINEM Klick wiederherstellen oder endgültig löschen (Letzteres weiterhin mit Bestätigung; Anzahl im Confirm-Text).
  • „Alle auswählen": eine Checkbox/Aktion, die alle Einträge auf einmal markiert (und wieder abwählt).

Hinweise für die Umsetzung:

  • Bestehende Endpoints: POST /pages/:id/restore, DELETE /pages/:id/purge — entweder clientseitig sequenziell/parallel je Auswahl aufrufen oder (sauberer bei großen Mengen) Bulk-Endpoints ergänzen; Entscheidung bei der Planung.
  • Restore-Semantik aus #107 beachten (Restore hängt an den nächsten LEBENDEN Vorfahren, reihenfolge-unabhängig — für Bulk-Restore also unkritisch); Purge promotet Restkinder.
  • Teil-Fehler (z. B. eine Seite nicht mehr restaurierbar) verständlich melden, Rest der Auswahl trotzdem abarbeiten.
  • trash.spec (lokaler Pack, nicht im CI) an die neuen Flows anpassen; i18n de+en.
**UI-Erweiterung** (Stefans Wunsch per Chat, 15.07.2026, für den nächsten Meilenstein) Die Papierkorb-Ansicht (`apps/web/src/pages/TrashPage.tsx`, #31) kann bisher nur Seite für Seite wiederherstellen oder endgültig löschen. Gewünscht: - **Checkbox je Seite** in der Liste, um mehrere Seiten auszuwählen. - **Sammel-Aktionen**: die ausgewählten Seiten mit EINEM Klick **wiederherstellen** oder **endgültig löschen** (Letzteres weiterhin mit Bestätigung; Anzahl im Confirm-Text). - **„Alle auswählen"**: eine Checkbox/Aktion, die alle Einträge auf einmal markiert (und wieder abwählt). Hinweise für die Umsetzung: - Bestehende Endpoints: `POST /pages/:id/restore`, `DELETE /pages/:id/purge` — entweder clientseitig sequenziell/parallel je Auswahl aufrufen oder (sauberer bei großen Mengen) Bulk-Endpoints ergänzen; Entscheidung bei der Planung. - Restore-Semantik aus #107 beachten (Restore hängt an den nächsten LEBENDEN Vorfahren, reihenfolge-unabhängig — für Bulk-Restore also unkritisch); Purge promotet Restkinder. - Teil-Fehler (z. B. eine Seite nicht mehr restaurierbar) verständlich melden, Rest der Auswahl trotzdem abarbeiten. - trash.spec (lokaler Pack, nicht im CI) an die neuen Flows anpassen; i18n de+en.
fable-5 added this to the M16 — Papierkorb: Mehrfachauswahl milestone 2026-07-15 14:11:29 +02:00
fable-5 added the
frontend
label 2026-07-15 14:11:29 +02:00
Author
Collaborator

Umgesetzt in 48d4c60 (clientseitig über die bestehenden Endpoints, wie bei der Planung angedacht — Bulk-Endpoints lohnen bei den realen Mengen nicht): Checkbox je Zeile, Toolbar mit „Alle auswählen“ (natives indeterminate bei Teilauswahl) und den Sammel-Aktionen; Sammel-Löschen bestätigt mit der Anzahl (pluralisiert). Die Abarbeitung ist BEWUSST sequenziell — Purge promotet Restkinder (#107), parallele Baum-Mutationen würden racen. Teil-Fehler stranden den Rest nicht: Schleife läuft weiter, fehlgeschlagene Seiten bleiben ausgewählt (Retry möglich), ein role="alert"-Banner nennt die Anzahl. Einzel-Restore/-Purge laufen durch denselben Pfad und verlieren damit nebenbei ihre bisher unbehandelte Promise-Rejection.

trash.spec um den Bulk-Test erweitert (lokaler Pack, 4/4 grün); Restore-Semantik aus #107 unverändert (reihenfolge-unabhängig). Doku (user-guide en+de, features) angepasst.

Umgesetzt in `48d4c60` (clientseitig über die bestehenden Endpoints, wie bei der Planung angedacht — Bulk-Endpoints lohnen bei den realen Mengen nicht): Checkbox je Zeile, Toolbar mit „Alle auswählen“ (natives indeterminate bei Teilauswahl) und den Sammel-Aktionen; Sammel-Löschen bestätigt mit der Anzahl (pluralisiert). Die Abarbeitung ist BEWUSST sequenziell — Purge promotet Restkinder (#107), parallele Baum-Mutationen würden racen. Teil-Fehler stranden den Rest nicht: Schleife läuft weiter, fehlgeschlagene Seiten bleiben ausgewählt (Retry möglich), ein role="alert"-Banner nennt die Anzahl. Einzel-Restore/-Purge laufen durch denselben Pfad und verlieren damit nebenbei ihre bisher unbehandelte Promise-Rejection. trash.spec um den Bulk-Test erweitert (lokaler Pack, 4/4 grün); Restore-Semantik aus #107 unverändert (reihenfolge-unabhängig). Doku (user-guide en+de, features) angepasst.
Sign in to join this conversation.
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stwaidele/dorfteich#128
No description provided.