Icon actions and collapsible filter bars on the project overview #12

Closed
Grovy311 wants to merge 0 commits from feature/overview-filters into main
Collaborator
  • Die Übersicht nutzt wie der Editor IconButton/IconLink.
  • Verteilungen und Projektgeräte haben einklappbare Filterleisten im Stil der PM-App: Suche, Mehrfachauswahl, „Zurücksetzen“, „x von y“, Badge „Filter aktiv“. Der Einklappzustand bleibt je Karte in localStorage.
  • Die Suche findet auch Verteilernummer und Örtlichkeit, sobald feature/print-view gemergt ist.
  • Löschen eines Projektgeräts fragt jetzt nach.
  • Die Filterlogik ist rein in src/frontend/utils/overview-filters.ts, dazu 13 Tests.

Basis: feature/editor-ui, bitte danach mergen.

Geprüft auf dem Branch allein: alle drei tsc-Konfigurationen, npm test 428/428, Produktions-Build (build:api + build:web). Zusammen mit allen anderen Branches: 509/509 Tests, konfliktfrei in jeder Merge-Reihenfolge.

Merge-Reihenfolge aller Branches:

  1. fix/client-id-insecure-context (#9)
  2. feature/editor-ui (#10)
  3. feature/cable-sizing (#11)
  4. feature/overview-filters (#12)
  5. feature/circuit-list-usability (#13)
  6. feature/card-look (#14)
  7. feature/print-view (#15)
  8. feature/building-structure (#16)
  9. feature/estimate-balance (#17)

🤖 Generated with Claude Code

- Die Übersicht nutzt wie der Editor `IconButton`/`IconLink`. - Verteilungen und Projektgeräte haben einklappbare Filterleisten im Stil der PM-App: Suche, Mehrfachauswahl, „Zurücksetzen“, „x von y“, Badge „Filter aktiv“. Der Einklappzustand bleibt je Karte in `localStorage`. - Die Suche findet auch Verteilernummer und Örtlichkeit, sobald `feature/print-view` gemergt ist. - Löschen eines Projektgeräts fragt jetzt nach. - Die Filterlogik ist rein in `src/frontend/utils/overview-filters.ts`, dazu 13 Tests. **Basis:** `feature/editor-ui`, bitte danach mergen. Geprüft auf dem Branch allein: alle drei `tsc`-Konfigurationen, `npm test` 428/428, Produktions-Build (`build:api` + `build:web`). Zusammen mit allen anderen Branches: 509/509 Tests, konfliktfrei in jeder Merge-Reihenfolge. Merge-Reihenfolge aller Branches: 1. `fix/client-id-insecure-context` (#9) 2. `feature/editor-ui` (#10) 3. `feature/cable-sizing` (#11) 4. `feature/overview-filters` (#12) 5. `feature/circuit-list-usability` (#13) 6. `feature/card-look` (#14) 7. `feature/print-view` (#15) 8. `feature/building-structure` (#16) 9. `feature/estimate-balance` (#17) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Grovy311 added 4 commits 2026-09-26 20:14:44 +02:00
- New IconButton/IconButtonSeparator component based on lucide-react.
- Toolbar: icon plus text, grouped into history, view and insert blocks.
- Group headers: compact icons for add circuit, upstream fuse (VS), group
  RCD (FI), edit, move up/down, renumber and delete; the header no longer
  overflows the grid.
- Rows: add device, delete circuit (trash) and delete device (ListX).
- The previous German labels remain accessible names and tooltips;
  destructive actions highlight in the danger color.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Replace the "Filtern" text buttons with a funnel icon next to the column
  label; an active filter is highlighted and shows its value count.
- Header labels no longer break inside words (e.g. "Bemerkung"); hyphens
  are non-breaking and a trailing unit moves to its own line, so all
  headers share one height.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The overview now uses the same icon buttons as the circuit list editor:
row actions are icon-only IconButtons (Pencil, Link2, Library, Trash2),
card-header and panel actions show icon plus text, and the circuit-list
link uses the new IconLink. The version history uses Undo2/Redo2, a
chevron toggle and a RotateCcw restore action. Page-header buttons stay
Bootstrap buttons with a lucide icon so the upcoming "Seitenansicht"
button of feature/print-view merges without conflicts and matches them.

The Verteilungen and Projektgeräte cards get a PM-style filter bar:
search plus MultiSelectDropdown (checkbox list with "Alle", closes on
outside click and Escape) and "Zurücksetzen" while a filter is active.
Only the bar collapses; the state is kept per card in localStorage and a
collapsed active filter shows "Filter aktiv". The header row shows
"x von y", and an empty-state row explains when filters hide everything.
The filter logic is a pure module (overview-filters.ts) with node tests;
selections that are no longer offered (deleted floor) are ignored.

IconButton now imports React explicitly like the other components that
are rendered in node tests with the classic JSX runtime.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The distribution-board search also matches board number and location as
soon as the boards carry them (distribution-board info card of
feature/print-view); the fields are optional in the filter, so the branch
works with and without them. Deleting a project device now asks for
confirmation like the other delete actions, since the row action is a
small trash icon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner

Integriert in main mit Merge-Commit 2e223be8b4.

Anpassungen beim Merge:

  • Suchhinweis: Der Platzhalter der Verteilersuche lautet jetzt „Verteilungen durchsuchen …“ statt „Name, Nr., Örtlichkeit oder Etage …“, weil Nummer und Örtlichkeit erst mit #15 (print-view) existieren. Nach dem Merge von #15 kann der konkrete Hinweis wieder rein.
  • Doku: docs/current-architecture.md beschreibt jetzt die Filterkombination (Werte innerhalb eines Filters oder-verknüpft, Filter und Suche und-verknüpft), leere Auswahl = „Alle“, die Optionen „Ohne Etage“/„Nicht festgelegt“/„Ohne Kostengruppe“, „Zurücksetzen“, dass nur der Einklappzustand im Browser gespeichert wird und dass Filter keine Revisionen erzeugen. „Anschluss“ heißt in der Doku jetzt „Phasenzahl“.
Integriert in `main` mit Merge-Commit 2e223be8b4d32ab4e40e70a639e10e3bc594c215. Anpassungen beim Merge: - **Suchhinweis:** Der Platzhalter der Verteilersuche lautet jetzt „Verteilungen durchsuchen …“ statt „Name, Nr., Örtlichkeit oder Etage …“, weil Nummer und Örtlichkeit erst mit #15 (print-view) existieren. Nach dem Merge von #15 kann der konkrete Hinweis wieder rein. - **Doku:** `docs/current-architecture.md` beschreibt jetzt die Filterkombination (Werte innerhalb eines Filters oder-verknüpft, Filter und Suche und-verknüpft), leere Auswahl = „Alle“, die Optionen „Ohne Etage“/„Nicht festgelegt“/„Ohne Kostengruppe“, „Zurücksetzen“, dass nur der Einklappzustand im Browser gespeichert wird und dass Filter keine Revisionen erzeugen. „Anschluss“ heißt in der Doku jetzt „Phasenzahl“.
jappel closed this pull request 2026-09-26 21:42:30 +02:00

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 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: jappel/leistungsbilanz-ts#12
No description provided.