feat: Fullscreen-Zustand mit Redux verwaltet

- `isFullScreen` zum Redux-Slice hinzugefügt
- `ChartSwitcher.tsx` angepasst, um Redux zu nutzen
- `LoopMeasurementChart.tsx` & `TDRChart.tsx` auf Redux umgestellt
- Fullscreen-Zustand bleibt jetzt persistent
This commit is contained in:
ISA
2025-02-25 10:00:24 +01:00
parent 47120c4dea
commit 4c55e9e9fa
5 changed files with 29 additions and 8 deletions

View File

@@ -7,7 +7,10 @@ import LoopMeasurementChart from "./LoopMeasurementChart/LoopMeasurementChart";
import TDRChart from "./TDRChart/TDRChart"; import TDRChart from "./TDRChart/TDRChart";
import { useSelector, useDispatch } from "react-redux"; import { useSelector, useDispatch } from "react-redux";
import { RootState } from "../../../../../redux/store"; import { RootState } from "../../../../../redux/store";
import { setChartOpen } from "../../../../../redux/slices/kabelueberwachungChartSlice"; import {
setChartOpen,
setFullScreen,
} from "../../../../../redux/slices/kabelueberwachungChartSlice";
interface ChartSwitcherProps { interface ChartSwitcherProps {
isOpen: boolean; isOpen: boolean;
@@ -19,17 +22,20 @@ const ChartSwitcher: React.FC<ChartSwitcherProps> = ({ isOpen, onClose }) => {
const activeMode = useSelector( const activeMode = useSelector(
(state: RootState) => state.kueChartMode.activeMode (state: RootState) => state.kueChartMode.activeMode
); );
const [isFullScreen, setIsFullScreen] = useState(false); const isFullScreen = useSelector(
(state: RootState) => state.kabelueberwachungChart.isFullScreen
);
// **Modal schließen + Redux-Status zurücksetzen** // **Modal schließen + Redux-Status zurücksetzen**
const handleClose = () => { const handleClose = () => {
dispatch(setChartOpen(false)); dispatch(setChartOpen(false));
dispatch(setFullScreen(false));
onClose(); onClose();
}; };
// **Vollbildmodus umschalten** // **Vollbildmodus umschalten**
const toggleFullScreen = () => { const toggleFullScreen = () => {
setIsFullScreen(!isFullScreen); dispatch(setFullScreen(!isFullScreen));
}; };
return ( return (
@@ -108,7 +114,7 @@ const ChartSwitcher: React.FC<ChartSwitcherProps> = ({ isOpen, onClose }) => {
<> <>
<h3 className="text-lg font-semibold">Schleifenmessung</h3> <h3 className="text-lg font-semibold">Schleifenmessung</h3>
<LoopChartActionBar /> <LoopChartActionBar />
<div style={{ flex: 1, height: "100%" }}> <div style={{ flex: 1, height: "90%" }}>
<LoopMeasurementChart isFullScreen={isFullScreen} /> <LoopMeasurementChart isFullScreen={isFullScreen} />
</div> </div>
</> </>
@@ -116,7 +122,7 @@ const ChartSwitcher: React.FC<ChartSwitcherProps> = ({ isOpen, onClose }) => {
<> <>
<h3 className="text-lg font-semibold">TDR-Messung</h3> <h3 className="text-lg font-semibold">TDR-Messung</h3>
<TDRChartActionBar /> <TDRChartActionBar />
<div style={{ flex: 1, height: "100%" }}> <div style={{ flex: 1, height: "90%" }}>
<TDRChart isFullScreen={isFullScreen} /> <TDRChart isFullScreen={isFullScreen} />
</div> </div>
</> </>

View File

@@ -6,7 +6,11 @@ import { RootState } from "../../../../../../redux/store";
import Chart from "chart.js/auto"; import Chart from "chart.js/auto";
import "chartjs-adapter-moment"; import "chartjs-adapter-moment";
const LoopMeasurementChart = ({ isFullScreen }: { isFullScreen: boolean }) => { const LoopMeasurementChart = () => {
const isFullScreen = useSelector(
(state: RootState) => state.kabelueberwachungChart.isFullScreen
);
const chartRef = useRef<HTMLCanvasElement>(null); const chartRef = useRef<HTMLCanvasElement>(null);
const chartInstance = useRef<Chart | null>(null); const chartInstance = useRef<Chart | null>(null);
const [zoomPlugin, setZoomPlugin] = useState<any>(null); const [zoomPlugin, setZoomPlugin] = useState<any>(null);

View File

@@ -1,10 +1,15 @@
// components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChart.tsx // components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChart.tsx
import React, { useEffect, useRef } from "react"; import React, { useEffect, useRef } from "react";
import { RootState } from "../../../../../../redux/store";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import { Chart, registerables } from "chart.js"; import { Chart, registerables } from "chart.js";
import "chartjs-adapter-date-fns"; import "chartjs-adapter-date-fns";
const TDRChart: React.FC<{ isFullScreen: boolean }> = ({ isFullScreen }) => { const TDRChart: React.FC = () => {
const isFullScreen = useSelector(
(state: RootState) => state.kabelueberwachungChart.isFullScreen
);
const chartRef = useRef<HTMLCanvasElement>(null); const chartRef = useRef<HTMLCanvasElement>(null);
const chartInstance = useRef<Chart | null>(null); const chartInstance = useRef<Chart | null>(null);

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.108"; const webVersion = "1.6.109";
export default webVersion; export default webVersion;

View File

@@ -18,6 +18,7 @@ interface KabelueberwachungChartState {
isChartOpen: boolean; isChartOpen: boolean;
slotNumber: number | null; slotNumber: number | null;
tdrChartData: TDRData[]; // Hinzufügen des TDR-Datenzustands tdrChartData: TDRData[]; // Hinzufügen des TDR-Datenzustands
isFullScreen: boolean;
} }
// Initialer Zustand des Slices // Initialer Zustand des Slices
@@ -30,6 +31,7 @@ const initialState: KabelueberwachungChartState = {
isChartOpen: false, isChartOpen: false,
slotNumber: null, slotNumber: null,
tdrChartData: [], // Initialisierung mit leerem Array tdrChartData: [], // Initialisierung mit leerem Array
isFullScreen: false,
}; };
// Erstellung des Slices // Erstellung des Slices
@@ -78,6 +80,9 @@ const kabelueberwachungChartSlice = createSlice({
) => { ) => {
state.tdrChartData = action.payload; state.tdrChartData = action.payload;
}, },
setFullScreen: (state, action: PayloadAction<boolean>) => {
state.isFullScreen = action.payload; // **⬅️ Neue Action für Fullscreen**
},
}, },
}); });
@@ -91,6 +96,7 @@ export const {
setSelectedSlotType, setSelectedSlotType,
setChartOpen, setChartOpen,
setTDRChartData, setTDRChartData,
setFullScreen,
} = kabelueberwachungChartSlice.actions; } = kabelueberwachungChartSlice.actions;
// Export des Reducers // Export des Reducers