"use client"; // components/main/kabelueberwachung/kue705FO/Charts/LoopMeasurementChart/LoopChartActionBar.tsx import React, { useEffect } from "react"; import DateRangePicker from "../DateRangePicker"; import { useDispatch, useSelector } from "react-redux"; import { RootState } from "../../../../../../redux/store"; import { setVonDatum, setBisDatum, setChartData, setSelectedMode, setSelectedSlotType, setChartOpen, } from "../../../../../../redux/slices/kabelueberwachungChartSlice"; const LoopChartActionBar: React.FC = () => { const dispatch = useDispatch(); // Redux-Status abrufen const { vonDatum, bisDatum, selectedMode, selectedSlotType, isChartOpen } = useSelector((state: RootState) => state.kabelueberwachungChart); /** * API-URL-Erstellung für Entwicklung und Produktion */ const getApiUrl = (mode: "DIA0" | "DIA1" | "DIA2", type: number) => { return process.env.NODE_ENV === "development" ? `/CPLmockData/kuesChartData/${mode}_${type}.json` : `/CPL?seite.ACP&${mode}=${vonDatum};${bisDatum};${type}`; }; /** * Funktion zum Laden der Messwerte */ const handleFetchData = async () => { const type = selectedSlotType === "schleifenwiderstand" ? 4 : 3; try { const apiUrl = getApiUrl(selectedMode, type); console.log("Mock JSON laden von:", apiUrl); const response = await fetch(apiUrl); if (!response.ok) throw new Error(`Fehler: ${response.status}`); const jsonData = await response.json(); console.log("Geladene Daten:", jsonData); if (Array.isArray(jsonData)) { dispatch(setChartData(jsonData)); // Falls das Chart zum ersten Mal geöffnet wird, setze vonDatum & bisDatum if (!isChartOpen && jsonData.length > 0) { const firstDate = new Date(jsonData[jsonData.length - 1].t); const lastDate = new Date(jsonData[0].t); dispatch(setVonDatum(firstDate.toISOString().split("T")[0])); dispatch(setBisDatum(lastDate.toISOString().split("T")[0])); } } else { console.error("Erwartetes Array, aber erhalten:", jsonData); } } catch (error) { console.error("Fehler beim Laden der Mock-Daten:", error); } }; // **Automatische Datenaktualisierung bei Auswahländerung** useEffect(() => { handleFetchData(); }, [selectedMode, selectedSlotType]); // Wird ausgeführt, wenn sich ein Dropdown ändert return (
{/* Datumsauswahl */} dispatch(setVonDatum(date.toISOString().split("T")[0])) } setBisDatum={(date) => dispatch(setBisDatum(date.toISOString().split("T")[0])) } /> {/* Dropdown für DIA-Modus */} {/* Dropdown für Slot-Typ */}
); }; export default LoopChartActionBar;