"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 setzen (damit konsistent zu anderen Modals) useEffect(() => { if (isOpen) { dispatch(setSlotNumber(slotIndex)); } }, [isOpen, slotIndex, dispatch]); const handleClose = () => { const today = new Date(); const thirtyDaysAgo = new Date(); thirtyDaysAgo.setDate(today.getDate() - 30); const toISO = (d: Date) => d.toLocaleDateString("sv-SE"); // Zurücksetzen – entspricht Verhalten der anderen Modals 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 (err) { console.error("❌ Fehler beim Laden der Meldungen (KVZ)", err); } finally { dispatch(setLoading(false)); } }; return ( {/* Action Buttons */}
{/* Content */}

KVz Zustände & Meldungen

{/* Toolbar mit KÜ + DateRangePicker + Sensoren (analog zu anderen Modalen) */}
KÜ {slotNumber !== null ? slotNumber + 1 : "-"}
{/* Meldungen Bereich */}
); }; export default KVZChartView;