"use client"; // KVZChartView.tsx import React, { useEffect } from "react"; import DateRangePicker from "@/components/common/DateRangePicker"; import { getMessagesThunk } from "@/redux/thunks/getMessagesThunk"; import { setLoading } from "@/redux/slices/kabelueberwachungChartSlice"; import ReactModal from "react-modal"; import { useDispatch, useSelector } from "react-redux"; import { AppDispatch, RootState } from "@/redux/store"; import { setChartOpen, setFullScreen, setSlotNumber, setVonDatum, setBisDatum, setSelectedMode, setSelectedSlotType, } from "@/redux/slices/kabelueberwachungChartSlice"; import { resetBrushRange } from "@/redux/slices/brushSlice"; import FallSensors from "../../../../fall-detection-sensors/FallSensors"; import Report from "../IsoMeasurementChart/Report"; interface KVZChartViewProps { isOpen: boolean; onClose: () => void; slotIndex: number; } // Modal zur Anzeige der KVz Zustände (Sturzsensoren / Fall Detection LEDs) // Stil und Verhalten analog zu ISO / RSL / TDR Modals const KVZChartView: React.FC = ({ isOpen, onClose, slotIndex, }) => { const dispatch = useDispatch(); const { isFullScreen, slotNumber, vonDatum, bisDatum } = useSelector( (state: RootState) => state.kabelueberwachungChartSlice ); const { vonDatum: pickerVonDatum, bisDatum: pickerBisDatum } = useSelector( (state: RootState) => state.dateRangePicker ); // Beim Öffnen: Slot + Standard-Datumsbereich setzen (30 Tage) – analog zu anderen Modals useEffect(() => { if (!isOpen) return; dispatch(setSlotNumber(slotIndex)); const today = new Date(); const thirtyDaysAgo = new Date(); thirtyDaysAgo.setDate(today.getDate() - 30); const toISO = (d: Date) => d.toLocaleDateString("sv-SE"); dispatch(setVonDatum(toISO(thirtyDaysAgo))); dispatch(setBisDatum(toISO(today))); }, [isOpen, slotIndex, dispatch]); const handleClose = () => { // Reset auf Default (wie andere Modals es tun) const today = new Date(); const thirtyDaysAgo = new Date(); thirtyDaysAgo.setDate(today.getDate() - 30); const toISO = (d: Date) => d.toLocaleDateString("sv-SE"); dispatch(setVonDatum(toISO(thirtyDaysAgo))); dispatch(setBisDatum(toISO(today))); dispatch(setSelectedMode("DIA1")); dispatch(setSelectedSlotType("isolationswiderstand")); dispatch(setChartOpen(false)); dispatch(setFullScreen(false)); dispatch(resetBrushRange()); onClose(); }; const toggleFullScreen = () => dispatch(setFullScreen(!isFullScreen)); const handleFetchMessages = async () => { const fromDate = pickerVonDatum ?? vonDatum; const toDate = pickerBisDatum ?? bisDatum; try { dispatch(setLoading(true)); await dispatch(getMessagesThunk({ fromDate, toDate })).unwrap(); } catch (e) { console.error("Fehler beim Laden der KVZ Meldungen", e); } finally { dispatch(setLoading(false)); } }; return (

KVZ Zustände & Meldungen

{/* Toolbar */}
KÜ {slotNumber !== null ? slotNumber + 1 : "-"}
); }; export default KVZChartView;