"use client"; // KueEinstellung.tsx – komplett angepasst mit window.__kueCache zum Schutz vor Remount-Reset import { useEffect, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import type { RootState } from "../../../../../redux/store"; import { setKueData } from "../../../../../redux/slices/kueDataSlice"; import handleDisplayEinschalten from "../handlers/handleDisplayEinschalten"; import firmwareUpdate from "../handlers/firmwareUpdate"; import { useAdminAuth } from "../../../settingsPageComponents/hooks/useAdminAuth"; 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, showModal, onClose = () => {}, }: Props) { const dispatch = useDispatch(); const { kueID, kueLimit1, kueDelay1, kueLimit2Low, kueLoopInterval, memoryInterval, } = useSelector((state: RootState) => state.kueDataSlice); const { isAdminLoggedIn } = useAdminAuth(true); const formCacheKey = `slot_${slot}`; if (typeof window !== "undefined") { window.__kueCache = window.__kueCache || {}; } const cached = typeof window !== "undefined" ? window.__kueCache?.[formCacheKey] : null; const [formData, setFormData] = useState(() => { if (cached) return cached; return { name: kueID[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[formCacheKey] = updated; } }; const handleSaveWrapper = () => { const updatedKueID = [...kueID]; updatedKueID[slot] = formData.name; 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); dispatch( setKueData({ kueID: updatedKueID, kueLimit1: updatedLimit1, kueDelay1: updatedDelay1, kueLimit2Low: updatedLimit2Low, kueLoopInterval: updatedLoopInterval, memoryInterval: updatedMemoryInterval, }) ); if (typeof window !== "undefined") { delete window.__kueCache[formCacheKey]; } onClose(); }; return (
handleChange("name", e.target.value)} />

Isolationsmessung

Grenzwert (MOhm) Verzögerung (sek)
handleChange("limit1", e.target.value)} /> handleChange("delay1", e.target.value)} />

Schleifenmessung

Grenzwert (kOhm) Schleifenintervall (h)
handleChange("limit2Low", e.target.value)} /> handleChange("loopInterval", e.target.value)} />
{isAdminLoggedIn && ( )}
); }