"use client"; // components/main/kabelueberwachung/kue705FO/modals/KueEinstellung.tsx import { useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import type { RootState } from "../../../../../redux/store"; import handleSave from "../handlers/handleSave"; import handleDisplayEinschalten from "../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"; interface Props { slot: number; showModal: boolean; onClose?: () => void; onModulNameChange?: (id: string) => void; } const memoryIntervalOptions = [ { value: 0, label: "Kein" }, { value: 1, label: "1 Minute" }, { value: 5, label: "5 Minuten" }, { value: 10, label: "10 Minuten" }, { value: 15, label: "15 Minuten" }, { value: 30, label: "30 Minuten" }, { value: 60, label: "60 Minuten" }, { value: 360, label: "6 Stunden" }, { value: 720, label: "12 Stunden" }, ]; 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, setShowConfirmModal] = useState(false); const [isUpdating, setIsUpdating] = useState(false); const [progress, setProgress] = useState(0); 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 (