"use client"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { EINGABE_KLASSE, Feld } from "@/components/formular"; import { Knopf } from "@/components/knopf"; import { Status } from "@/components/status"; import { apiAufruf, ApiFehler } from "@/lib/api-client"; type Knoten = { name: string; storages: string[]; bridges: string[] }; export function TemplateBauen({ server, distributionen, knoten, faehigkeit, profile, }: { server: string; distributionen: Array<{ id: string; name: string; familie: string }>; profile: Array<{ id: string; name: string; requires: string[]; familien: string[] }>; knoten: Knoten[]; faehigkeit: { weg: "api" | "ssh" | "nicht_moeglich"; grund: string }; }) { const router = useRouter(); const [werte, setWerte] = useState({ distribution: distributionen.find((d) => d.id === "debian-13")?.id ?? distributionen[0]?.id ?? "", knoten: knoten[0]?.name ?? "", storage: knoten[0]?.storages[0] ?? "", bridge: knoten[0]?.bridges.includes("vmbr0") ? "vmbr0" : (knoten[0]?.bridges[0] ?? ""), profile: [] as string[], }); const [fehler, setFehler] = useState<{ text: string; hinweis?: string } | null>(null); const [sendet, setSendet] = useState(false); const aktuell = knoten.find((k) => k.name === werte.knoten); async function bauen(ereignis: React.FormEvent) { ereignis.preventDefault(); setSendet(true); setFehler(null); try { const { kurzId } = await apiAufruf<{ kurzId: string }>( "POST", `/api/v1/server/${server}/templates`, werte, ); router.push(`/auftraege/${kurzId}`); } catch (ursache) { setFehler( ursache instanceof ApiFehler ? { text: ursache.message, hinweis: ursache.hinweis } : { text: "Unerwarteter Fehler." }, ); setSendet(false); } } return (
); }