From 35c9c1e4865d141bbe15f4f96ef1d909255a0626 Mon Sep 17 00:00:00 2001 From: ISA Date: Fri, 28 Mar 2025 08:32:32 +0100 Subject: [PATCH] =?UTF-8?q?refactor:=20lade=20TDM-Liste=20nur=20im=20TDR-M?= =?UTF-8?q?odus=20=C3=BCber=20TDRChartActionBar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fetchTDMDataBySlotThunk aus ChartSwitcher entfernt - TDM-Daten werden jetzt gezielt im TDR-Kontext geladen - Vermeidet Konflikte mit Schleifenmodus und spart Ressourcen --- .../kue705FO/Charts/ChartSwitcher.tsx | 11 ++-- .../Charts/TDRChart/TDRChartActionBar.tsx | 14 +++-- config/webVersion.ts | 2 +- redux/slices/tdmSingleChartSlice.ts | 52 +++++++++++++++++++ redux/store.ts | 2 + 5 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 redux/slices/tdmSingleChartSlice.ts diff --git a/components/main/kabelueberwachung/kue705FO/Charts/ChartSwitcher.tsx b/components/main/kabelueberwachung/kue705FO/Charts/ChartSwitcher.tsx index 117a854..209eaa5 100644 --- a/components/main/kabelueberwachung/kue705FO/Charts/ChartSwitcher.tsx +++ b/components/main/kabelueberwachung/kue705FO/Charts/ChartSwitcher.tsx @@ -18,7 +18,7 @@ import { setSelectedChartType, } from "../../../../../redux/slices/tdrChartSlice"; import { resetBrushRange } from "../../../../../redux/slices/brushSlice"; -import { fetchAllTDRChartData } from "../../../../../redux/thunks/fetchAllTDRChartThunk"; +//import { fetchAllTDRChartData } from "../../../../../redux/thunks/fetchAllTDRChartThunk"; import { fetchTDMDataBySlotThunk } from "../../../../../redux/thunks/fetchTDMDataBySlotThunk"; import { fetchTDRChartDataBySlotThunk } from "../../../../../redux/thunks/fetchTDRChartDataBySlotThunk"; @@ -64,20 +64,15 @@ const ChartSwitcher: React.FC = ({ //------------------------------------- useEffect(() => { - dispatch(fetchAllTDRChartData()); // Erstes Laden + //dispatch(fetchAllTDRChartData()); // Erstes Laden const interval = setInterval(() => { - dispatch(fetchAllTDRChartData()); + //dispatch(fetchAllTDRChartData()); }, 10000); // Alle 10 Sekunden neue Daten abrufen return () => clearInterval(interval); // Cleanup, wenn Komponente entladen wird }, [dispatch]); //------------------------------------- - useEffect(() => { - if (slotIndex !== null) { - dispatch(fetchTDMDataBySlotThunk(slotIndex)); - } - }, [slotIndex]); //------------------------------------- useEffect(() => { diff --git a/components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartActionBar.tsx b/components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartActionBar.tsx index a4da72c..6bbaf26 100644 --- a/components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartActionBar.tsx +++ b/components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartActionBar.tsx @@ -1,15 +1,18 @@ // /components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartActionBar.tsx -import React, { useState } from "react"; +import React, { useState, useEffect } from "react"; import { useDispatch, useSelector } from "react-redux"; +import { useAppDispatch } from "../../../../../../redux/store"; + import { RootState } from "../../../../../../redux/store"; import { fetchTDRChartDataById } from "../../../../../../services/fetchTDRChartDataById"; import { setTDRChartDataById, setSelectedTDRId, } from "../../../../../../redux/slices/tdrDataByIdSlice"; +import { fetchTDMDataBySlotThunk } from "../../../../../../redux/thunks/fetchTDMDataBySlotThunk"; const TDRChartActionBar: React.FC = () => { - const dispatch = useDispatch(); + const dispatch = useAppDispatch(); const tdmChartData = useSelector((state: RootState) => state.tdmChart.data); const selectedSlot = useSelector( @@ -54,7 +57,12 @@ const TDRChartActionBar: React.FC = () => { alert("❌ Referenzkurve konnte nicht gesetzt werden."); } }; - + //------------------------------- + useEffect(() => { + if (selectedSlot !== null) { + dispatch(fetchTDMDataBySlotThunk(selectedSlot)); + } + }, [selectedSlot]); //-------------------------------- return (
diff --git a/config/webVersion.ts b/config/webVersion.ts index 1fe5477..7f9e878 100644 --- a/config/webVersion.ts +++ b/config/webVersion.ts @@ -6,5 +6,5 @@ 2: Patch oder Hotfix (Bugfixes oder kleine Änderungen). */ -const webVersion = "1.6.179"; +const webVersion = "1.6.180"; export default webVersion; diff --git a/redux/slices/tdmSingleChartSlice.ts b/redux/slices/tdmSingleChartSlice.ts new file mode 100644 index 0000000..c12a96b --- /dev/null +++ b/redux/slices/tdmSingleChartSlice.ts @@ -0,0 +1,52 @@ +// /redux/slices/tdmSingleChartSlice.ts + +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; +import { fetchTDMDataBySlotThunk } from "../thunks/fetchTDMDataBySlotThunk"; + +interface TDMChartEntry { + id: number; + t: string; +} + +interface TDMChartState { + data: { + [slot: number]: TDMChartEntry[]; + }; + loading: boolean; + error: string | null; +} + +const initialState: TDMChartState = { + data: {}, + loading: false, + error: null, +}; + +const tdmSingleChartSlice = createSlice({ + name: "tdmSingleChart", + initialState, + reducers: {}, + extraReducers: (builder) => { + builder + .addCase(fetchTDMDataBySlotThunk.pending, (state) => { + state.loading = true; + state.error = null; + }) + .addCase( + fetchTDMDataBySlotThunk.fulfilled, + ( + state, + action: PayloadAction<{ slot: number; data: TDMChartEntry[] }> + ) => { + state.loading = false; + state.data[action.payload.slot] = action.payload.data; + } + ) + .addCase(fetchTDMDataBySlotThunk.rejected, (state, action) => { + state.loading = false; + state.error = action.error.message ?? "Unbekannter Fehler"; + }); + }, +}); + +export default tdmSingleChartSlice.reducer; diff --git a/redux/store.ts b/redux/store.ts index 5664277..8812289 100644 --- a/redux/store.ts +++ b/redux/store.ts @@ -20,6 +20,7 @@ import tdrDataByIdReducer from "./slices/tdrDataByIdSlice"; import kueDataReducer from "./slices/kueDataSlice"; import selectedChartDataReducer from "./slices/selectedChartDataSlice"; import tdrSingleChartReducer from "./slices/tdrSingleChartSlice"; +import tdmSingleChartReducer from "./slices/tdmSingleChartSlice"; const store = configureStore({ reducer: { @@ -42,6 +43,7 @@ const store = configureStore({ kueData: kueDataReducer, selectedChartData: selectedChartDataReducer, tdrSingleChart: tdrSingleChartReducer, + tdmSingleChart: tdmSingleChartReducer, }, });