"use client"; // components/main/kabelueberwachung/kue705FO/modals/KueEinstellung.tsx import { useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import type { RootState, AppDispatch } from "@/redux/store"; import handleSave from "../handlers/handleSave"; import handleDisplayEinschalten from "@/components/main/kabelueberwachung/kue705FO/handlers/handleDisplayEinschalten"; import firmwareUpdate from "../handlers/firmwareUpdate"; import ProgressModal from "@/components/main/settingsPageComponents/modals/ProgressModal"; import { toast } from "react-toastify"; import ConfirmModal from "@/components/common/ConfirmModal"; import { openConfirmModal, closeConfirmModal, } from "@/redux/slices/confirmModalSlice"; import { startFirmwareUpdateThunk } from "@/redux/thunks/startFirmwareUpdateThunk"; interface Props { slot: number; showModal: boolean; onClose?: () => void; onModulNameChange?: (id: string) => void; } export default function KueEinstellung({ slot, onClose = () => {}, onModulNameChange, }: Props) { const dispatch = useDispatch(); const { kueID, kueName, kueLimit1, kueDelay1, kueLimit2Low, kueLoopInterval, memoryInterval, } = useSelector((state: RootState) => state.kueDataSlice); const reduxAdmin = useSelector( (state: RootState) => state.authSlice.isAdminLoggedIn ); const [isAdminLoggedIn] = useState(() => reduxAdmin); const showConfirmModal = useSelector( (state: RootState) => state.confirmModal.open ); const isUpdating = useSelector( (state: RootState) => state.firmwareProgress.isUpdating ); const progress = useSelector( (state: RootState) => state.firmwareProgress.progress ); const [formData, setFormData] = useState(() => { if (typeof window !== "undefined") { const cache = window.__kueCache?.[`slot_${slot}`]; if (cache) return cache; } return { kueID: kueID[slot] || "", kueName: kueName[slot] || "", limit1: kueLimit1[slot]?.toString() ?? "", delay1: kueDelay1[slot]?.toString() ?? "", limit2Low: kueLimit2Low[slot]?.toString() ?? "", loopInterval: kueLoopInterval[slot]?.toString() ?? "", memoryInterval: memoryInterval[slot]?.toString() ?? "", }; }); const handleChange = (key: keyof typeof formData, value: string) => { const updated = { ...formData, [key]: value }; setFormData(updated); if (typeof window !== "undefined") { window.__kueCache = window.__kueCache || {}; window.__kueCache[`slot_${slot}`] = updated; } }; const handleSaveWrapper = async () => { const updatedKueName = [...kueName]; updatedKueName[slot] = formData.kueName; const updatedLimit1 = [...kueLimit1]; updatedLimit1[slot] = Number(formData.limit1); const updatedDelay1 = [...kueDelay1]; updatedDelay1[slot] = Number(formData.delay1); const updatedLimit2Low = [...kueLimit2Low]; updatedLimit2Low[slot] = Number(formData.limit2Low); const updatedLoopInterval = [...kueLoopInterval]; updatedLoopInterval[slot] = Number(formData.loopInterval); const updatedMemoryInterval = [...memoryInterval]; updatedMemoryInterval[slot] = Number(formData.memoryInterval); const newData = { kueID: kueID[slot], kueName: updatedKueName[slot], limit1: updatedLimit1[slot].toString(), delay1: updatedDelay1[slot].toString(), limit2Low: updatedLimit2Low[slot].toString(), loopInterval: updatedLoopInterval[slot].toString(), memoryInterval: updatedMemoryInterval[slot].toString(), }; setFormData(newData); if (typeof window !== "undefined") { window.__kueCache![`slot_${slot}`] = newData; } await handleSave({ slot, ids: kueID, kueName: updatedKueName, isolationsgrenzwerte: updatedLimit1, verzoegerung: updatedDelay1, untereSchleifenGrenzwerte: updatedLimit2Low, obereSchleifenGrenzwerte: updatedLimit2Low, schleifenintervall: updatedLoopInterval, speicherintervall: updatedMemoryInterval, originalValues: { kueID, kueName, isolationsgrenzwerte: kueLimit1, verzoegerung: kueDelay1, untereSchleifenGrenzwerte: kueLimit2Low, obereSchleifenGrenzwerte: kueLimit2Low, schleifenintervall: kueLoopInterval, speicherintervall: memoryInterval, }, dispatch, onModulNameChange: onModulNameChange ?? (() => {}), onClose, }); }; return (
{/* Kabelbezeichnung */}
{/* Kabelname */}
handleChange("kueName", e.target.value)} />
{/* Speicherintervall */} {/* Speicherintervall */} {/* Speicherintervall */}
handleChange("memoryInterval", e.target.value)} /> Minuten
{/* Isolationsmessung */}

Isolationsmessung

handleChange("limit1", e.target.value)} /> MOhm
handleChange("delay1", e.target.value)} /> Sekunden
{/* Schleifenmessung */}

Schleifenmessung

handleChange("limit2Low", e.target.value)} /> kOhm
handleChange("loopInterval", e.target.value)} /> Stunden
{isAdminLoggedIn && ( <> {/* Konfiguration sichern */} {/* Konfiguration zurücksichern */} )} {showConfirmModal && ( dispatch(closeConfirmModal())} onConfirm={async () => { dispatch(closeConfirmModal()); toast.info("Firmware-Update gestartet. Bitte warten..."); dispatch(startFirmwareUpdateThunk(slot)); // Start Redux-Prozess try { await firmwareUpdate(slot); } catch (err) { console.error("Firmware-Update-Fehler:", err); toast.error("❌ Fehler beim Firmwareupdate"); } }} /> )} {isUpdating && ( )} {" "}
); }