// components/modales/KueModal.jsx import ReactModal from "react-modal"; import { useState, useEffect } from "react"; function KueModal({ showModal, onClose, slot, onModulNameChange }) { const [ids, setIds] = useState(Array(32).fill("---")); // IDs für jedes Modul const [bezeichnungen, setBezeichnungen] = useState(Array(32).fill("---")); const [isolationsgrenzwerte, setIsolationsgrenzwerte] = useState( Array(32).fill(10.0) ); // Default 10.0 MOhm const [verzoegerung, setVerzoegerung] = useState(Array(32).fill(1.0)); // Default Verzögerung 1 Sekunde const [untereSchleifenGrenzwerte, setUntereSchleifenGrenzwerte] = useState( Array(32).fill(0.1) ); // kOhm const [obereSchleifenGrenzwerte, setObereSchleifenGrenzwerte] = useState( Array(32).fill(1.0) ); // kOhm const [schleifenintervall, setSchleifenintervall] = useState( Array(32).fill(24) ); // Default 24 Stunden useEffect(() => { // Initialisierung mit Werten aus dem globalen `window`-Objekt if (window.kueID && Array.isArray(window.kueID)) { setIds(window.kueID.map((id) => id.trim() || "---")); } if (window.kueName && Array.isArray(window.kueName)) { setBezeichnungen(window.kueName.map((name) => name.trim() || "---")); } if (window.kueLimit1 && Array.isArray(window.kueLimit1)) { setIsolationsgrenzwerte(window.kueLimit1); } if (window.kueDelay && Array.isArray(window.kueDelay)) { setVerzoegerung(window.kueDelay); } if (window.kueLowerLimit && Array.isArray(window.kueLowerLimit)) { setUntereSchleifenGrenzwerte(window.kueLowerLimit); } if (window.kueUpperLimit && Array.isArray(window.kueUpperLimit)) { setObereSchleifenGrenzwerte(window.kueUpperLimit); } if ( window.kueSchleifenintervall && Array.isArray(window.kueSchleifenintervall) ) { setSchleifenintervall(window.kueSchleifenintervall); } }, []); // Funktionen zur Änderung der Werte const handleChange = (setter, e, slot) => { const value = e.target.value; setter((prev) => { const updated = [...prev]; updated[slot] = value; return updated; }); }; const handleSave = () => { const newId = ids[slot]; const newBezeichnung = bezeichnungen[slot]; const newIsolationsGrenzwert = isolationsgrenzwerte[slot]; const newVerzoegerung = verzoegerung[slot]; const newUntererSchleifenGrenzwert = untereSchleifenGrenzwerte[slot]; const newObererSchleifenGrenzwert = obereSchleifenGrenzwerte[slot]; const newSchleifenintervall = schleifenintervall[slot]; const url = `${ process.env.NEXT_PUBLIC_API_BASE_URL }/cpl?Service/kueDetail.HTML&slot=${slot}&KID${slot}=${encodeURIComponent( newId )}&KIA${slot}=${encodeURIComponent( newBezeichnung )}&KL_${slot}=${newIsolationsGrenzwert}&KD_${slot}=1&KR_${slot}=${newUntererSchleifenGrenzwert}&KRI${slot}=${newSchleifenintervall}`; // Fetch-Aufruf, um die neuen Werte zu senden fetch(url, { method: "GET" }) .then((response) => { if (response.ok) { alert("Daten erfolgreich gespeichert!"); onModulNameChange(newBezeichnung); // Weitergabe der Änderung } else { alert("Fehler beim Speichern der Daten!"); } }) .catch((error) => { console.error("Fehler:", error); alert("Fehler beim Senden der Daten!"); }); // Schließe das Modal nach dem Speichern onClose(); }; const handleDisplayEinschalten = () => { const url = `${process.env.NEXT_PUBLIC_API_BASE_URL}/cpl?Service/kueDetail.HTML&KSD${slot}=1`; fetch(url, { method: "GET" }) .then((response) => { if (response.ok) { alert(`Display für Slot ${slot + 1} erfolgreich eingeschaltet!`); } else { alert("Fehler beim Einschalten des Displays!"); } }) .catch((error) => { console.error("Fehler:", error); alert("Fehler beim Einschalten des Displays!"); }); }; return ( {/* Modal Header */}

KUE Einstellung - Slot {slot + 1}

{/* ID und Modulname anzeigen */}
handleChange(setIds, e, slot)} />
handleChange(setBezeichnungen, e, slot)} />
{/* Modal Body */}

Isolationsmessung

Grenzwert (MOhm) Verzögerung (sek)
handleChange(setIsolationsgrenzwerte, e, slot) } /> handleChange(setVerzoegerung, e, slot)} />

Schleifenmessung

Unterer Grenzwert (kOhm) Oberer Grenzwert (kOhm) Schleifenintervall (h)
handleChange(setUntereSchleifenGrenzwerte, e, slot) } /> handleChange(setObereSchleifenGrenzwerte, e, slot) } /> handleChange(setSchleifenintervall, e, slot)} />
{/* Display Einschalten Button */}
); } export default KueModal;