From 302e7625e5e3164e34e04eb307ae76dad18ce7b0 Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Sun, 16 Aug 2026 09:44:29 +0200 Subject: [PATCH] Web: Gruppentabelle auf volle Breite, Karten darunter Die Seite hatte die Tabelle links und eine feste rechte Spalte (24% der Breite). Seit die Tabelle Obergruppen, Bestand mit Einheit und die Gebinde-Erlaeuterung traegt, war die rechte Spalte teurer als sie half - und sie stand auch dann da, wenn gar keine Gruppe ausgewaehlt war. Jetzt bekommt die Tabelle die volle Breite. "Neue Gruppe" steht darunter, die Karten zur ausgewaehlten Gruppe (EAN-Codes, Mindestbestand) erscheinen beim "verwalten" ebenfalls darunter, nebeneinander. Kein Springen des Layouts beim Auswaehlen, weil die Tabelle ihre Breite nie aendert. Co-Authored-By: Claude Opus 5 --- web/src/pages/Groups.jsx | 185 ++++++++++++++++++++------------------- 1 file changed, 94 insertions(+), 91 deletions(-) diff --git a/web/src/pages/Groups.jsx b/web/src/pages/Groups.jsx index c76f922..6990590 100644 --- a/web/src/pages/Groups.jsx +++ b/web/src/pages/Groups.jsx @@ -246,55 +246,57 @@ export default function Groups() { {error &&
{error}
} -
-
- g._pfad} - tree={{ column: "name", idOf: (g) => g._pfad, parentIdOf: (g) => g._elternPfad }} - empty="Noch keine Gruppen." /> -
+ {/* Die Tabelle bekommt die volle Breite – bei vielen Spalten (Obergruppen, + Bestand, Einheit) war die rechte Spalte teurer als sie half. Alles + Übrige steht darunter. */} +
+ g._pfad} + tree={{ column: "name", idOf: (g) => g._pfad, parentIdOf: (g) => g._elternPfad }} + empty="Noch keine Gruppen." /> +
-
- {selected && ( -
-
- -

EAN-Codes der Gruppe: {selected.name}

-
- { - try { - await api.addGroupBarcode(selected.id, body); - await load(); - } catch (err) { setError(err.message); } - }} - onEditNote={async (code, note) => { - try { - await api.updateGroupBarcodeNote(selected.id, code, { note }); - await load(); - } catch (err) { setError(err.message); } - }} - onDelete={async (code) => { - try { - await api.deleteGroupBarcode(selected.id, code); - await load(); - } catch (err) { setError(err.message); } - }} - /> - -
- )} + {/* Karten zur AUSGEWÄHLTEN Gruppe – erscheinen erst beim „verwalten". */} + {selected && ( +
+
+
+ +

EAN-Codes der Gruppe: {selected.name}

+
+ { + try { + await api.addGroupBarcode(selected.id, body); + await load(); + } catch (err) { setError(err.message); } + }} + onEditNote={async (code, note) => { + try { + await api.updateGroupBarcodeNote(selected.id, code, { note }); + await load(); + } catch (err) { setError(err.message); } + }} + onDelete={async (code) => { + try { + await api.deleteGroupBarcode(selected.id, code); + await load(); + } catch (err) { setError(err.message); } + }} + /> + +
- {selected && isAdmin && ( + {isAdmin && (
@@ -318,51 +320,52 @@ export default function Groups() { />
)} - - {isAdmin && ( -
-

Neue Gruppe

- -
- - -
- - -

- Bestand und Mindestbestand einer Gruppe zählen auch die Artikel ihrer - Untergruppen. Eine Gruppe darf unter mehreren Obergruppen hängen — - „Grillwurst“ etwa unter „Wurst“ und unter „Grillgut“. - Gezählt werden nur Artikel, die zur gewählten Einheit passen, auch in - den Untergruppen. Namen lassen sich in der Tabelle direkt ändern. -

-
- )}
-
+ )} + + {isAdmin && ( +
+

Neue Gruppe

+ +
+ + +
+ + +

+ Bestand und Mindestbestand einer Gruppe zählen auch die Artikel ihrer + Untergruppen. Eine Gruppe darf unter mehreren Obergruppen hängen — + „Grillwurst“ etwa unter „Wurst“ und unter „Grillgut“. + Gezählt werden nur Artikel, die zur gewählten Einheit passen, auch in + den Untergruppen. Namen lassen sich in der Tabelle direkt ändern. +

+
+ )}
); }