Web: Chargenliste (mit Sammel-Lagerort) + Ladezustand auf allen Tabellen

Neue Seite "Chargen": alle Chargen ueber alle Artikel (Artikel, Menge, MHD,
Lagerort, eingelagert). Lagerort je Zeile direkt aenderbar; alle Chargen ohne
Ort per Klick zuweisbar (bulk-location) - gut, wenn der Lagerort erst spaeter
angelegt wurde.

DataTable bekommt einen loading-Prop: waehrend des Ladens steht "Wird geladen..."
statt der Leer-Meldung. Auf ALLEN Tabellen angewendet (Produkte, Mindestbestaende,
Kategorien, Gruppen, Einheiten, Gebinde, Einzelstuecke, Chargen).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-07-29 13:58:07 +02:00
parent 1c88206838
commit 826f4df4bd
11 changed files with 190 additions and 12 deletions

View File

@@ -8,6 +8,7 @@ import Login from "./pages/Login";
import Dashboard from "./pages/Dashboard";
import Products from "./pages/Products";
import ItemList from "./pages/ItemList";
import Charges from "./pages/Charges";
import MinStock from "./pages/MinStock";
import ProductForm from "./pages/ProductForm";
import CheckIn from "./pages/CheckIn";
@@ -79,6 +80,7 @@ function Sidebar() {
<NavItem to="/lebensmittel" icon="food" label="Lebensmittel" />
<NavItem to="/gegenstaende" icon="package" label="Gegenstände" />
<NavItem to="/items" icon="tag" label="Einzelstücke" />
<NavItem to="/chargen" icon="box" label="Chargen" />
<NavItem to="/shopping" icon="cart" label="Einkaufsliste" />
<NavItem to="/mindestbestaende" icon="check" label="Mindestbestände" />
<NavItem to="/history" icon="history" label="Verlauf" />
@@ -146,6 +148,7 @@ export default function App() {
<Route path="/gegenstaende" element={<Protected wide><Products fixedType="object" /></Protected>} />
<Route path="/products" element={<Protected wide><Products /></Protected>} />
<Route path="/items" element={<Protected wide><ItemList /></Protected>} />
<Route path="/chargen" element={<Protected wide><Charges /></Protected>} />
<Route path="/products/new" element={<Protected adminOnly><ProductForm /></Protected>} />
<Route path="/products/:id" element={<Protected><ProductForm /></Protected>} />
<Route path="/i/:uid" element={<Protected><ItemResolve /></Protected>} />