import { useState } from "react"; import { apiRequest } from "../../api/client"; import type { Bereich, Kategorie, Objekttyp } from "../../api/types"; interface Props { bereiche: Bereich[]; kategorien: Kategorie[]; objekttypen: Objekttyp[]; onGeaendert: () => Promise; onFehler: (text: string) => void; } export function ObjekttypSection({ bereiche, kategorien, objekttypen, onGeaendert, onFehler }: Props) { const [name, setName] = useState(""); const [bereichId, setBereichId] = useState(""); const [kategorieId, setKategorieId] = useState(""); const [wirdAngelegt, setWirdAngelegt] = useState(false); const [bearbeiteteId, setBearbeiteteId] = useState(null); const [bearbeitungsName, setBearbeitungsName] = useState(""); const [istZugfahrzeug, setIstZugfahrzeug] = useState(false); const [bearbeitungsZugfahrzeug, setBearbeitungsZugfahrzeug] = useState(false); function bearbeiten(o: Objekttyp) { setBearbeiteteId(o.id); setBearbeitungsName(o.name); setBearbeitungsZugfahrzeug(o.ist_zugfahrzeug); } async function speichern(id: number) { try { await apiRequest(`/objekttypen/${id}`, { method: "PATCH", body: { name: bearbeitungsName, ist_zugfahrzeug: bearbeitungsZugfahrzeug }, }); setBearbeiteteId(null); await onGeaendert(); } catch { onFehler("Objekttyp konnte nicht geändert werden."); } } async function anlegen() { if (bereichId === "") { onFehler("Bereich auswählen."); return; } setWirdAngelegt(true); try { await apiRequest("/objekttypen", { method: "POST", body: { name, bereich_id: bereichId, kategorie_id: kategorieId || null, ist_zugfahrzeug: istZugfahrzeug }, }); setName(""); setIstZugfahrzeug(false); await onGeaendert(); } catch { onFehler("Objekttyp konnte nicht angelegt werden."); } finally { setWirdAngelegt(false); } } return (

Objekttyp anlegen

{bereiche.length === 0 ? (

Erst einen Bereich anlegen.

) : (
setName(e.target.value)} placeholder="Name" />
)} {objekttypen.length > 0 && (
    {objekttypen.map((o) => (
  • {bearbeiteteId === o.id ? (
    setBearbeitungsName(e.target.value)} />
    ) : ( <> {o.name} {o.ist_zugfahrzeug && (Zugfahrzeug)} )}
  • ))}
)}
); }