"use client"; // /components/modules/kue705FO/charts/ChartSwitcher.tsx import React, { useState, useEffect } from "react"; import ReactModal from "react-modal"; import LoopChartActionBar from "./LoopMeasurementChart/LoopChartActionBar"; import TDRChartActionBar from "./TDRChart/TDRChartActionBar"; import LoopMeasurementChart from "./LoopMeasurementChart/LoopMeasurementChart"; import TDRChart from "./TDRChart/TDRChart"; import { useSelector, useDispatch } from "react-redux"; import { AppDispatch } from "../../../../../redux/store"; import { RootState } from "../../../../../redux/store"; import { setChartOpen, setFullScreen, } from "../../../../../redux/slices/kabelueberwachungChartSlice"; import { setSelectedSlot, setSelectedChartType, } from "../../../../../redux/slices/tdrChartSlice"; import { resetBrushRange } from "../../../../../redux/slices/brushSlice"; import { fetchTDMDataBySlotThunk } from "../../../../../redux/thunks/getTDMListBySlotThunk"; import { useLoopChartLoader } from "./LoopMeasurementChart/LoopChartActionBar"; import { setVonDatum, setBisDatum, setSelectedMode, setSelectedSlotType, } from "../../../../../redux/slices/kabelueberwachungChartSlice"; interface ChartSwitcherProps { isOpen: boolean; onClose: () => void; slotIndex: number; } const ChartSwitcher: React.FC = ({ isOpen, onClose, slotIndex, }) => { const dispatch = useDispatch(); const chartTitle = useSelector( (state: RootState) => state.loopChartType.chartTitle ); // **Redux-States für aktive Messkurve (TDR oder Schleife)** const activeMode = useSelector( (state: RootState) => state.kueChartModeSlice.activeMode ); const isFullScreen = useSelector( (state: RootState) => state.kabelueberwachungChartSlice.isFullScreen ); // **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"); // Reset Datum dispatch(setVonDatum(toISO(thirtyDaysAgo))); dispatch(setBisDatum(toISO(today))); // Reset Dropdowns dispatch(setSelectedMode("DIA1")); dispatch(setSelectedSlotType("isolationswiderstand")); // Sonstiges Reset dispatch(setChartOpen(false)); dispatch(setFullScreen(false)); dispatch(resetBrushRange()); onClose(); }; // **Vollbildmodus umschalten** const toggleFullScreen = () => { dispatch(setFullScreen(!isFullScreen)); }; // **Slot und Messkurve setzen** const setChartType = (chartType: "TDR" | "Schleife") => { dispatch(setSelectedSlot(slotIndex)); dispatch(setSelectedChartType(chartType)); }; //------------------------------------- const { loadLoopChartData } = useLoopChartLoader(); useEffect(() => { if (isOpen && activeMode === "Schleife") { loadLoopChartData(); } }, [isOpen, activeMode]); //------------------------------------- const slotNumber = useSelector( (state: RootState) => state.kabelueberwachungChartSlice.slotNumber ); // immmer beim öffnen das Modal die letzte 30 Tage anzeigen useEffect(() => { if (isOpen && activeMode === "Schleife" && slotNumber !== null) { const today = new Date(); const thirtyDaysAgo = new Date(); thirtyDaysAgo.setDate(today.getDate() - 30); const toISO = (date: Date) => date.toLocaleDateString("sv-SE"); // YYYY-MM-DD dispatch(setVonDatum(toISO(thirtyDaysAgo))); dispatch(setBisDatum(toISO(today))); // Warten, bis Redux gesetzt ist → dann Daten laden setTimeout(() => { loadLoopChartData(); }, 10); // kleiner Delay, damit Redux-State sicher aktualisiert ist } }, [isOpen, activeMode, slotNumber]); //----------------------------------------- return ( {/* Action-Buttons */}
{/* Fullscreen-Button */} {/* Schließen-Button */}
{/* Chart-Container */}
{activeMode === "Schleife" ? ( <>

{chartTitle}

) : ( <>

TDR-Messung

)}
); }; export default ChartSwitcher;