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 // /components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartActionBar.tsx
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import { useAppDispatch } from "../../../../../../redux/store"; import { useAppDispatch } from "../../../../../../redux/store";
@@ -9,28 +10,33 @@ import { fetchTDRChartDataByIdThunk } from "../../../../../../redux/thunks/fetch
const TDRChartActionBar: React.FC = () => { const TDRChartActionBar: React.FC = () => {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const tdmChartData = useSelector((state: RootState) => state.tdmChart.data); // ✅ Redux: selectedSlot aus kueChartMode (0-basiert)
const selectedSlot = useSelector( const selectedSlot = useSelector(
(state: RootState) => state.kueChartMode.selectedSlot (state: RootState) => state.kueChartMode.selectedSlot
); );
const tdmChartData = useSelector(
(state: RootState) => state.tdmSingleChart.data
);
const idsForSlot = const idsForSlot =
selectedSlot !== null ? tdmChartData[selectedSlot] ?? [] : []; selectedSlot !== null ? tdmChartData[selectedSlot] ?? [] : [];
const [selectedId, setSelectedId] = useState<number | null>(null); 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 handleSelectChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
const id = parseInt(e.target.value); const id = parseInt(e.target.value);
setSelectedId(id); setSelectedId(id);
dispatch(fetchTDRChartDataByIdThunk(id)); dispatch(fetchTDRChartDataByIdThunk(id));
}; };
// Button: Als Referenzkurve setzen // 📌 Referenz setzen (nutzt Slotnummer + 1 für die API)
const handleSetReference = async () => { const handleSetReference = async () => {
if (selectedId === null || selectedSlot === null) return; 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 { try {
const response = await fetch(url); const response = await fetch(url);
if (!response.ok) throw new Error("Fehler beim Setzen der Referenzkurve"); 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(() => { useEffect(() => {
if (selectedSlot !== null) { if (selectedSlot !== null) {
dispatch(fetchTDMDataBySlotThunk(selectedSlot)).then((action: any) => { dispatch(fetchTDMDataBySlotThunk(selectedSlot)).then((action: any) => {
@@ -57,14 +63,14 @@ const TDRChartActionBar: React.FC = () => {
return ( return (
<div className="flex justify-between items-center p-2 bg-gray-100 rounded-lg space-x-4"> <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"> <div className="text-sm font-semibold">
{selectedSlot !== null {selectedSlot !== null
? `Slot ${selectedSlot + 1}` ? `Slot ${selectedSlot + 1}`
: "Kein Slot gewählt"} : "Kein Slot gewählt"}
</div> </div>
{/* Button: Als Referenzkurve setzen */} {/* Referenz setzen */}
{selectedId !== null && ( {selectedId !== null && (
<button <button
onClick={handleSetReference} onClick={handleSetReference}
@@ -74,7 +80,7 @@ const TDRChartActionBar: React.FC = () => {
</button> </button>
)} )}
{/* Dropdown für Messungsauswahl */} {/* 🔽 Dropdown für Messungen */}
<div className="flex items-center space-x-2"> <div className="flex items-center space-x-2">
<label htmlFor="tdrIdSelect" className="text-sm font-semibold"> <label htmlFor="tdrIdSelect" className="text-sm font-semibold">
Messung ID Messung ID

View File

@@ -6,5 +6,5 @@
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen). 2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
*/ */
const webVersion = "1.6.182"; const webVersion = "1.6.183";
export default webVersion; export default webVersion;

View File

@@ -159,8 +159,8 @@ var win_tdrLocation = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
]; ];
var win_tdrActive = [ var win_tdrActive = [
1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
]; ];
var win_tdrLast = [ var win_tdrLast = [
"2024-10-17 07:51:54:000", "2024-10-17 07:51:54:000",