"use client"; // components/modales/KueModal.jsx import ReactModal from "react-modal"; import { useState, useEffect } from "react"; import { useSelector, useDispatch } from "react-redux"; import { updateValues } from "../../../store/variablesSlice"; import "bootstrap-icons/font/bootstrap-icons.css"; // Import Bootstrap Icons import { handleSave } from "./handlers/handleSave"; function KueModal({ showModal, onClose, slot, onModulNameChange }) { const dispatch = useDispatch(); 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, nur einmal beim Öffnen des Modals 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]); // nur von showModal abhängig ansonsten wird alle 10 Sekunden die Werte zurückgesetzt in Modal // 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 handleSaveWrapper = () => { handleSave({ ids, bezeichnungen, isolationsgrenzwerte, verzoegerung, untereSchleifenGrenzwerte, obereSchleifenGrenzwerte, schleifenintervall, originalValues, slot, dispatch, onModulNameChange, onClose, }); }; const handleDisplayEinschalten = () => { const url = `/CPL?/kabelueberwachung.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;