"use client"; // /components/main/einausgaenge/modals/DigitalOutputsModal.tsx import React, { useState, useEffect } from "react"; import { useSelector } from "react-redux"; import { RootState } from "../../../../redux/store"; export default function DigitalOutputsModal({ selectedOutput, closeOutputModal, isOpen, }: { selectedOutput: any; closeOutputModal: () => void; isOpen: boolean; }) { const allOutputs = useSelector( (state: RootState) => state.digitalOutputsSlice.outputs ); const [label, setLabel] = useState(""); const [status, setStatus] = useState(false); const [timer, setTimer] = useState(0); const [isSaving, setIsSaving] = useState(false); const [errorMsg, setErrorMsg] = useState(""); // ✅ Zustand neu setzen, wenn Modal geöffnet oder anderer Ausgang ausgewählt wird useEffect(() => { if (isOpen && selectedOutput) { setLabel(selectedOutput.label || ""); setStatus(selectedOutput.status || false); setTimer(0); setErrorMsg(""); } }, [isOpen, selectedOutput]); if (!isOpen || !selectedOutput) return null; const handleSave = async () => { setIsSaving(true); setErrorMsg(""); const updatedOutputs = allOutputs.map((output) => output.id === selectedOutput.id ? { ...output, label: label.trim(), status } : output ); try { const res = await fetch("/api/cpl/updateDigitalOutputs", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ outputs: updatedOutputs }), }); if (!res.ok) { const err = await res.json(); setErrorMsg(err?.error || "Fehler beim Speichern."); } else { console.log( "✅ Status & Label gespeichert für Ausgang", selectedOutput.id ); closeOutputModal(); } } catch (err) { setErrorMsg("❌ Netzwerkfehler beim Speichern."); } finally { setIsSaving(false); } }; return (

Einstellungen Schaltausgang {selectedOutput.id}

Bezeichnung:
setLabel(e.target.value)} className="w-full border border-gray-300 rounded px-3 py-2" placeholder="z. B. Licht Relais 1" />
{errorMsg &&

{errorMsg}

}
); }