refactor: TDRChartActionBar auf selectedSlot (0-basiert) umgestellt

- Verwendung von selectedSlot aus kueChartMode statt slotNumber aus kabelueberwachungChart
- Slot-Datenzugriff jetzt direkt 0-basiert (z. B. slot0.json)
- Referenz-Button berücksichtigt API-Format (Slot + 1)
- Dropdown-Menü nutzt korrekte TDM-Liste für gewählten Slot
This commit is contained in:
ISA
2025-03-28 14:21:52 +01:00
parent 37af5702fa
commit f5b6024da7
3 changed files with 17 additions and 11 deletions

View File

@@ -1,4 +1,5 @@
// /components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartActionBar.tsx
import React, { useState, useEffect } from "react";
import { useSelector } from "react-redux";
import { useAppDispatch } from "../../../../../../redux/store";
@@ -9,28 +10,33 @@ import { fetchTDRChartDataByIdThunk } from "../../../../../../redux/thunks/fetch
const TDRChartActionBar: React.FC = () => {
const dispatch = useAppDispatch();
const tdmChartData = useSelector((state: RootState) => state.tdmChart.data);
// ✅ 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 [selectedId, setSelectedId] = useState<number | null>(null);
// Dropdown-Auswahl: Neue ID auswählen
// 🔄 Dropdown-Auswahl: neue Messung laden
const handleSelectChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
const id = parseInt(e.target.value);
setSelectedId(id);
dispatch(fetchTDRChartDataByIdThunk(id));
};
// Button: Als Referenzkurve setzen
// 📌 Referenz setzen (nutzt Slotnummer + 1 für die API)
const handleSetReference = async () => {
if (selectedId === null || selectedSlot === null) return;
const url = `${window.location.origin}/CPL?seite.ACP&KTR${selectedSlot}=${selectedId}`;
const apiSlot = selectedSlot + 1;
const url = `${window.location.origin}/CPL?seite.ACP&KTR${apiSlot}=${selectedId}`;
try {
const response = await fetch(url);
if (!response.ok) throw new Error("Fehler beim Setzen der Referenzkurve");
@@ -41,7 +47,7 @@ const TDRChartActionBar: React.FC = () => {
}
};
// Automatisch neueste ID laden, wenn Slot sich ändert
// 📥 Beim Slot-Wechsel TDM-Liste + letzte ID laden
useEffect(() => {
if (selectedSlot !== null) {
dispatch(fetchTDMDataBySlotThunk(selectedSlot)).then((action: any) => {
@@ -57,14 +63,14 @@ const TDRChartActionBar: React.FC = () => {
return (
<div className="flex justify-between items-center p-2 bg-gray-100 rounded-lg space-x-4">
{/* Ausgewählter Slot */}
{/* 🧩 Slot-Anzeige (1-basiert für Benutzer) */}
<div className="text-sm font-semibold">
{selectedSlot !== null
? `Slot ${selectedSlot + 1}`
: "Kein Slot gewählt"}
</div>
{/* Button: Als Referenzkurve setzen */}
{/* Referenz setzen */}
{selectedId !== null && (
<button
onClick={handleSetReference}
@@ -74,7 +80,7 @@ const TDRChartActionBar: React.FC = () => {
</button>
)}
{/* Dropdown für Messungsauswahl */}
{/* 🔽 Dropdown für Messungen */}
<div className="flex items-center space-x-2">
<label htmlFor="tdrIdSelect" className="text-sm font-semibold">
Messung ID