"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"; import handleDisplayEinschalten from "./handlers/handleDisplayEinschalten"; import handleChange from "./handlers/handleChange"; import firmwareUpdate from "./handlers/firmwareUpdate"; import decodeToken from "../../../utils/decodeToken"; function KueModal({ showModal, onClose, slot, onModulNameChange }) { const isAdminLoggedIn = useSelector((state) => state.auth.isAdminLoggedIn); const [isAdmin, setIsAdmin] = useState(false); 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); const handleSaveWrapper = () => { handleSave({ ids, bezeichnungen, isolationsgrenzwerte, verzoegerung, untereSchleifenGrenzwerte, obereSchleifenGrenzwerte, schleifenintervall, originalValues, slot, dispatch, onModulNameChange, onClose, }); }; const handleDisplayEinschaltenWrapper = () => { handleDisplayEinschalten(slot); // Übergebe den Slot als Parameter }; //------------------------------------------------------------------------------------------------------------ // 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 //------------------------------------------------------------------------------------------------------------ useEffect(() => { const token = sessionStorage.getItem("token"); if (token) { const decoded = decodeToken(token); if (decoded && decoded.role.toLowerCase() === "admin") { setIsAdmin(true); } else { setIsAdmin(false); } } }, [showModal]); //------------------------------------------------------------------------------------------------------------ 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)} />
{/* Bedingte Anzeige der Firmware-Update-Schaltfläche */} {isAdminLoggedIn && ( )}
); } export default KueModal;