feat: Verbesserung der Slot-Auswahl und Chart-Steuerung

- `selectedSlot` in `kueChartModeSlice.ts` hinzugefügt, um den aktiven Slot zu speichern.
- `handleButtonClick.ts` aktualisiert, damit `selectedSlot` in Redux gesetzt wird.
- `handleOpenChartModal.ts` angepasst, sodass `selectedSlot` beim Öffnen des Modals gesetzt wird.
- `Kue705FO.tsx` nutzt jetzt Redux für die Slot- und Modus-Steuerung (`selectedSlot`, `activeMode`).
- Redux-Logik optimiert: `selectedSlot` wird nun konsistent zwischen `TDRChart.tsx` und `ChartSwitcher.tsx` genutzt.
- Verbesserung der Benutzererfahrung: Nur `onClick` verwendet, `onMouseOver` wegen Performance-Problemen vermieden.

 Jetzt wird der richtige Slot in Redux gespeichert, wenn ein Button oder das Chart-Modal geöffnet wird.
 `TDRChart.tsx` zeigt nur das gewählte Modul an, kein unnötiges Neuladen von Daten.
 Stabile und optimierte Chart-Steuerung ohne ungewollte Änderungen durch Mausbewegungen.
This commit is contained in:
ISA
2025-03-20 11:50:14 +01:00
parent 735fc92b96
commit 0bdf5b29ea
13 changed files with 110 additions and 47 deletions

View File

@@ -1,4 +1,5 @@
"use client"; // /components/modules/kue705FO/charts/ChartSwitcher.tsx
import React, { useState } from "react";
import ReactModal from "react-modal";
import LoopChartActionBar from "./LoopMeasurementChart/LoopChartActionBar";
@@ -11,15 +12,26 @@ import {
setChartOpen,
setFullScreen,
} from "../../../../../redux/slices/kabelueberwachungChartSlice";
import {
setSelectedSlot,
setSelectedChartType,
} from "../../../../../redux/slices/tdrChartSlice";
import { resetBrushRange } from "../../../../../redux/slices/brushSlice";
interface ChartSwitcherProps {
isOpen: boolean;
onClose: () => void;
slotIndex: number;
}
const ChartSwitcher: React.FC<ChartSwitcherProps> = ({ isOpen, onClose }) => {
const ChartSwitcher: React.FC<ChartSwitcherProps> = ({
isOpen,
onClose,
slotIndex,
}) => {
const dispatch = useDispatch();
// **Redux-States für aktive Messkurve (TDR oder Schleife)**
const activeMode = useSelector(
(state: RootState) => state.kueChartMode.activeMode
);
@@ -40,6 +52,12 @@ const ChartSwitcher: React.FC<ChartSwitcherProps> = ({ isOpen, onClose }) => {
dispatch(setFullScreen(!isFullScreen));
};
// **Slot und Messkurve setzen**
const setChartType = (chartType: "TDR" | "Schleife") => {
dispatch(setSelectedSlot(slotIndex));
dispatch(setSelectedChartType(chartType));
};
return (
<ReactModal
isOpen={isOpen}
@@ -112,6 +130,26 @@ const ChartSwitcher: React.FC<ChartSwitcherProps> = ({ isOpen, onClose }) => {
height: "100%",
}}
>
{/* Auswahl zwischen TDR und Schleife */}
<div className="flex space-x-4 mb-4">
<button
className={`p-2 text-white ${
activeMode === "TDR" ? "bg-blue-500" : "bg-gray-400"
}`}
onClick={() => setChartType("TDR")}
>
TDR
</button>
<button
className={`p-2 text-white ${
activeMode === "Schleife" ? "bg-blue-500" : "bg-gray-400"
}`}
onClick={() => setChartType("Schleife")}
>
Schleife
</button>
</div>
{activeMode === "Schleife" ? (
<>
<h3 className="text-lg font-semibold">Schleifenmessung</h3>
@@ -123,13 +161,7 @@ const ChartSwitcher: React.FC<ChartSwitcherProps> = ({ isOpen, onClose }) => {
) : (
<>
<h3 className="text-lg font-semibold">TDR-Messung</h3>
{/* TDR-Chart-Action-Bar */}
{/* <TDRChartActionBar /> */}
{/* TDR-Chart */}
<div style={{ flex: 1, height: "90%" }}>
<TDRChart />
</div>
<TDRChart isFullScreen={isFullScreen} />
</>
)}
</div>