"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, slotNumber, } = useSelector((state: RootState) => state.kabelueberwachungChart); /** * API-URL-Erstellung für Entwicklung und Produktion */ const getApiUrl = (mode: "DIA0" | "DIA1" | "DIA2", type: number) => { if (!slotNumber) { console.error("⚠️ Slot-Nummer nicht gesetzt!"); return ""; } // Dynamische Basis-URL abhängig von Umgebung const baseUrl = process.env.NODE_ENV === "development" ? `/CPLmockData/kuesChartData/${mode}_${type}.json` : `${window.location.origin}/CPL?seite.ACP&${mode}=${formatDate( vonDatum )};${formatDate(bisDatum)};${slotNumber};${type};`; return baseUrl; }; // Funktion zur Umformatierung des Datums von "YYYY-MM-DD" zu "YYYY;MM;DD" const formatDate = (dateString: string) => { const dateParts = dateString.split("-"); return `${dateParts[0]};${dateParts[1]};${dateParts[2]}`; }; /** * Funktion zum Laden der Messwerte */ /** * Funktion zum Laden der Messwerte */ const handleFetchData = async () => { const type = selectedSlotType === "schleifenwiderstand" ? 4 : 3; const apiUrl = getApiUrl(selectedMode, type); try { console.log("📡 API-Request an:", apiUrl); // Debugging const response = await fetch(apiUrl, { method: "GET", headers: { "Content-Type": "application/json" }, }); if (!response.ok) throw new Error(`Fehler: ${response.status}`); const jsonData = await response.json(); console.log("✅ Daten erfolgreich geladen:", 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])); dispatch(setChartOpen(true)); // Chart öffnen } } else { console.error("⚠️ Erwartetes Array, aber erhalten:", jsonData); } } catch (error) { console.error("❌ Fehler beim Laden der Produktions-Daten:", error); } }; // **Automatische Datenaktualisierung bei Auswahländerung** useEffect(() => { handleFetchData(); }, [selectedMode, selectedSlotType]); // Wird ausgeführt, wenn sich ein Dropdown ändert return (