"use client"; // components/modales/KueModal.jsx import ReactModal from "react-modal"; import { useState, useEffect } from "react"; import { useSelector } from "react-redux"; import "bootstrap-icons/font/bootstrap-icons.css"; // Import Bootstrap Icons function KueModal({ showModal, onClose, slot, onModulNameChange }) { const [ids, setIds] = useState(Array(32).fill("---")); const [bezeichnungen, setBezeichnungen] = useState(Array(32).fill("---")); const [isolationsgrenzwerte, setIsolationsgrenzwerte] = useState( Array(32).fill(10.0) ); const [verzoegerung, setVerzoegerung] = useState(Array(32).fill(1.0)); const [untereSchleifenGrenzwerte, setUntereSchleifenGrenzwerte] = useState( Array(32).fill(0.1) ); const [obereSchleifenGrenzwerte, setObereSchleifenGrenzwerte] = useState( Array(32).fill(1.0) ); const [schleifenintervall, setSchleifenintervall] = useState( Array(32).fill(24) ); const [originalValues, setOriginalValues] = useState({}); // Werte aus dem Redux-Store abrufen const { kueID, kueLimit1, kueDelay1, kueLimit2Low, kueLimit2High, kueLoopInterval, } = useSelector((state) => state.variables); // Initiale Werte festlegen, wenn das Modal geöffnet wird useEffect(() => { if (showModal) { setIds(kueID ? kueID.map((id) => id.trim() || "---") : ids); setBezeichnungen( kueID ? kueID.map((name) => name.trim() || "---") : bezeichnungen ); setIsolationsgrenzwerte(kueLimit1 || isolationsgrenzwerte); setVerzoegerung(kueDelay1 || verzoegerung); setUntereSchleifenGrenzwerte(kueLimit2Low || untereSchleifenGrenzwerte); setObereSchleifenGrenzwerte(kueLimit2High || obereSchleifenGrenzwerte); setSchleifenintervall(kueLoopInterval || schleifenintervall); setOriginalValues({ ids: [...ids], bezeichnungen: [...bezeichnungen], isolationsgrenzwerte: [...isolationsgrenzwerte], verzoegerung: [...verzoegerung], untereSchleifenGrenzwerte: [...untereSchleifenGrenzwerte], obereSchleifenGrenzwerte: [...obereSchleifenGrenzwerte], schleifenintervall: [...schleifenintervall], }); } }, [ showModal, kueID, kueLimit1, kueDelay1, kueLimit2Low, kueLimit2High, kueLoopInterval, ]); // 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 changes = {}; // Überprüfen, ob Änderungen gegenüber den Originalwerten vorliegen if (ids[slot] !== originalValues.ids[slot]) { changes.KID = ids[slot]; } if (bezeichnungen[slot] !== originalValues.bezeichnungen[slot]) { changes.KIA = bezeichnungen[slot]; } if ( isolationsgrenzwerte[slot] !== originalValues.isolationsgrenzwerte[slot] ) { changes.KL_ = isolationsgrenzwerte[slot]; } if (verzoegerung[slot] !== originalValues.verzoegerung[slot]) { changes.KD_ = verzoegerung[slot]; } if ( untereSchleifenGrenzwerte[slot] !== originalValues.untereSchleifenGrenzwerte[slot] ) { changes.KR_ = untereSchleifenGrenzwerte[slot]; } if ( obereSchleifenGrenzwerte[slot] !== originalValues.obereSchleifenGrenzwerte[slot] ) { changes.KRO_ = obereSchleifenGrenzwerte[slot]; } if (schleifenintervall[slot] !== originalValues.schleifenintervall[slot]) { changes.KRI = schleifenintervall[slot]; } if (Object.keys(changes).length > 0) { let url = `/cpl?/CPL/SERVICE/kueDetail.HTML&slot=${slot}`; Object.keys(changes).forEach((paramKey) => { url += `&${paramKey}${slot}=${encodeURIComponent(changes[paramKey])}`; }); fetch(url, { method: "GET" }) .then((response) => { if (response.ok) { alert("Daten erfolgreich gespeichert!"); onModulNameChange(ids[slot]); } else { alert("Fehler beim Speichern der Daten!"); } }) .catch((error) => { console.error("Fehler:", error); alert("Fehler beim Senden der Daten!"); }); } else { alert("Keine Änderungen vorgenommen."); } onClose(); }; const handleDisplayEinschalten = () => { const url = `/CPL?/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 (

KUE Einstellung - Slot {slot + 1}

handleChange(setIds, e, slot)} />

Isolationsmessung

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

Schleifenmessung

Grenzwert (kOhm) Schleifenintervall (h)
handleChange(setUntereSchleifenGrenzwerte, e, slot) } /> handleChange(setSchleifenintervall, e, slot)} />
); } export default KueModal;