import { useEffect, useState } from "react"; import { api } from "../api"; import { useConfirm } from "../confirm"; import Icon from "../components/Icon"; import { fmt } from "../units"; const KIND_LABEL = { count: "Anzahl (Stück)", weight: "Gewicht (Basis: Gramm)", volume: "Volumen (Basis: Milliliter)" }; export default function Units() { const confirm = useConfirm(); const [units, setUnits] = useState([]); const [form, setForm] = useState({ name: "", kind: "weight", factor: "" }); const [error, setError] = useState(null); async function load() { try { setUnits(await api.listUnits()); } catch (err) { setError(err.message); } } useEffect(() => { load(); }, []); async function add(e) { e.preventDefault(); setError(null); try { await api.createUnit({ name: form.name, kind: form.kind, factor: Number(form.factor) }); setForm({ name: "", kind: form.kind, factor: "" }); load(); } catch (err) { setError(err.message); } } async function remove(u) { const ok = await confirm({ title: `Einheit „${u.name}“ löschen?`, message: "Produkte, die diese Einheit nutzen, fallen auf ihre Basiseinheit zurück.", confirmLabel: "Löschen", danger: true, }); if (!ok) return; try { await api.deleteUnit(u.id); load(); } catch (err) { setError(err.message); } } const baseUnitOfKind = { count: "Stück", weight: "Gramm", volume: "Milliliter" }; return (
| Name | Art | Faktor | |
|---|---|---|---|
| {u.name} {u.is_builtin && eingebaut} | {KIND_LABEL[u.kind] || u.kind} | {fmt(u.factor)} {baseUnitOfKind[u.kind]} | {!u.is_builtin && ( )} |