"use client"; // LoopChartView.tsx import React, { useEffect, useRef } from "react"; import { Listbox } from "@headlessui/react"; import ReactModal from "react-modal"; import LoopMeasurementChart from "./LoopMeasurementChart"; import Report from "../IsoMeasurementChart/Report"; import LoopChartActionBar from "./LoopChartActionBar"; import { useSelector, useDispatch } from "react-redux"; import { AppDispatch, RootState } from "@/redux/store"; import { setChartOpen, setFullScreen, setSlotNumber, setVonDatum, setBisDatum, setSelectedMode, setSelectedSlotType, } from "@/redux/slices/kabelueberwachungChartSlice"; import { setChartTitle as setLoopChartTitle } from "@/redux/slices/loopChartTypeSlice"; import { resetBrushRange } from "@/redux/slices/brushSlice"; import { resetDateRange } from "@/redux/slices/dateRangePickerSlice"; interface LoopChartViewProps { isOpen: boolean; onClose: () => void; slotIndex: number; } function LoopChartView({ isOpen, onClose, slotIndex }: LoopChartViewProps) { const dispatch = useDispatch(); const chartTitle = useSelector( (state: RootState) => state.loopChartType.chartTitle ); const isFullScreen = useSelector( (state: RootState) => state.kabelueberwachungChartSlice.isFullScreen ); // slotNumber nicht direkt benötigt – wird intern über Redux genutzt // **Modal schließen + Redux-Status zurücksetzen** const handleClose = () => { const today = new Date(); const thirtyDaysAgo = new Date(); thirtyDaysAgo.setDate(today.getDate() - 30); const toISO = (date: Date) => date.toLocaleDateString("sv-SE"); dispatch(setVonDatum(toISO(thirtyDaysAgo))); dispatch(setBisDatum(toISO(today))); dispatch(resetDateRange()); dispatch(setSelectedMode("DIA0")); dispatch(setSelectedSlotType("schleifenwiderstand")); dispatch(setChartOpen(false)); dispatch(setFullScreen(false)); dispatch(resetBrushRange()); onClose(); }; const toggleFullScreen = () => dispatch(setFullScreen(!isFullScreen)); const actionBarRef = useRef<{ handleFetchData: () => void }>(null); useEffect(() => { if (isOpen) { const today = new Date(); const thirtyDaysAgo = new Date(); thirtyDaysAgo.setDate(today.getDate() - 30); const toISO = (date: Date) => date.toLocaleDateString("sv-SE"); dispatch(setSlotNumber(slotIndex)); dispatch(setVonDatum(toISO(thirtyDaysAgo))); dispatch(setBisDatum(toISO(today))); dispatch(setSelectedSlotType("schleifenwiderstand")); dispatch(setSelectedMode("DIA0")); const t = setTimeout(() => actionBarRef.current?.handleFetchData(), 120); return () => clearTimeout(t); } }, [isOpen, slotIndex, dispatch]); return (

Schleifenwiderstand

dispatch(setLoopChartTitle(value)) } >
{chartTitle} {(["Messkurve", "Meldungen"] as const).map((option) => ( `px-3 py-1.5 cursor-pointer rounded-sm m-0.5 ${ selected ? "dropdown-option-active" : active ? "dropdown-option-hover" : "" }` } > {option} ))}
{chartTitle === "Messkurve" ? ( ) : ( )}
); } export default LoopChartView;