import { useState } from "react"; import { apiRequest } from "../../api/client"; import type { Material } from "../../api/types"; const MATERIALTYPEN = [ { value: "standard", label: "Standard" }, { value: "ablauf_charge", label: "Ablauf/Charge" }, { value: "geraet_sn", label: "Gerät mit Seriennummer" }, ]; const LEERES_FORMULAR = { name: "", artikelnummer: "", einheit: "Stück", materialtyp: "standard", }; interface Props { materialien: Material[]; onGeaendert: () => Promise; onFehler: (text: string) => void; } export function MaterialSection({ materialien, onGeaendert, onFehler }: Props) { const [formular, setFormular] = useState(LEERES_FORMULAR); const [bearbeiteteId, setBearbeiteteId] = useState(null); const [wirdGespeichert, setWirdGespeichert] = useState(false); const [suche, setSuche] = useState(""); function bearbeiten(material: Material) { setBearbeiteteId(material.id); setFormular({ name: material.name, artikelnummer: material.artikelnummer ?? "", einheit: material.einheit, materialtyp: material.materialtyp, }); } function zuruecksetzen() { setBearbeiteteId(null); setFormular(LEERES_FORMULAR); } async function speichern() { setWirdGespeichert(true); const body = { name: formular.name, artikelnummer: formular.artikelnummer || null, einheit: formular.einheit, materialtyp: formular.materialtyp, }; try { if (bearbeiteteId !== null) { await apiRequest(`/materialien/${bearbeiteteId}`, { method: "PATCH", body }); } else { await apiRequest("/materialien", { method: "POST", body }); } zuruecksetzen(); await onGeaendert(); } catch { onFehler("Material konnte nicht gespeichert werden."); } finally { setWirdGespeichert(false); } } const sucheNormalisiert = suche.trim().toLowerCase(); const gefiltert = sucheNormalisiert ? materialien.filter( (m) => m.name.toLowerCase().includes(sucheNormalisiert) || (m.artikelnummer ?? "").toLowerCase().includes(sucheNormalisiert) ) : materialien; return (

Material

{bearbeiteteId !== null ? "Material bearbeiten" : "Material anlegen"}

setFormular({ ...formular, name: e.target.value })} />
setFormular({ ...formular, artikelnummer: e.target.value })} />
setFormular({ ...formular, einheit: e.target.value })} />
{bearbeiteteId !== null && ( )}
setSuche(e.target.value)} /> {gefiltert.length === 0 &&

Keine Treffer.

} {gefiltert.length > 0 && (
    {gefiltert.map((m) => (
  • {m.name} ({m.einheit}) {m.artikelnummer && · {m.artikelnummer}} {m.materialtyp !== "standard" && ( {m.materialtyp} )}
  • ))}
)}
); }