From 3aecbb446c64aebe0f7b7a8281df84bfcd2cabe4 Mon Sep 17 00:00:00 2001 From: noroot Date: Mon, 31 Aug 2026 15:09:23 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Filter=20und=20Paginierung=20f=C3=BCr?= =?UTF-8?q?=20den=20Werkzeugkatalog,=20Claude=20Code=20als=20Katalogeintra?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Beide Katalog-Ansichten (Betreiber + Mandant) haben jetzt eine Filterleiste (Freitext über Name/Anbieter/Verarbeitungsländer, Zweck-Dropdown) und serverseitige Paginierung (20/Seite) über ein GET-Formular, kein JavaScript. pagination.go ist generisch gehalten (Go-Generics) für Wiederverwendung in weiteren Listen. Claude Code als eigener Katalogeintrag ergänzt (nicht identisch mit Claude for Work: läuft lokal, hat Dateizugriff, lokale Sitzungs- protokolle mit eigenem Aufbewahrungsrisiko). --- CLAUDE.md | 39 +++++++-- internal/web/betreiber_werkzeug_handlers.go | 69 ++++++++++++++- .../web/betreiber_werkzeug_handlers_test.go | 70 ++++++++++++++++ internal/web/mandant_werkzeug_handlers.go | 20 ++++- internal/web/pagination.go | 75 +++++++++++++++++ internal/web/static/app.css | 42 ++++++++++ .../web/templates/betreiber_werkzeuge.html | 84 ++++++++++++------- internal/web/templates/mandant_werkzeuge.html | 35 +++++++- 8 files changed, 390 insertions(+), 44 deletions(-) create mode 100644 internal/web/pagination.go diff --git a/CLAUDE.md b/CLAUDE.md index a2f6b33..78f7ff7 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -300,14 +300,39 @@ Aufbewahrung, Zertifizierungen, Geeignete Zwecke, Zuletzt geprüft) statt als Liste — vorher waren nur Name/Anbieter/Ort auf einen Blick sichtbar, der Rest war erst nach Klick auf den Detaileintrag zu sehen. -Der zentrale Katalog ist aktuell mit 19 recherchierten Einträgen +**Filter & Paginierung** (seit 2026-08-31, `pagination.go` + +`werkzeugFilter` in `betreiber_werkzeug_handlers.go`): beide +Katalog-Tabellen haben eine Filterleiste (Freitext über Name/Anbieter/ +Verarbeitungsländer, Dropdown über die zwölf Zweck-Kategorien) und +serverseitige Paginierung (20 Einträge/Seite, `page`-Query-Parameter). +Alles über ein einziges GET-Formular, ohne JavaScript — Prev/Next- +Buttons setzen `page` per ` + {{if .Filter.Aktiv}}Zurücksetzen{{end}} + + + {{if not .Werkzeuge}} +

{{if .Filter.Aktiv}}Keine Treffer für diese Filter.{{else}}Noch keine zentralen Katalogeinträge.{{end}}

+ {{else}} +
+ + + + + + + + + + {{range .Werkzeuge}} + + + + + + + + + + + + + {{end}} + +
NameAnbieterVerarbeitungsländerDPFAVVTraining ausAufbewahrungZertifizierungenGeeignete ZweckeZuletzt geprüft
{{.Name}}{{.Anbieter}}{{.Verarbeitungslaender}}{{if .DPFZertifiziert}}ja{{else}}nein{{end}}{{if .AVVVerfuegbar}}ja{{else}}nein{{end}}{{if .TrainingStandard}}ja{{else}}nein{{end}}{{.Aufbewahrung}}{{.Zertifizierungen}}{{.GeeigneteZwecke}}{{.LetztePruefung}} {{.PruefStatusLabel}}
+
+ + {{end}} +

Werkzeug anlegen

diff --git a/internal/web/templates/mandant_werkzeuge.html b/internal/web/templates/mandant_werkzeuge.html index b52e59e..635ad10 100644 --- a/internal/web/templates/mandant_werkzeuge.html +++ b/internal/web/templates/mandant_werkzeuge.html @@ -12,8 +12,20 @@ zentralen Katalog unverändert — es wird nur für diesen Mandanten aus der Werkzeugsuche ausgeblendet.

+
+ + + + {{if .Filter.Aktiv}}Zurücksetzen{{end}} +
{{if not .Werkzeuge}} -

Der zentrale Katalog ist noch leer.

+

{{if .Filter.Aktiv}}Keine Treffer für diese Filter.{{else}}Der zentrale Katalog ist noch leer.{{end}}

{{else}}
@@ -52,6 +64,27 @@
+ {{end}}

Eigene Werkzeuge