diff --git a/web/src/pages/Categories.jsx b/web/src/pages/Categories.jsx
index 4acb805..2d1bad8 100644
--- a/web/src/pages/Categories.jsx
+++ b/web/src/pages/Categories.jsx
@@ -23,6 +23,8 @@ export default function Categories() {
const [collapsed, setCollapsed] = useState(() => new Set());
// Kategorie, deren Felder gerade verwaltet werden.
const [feldKat, setFeldKat] = useState(null);
+ // "" = alle, sonst "food"/"object": trennt Lebensmittel und Gegenstände.
+ const [typFilter, setTypFilter] = useState("");
function toggle(id) {
setCollapsed((alt) => {
@@ -101,7 +103,9 @@ export default function Categories() {
}
return false;
}
- const sichtbar = tree.filter((c) => !versteckt(c.id));
+ const sichtbar = tree.filter(
+ (c) => !versteckt(c.id) && (!typFilter || c.tracking === typFilter),
+ );
return (
@@ -117,6 +121,12 @@ export default function Categories() {
{error && {error}
}
+
+
+
+
+
+
diff --git a/web/src/pages/Products.jsx b/web/src/pages/Products.jsx
index 28784ac..da6c19d 100644
--- a/web/src/pages/Products.jsx
+++ b/web/src/pages/Products.jsx
@@ -25,6 +25,8 @@ export default function Products() {
const [categories, setCategories] = useState([]);
// "" = alle, "0" = ohne Kategorie, sonst die ID (Unterkategorien zaehlen mit).
const [categoryId, setCategoryId] = useState("");
+ // "" = alle, sonst "food"/"object": trennt Lebensmittel und Gegenstände.
+ const [typ, setTyp] = useState("");
const [error, setError] = useState(null);
async function load(cat = categoryId) {
@@ -46,12 +48,23 @@ export default function Products() {
load();
}
+ // Typ umschalten: passt der Kategoriefilter nicht mehr, zurücksetzen.
+ function changeTyp(neu) {
+ setTyp(neu);
+ if (neu && categoryId && categoryId !== "0") {
+ const cat = categories.find((c) => String(c.id) === String(categoryId));
+ if (cat && cat.tracking !== neu) { setCategoryId(""); load(""); }
+ }
+ }
+
+ const sichtbar = products.filter((p) => !typ || p.tracking === typ);
+
return (
Produkte
-
{products.length} Produkte im Katalog
+
{sichtbar.length} Produkte{typ ? (typ === "food" ? " · Lebensmittel" : " · Gegenstände") : " im Katalog"}
{isAdmin && (
Neues Produkt
@@ -60,6 +73,12 @@ export default function Products() {
{error &&
{error}
}
+
+
+
+
+
+