// /components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartActionBar.tsx import React, { useState, useEffect } from "react"; import { useSelector } from "react-redux"; import { useAppDispatch } from "../../../../../../redux/store"; import { RootState } from "../../../../../../redux/store"; import { fetchTDMDataBySlotThunk } from "../../../../../../redux/thunks/fetchTDMListBySlotThunk"; import { fetchTDRChartDataByIdThunk } from "../../../../../../redux/thunks/fetchTDRChartDataByIdThunk"; import { fetchReferenceCurveBySlotThunk } from "../../../../../../redux/thunks/fetchReferenceCurveBySlotThunk"; // ⬅ import ergänzen const TDRChartActionBar: React.FC = () => { const dispatch = useAppDispatch(); // ✅ Redux: selectedSlot aus kueChartMode (0-basiert) const selectedSlot = useSelector( (state: RootState) => state.kueChartMode.selectedSlot ); const tdmChartData = useSelector( (state: RootState) => state.tdmSingleChart.data ); const idsForSlot = selectedSlot !== null ? tdmChartData[selectedSlot] ?? [] : []; const tdrDataById = useSelector( (state: RootState) => state.tdrDataById.dataById ); const [selectedId, setSelectedId] = useState(null); const currentChartData = selectedId !== null ? tdrDataById[selectedId] : []; // 🔄 Dropdown-Auswahl: neue Messung laden const handleSelectChange = (e: React.ChangeEvent) => { const id = parseInt(e.target.value); setSelectedId(id); dispatch(fetchTDRChartDataByIdThunk(id)); }; // 📌 Referenz setzen (nutzt Slotnummer + 1 für die API) const handleSetReference = () => { if (selectedSlot === null || !currentChartData?.length) return; localStorage.setItem( `ref-curve-slot${selectedSlot}`, JSON.stringify(currentChartData) ); // 🔄 Redux updaten → Chart reagiert sofort! dispatch(fetchReferenceCurveBySlotThunk(selectedSlot)); alert("Referenzkurve gesetzt!"); }; // 📥 Beim Slot-Wechsel TDM-Liste + letzte ID laden useEffect(() => { if (selectedSlot !== null) { dispatch(fetchTDMDataBySlotThunk(selectedSlot)).then((action: any) => { const slotData = action.payload?.data; if (slotData?.length > 0) { const lastId = slotData[0].id; setSelectedId(lastId); dispatch(fetchTDRChartDataByIdThunk(lastId)); } }); } }, [selectedSlot, dispatch]); return (
{/* 🧩 Slot-Anzeige (1-basiert für Benutzer) */}
{selectedSlot !== null ? `Slot ${selectedSlot + 1}` : "Kein Slot gewählt"}
{/* ✅ Referenz setzen */} {selectedId !== null && ( )} {/* 🔽 Dropdown für Messungen */}
); }; export default TDRChartActionBar;