feat: Referenzkurve pro Slot dynamisch per Redux Slice laden und anzeigen

- Neuen Slice `tdrReferenceChartDataBySlot` eingeführt
- Thunk `fetchReferenceCurveBySlotThunk` erstellt
- Referenzdaten pro Slot in Redux gespeichert
- Zugriff im TDRChart angepasst auf neue Struktur
This commit is contained in:
Ismail Ali
2025-03-30 13:32:32 +02:00
parent 91cc60568a
commit cb2deecf17
6 changed files with 89 additions and 3 deletions

View File

@@ -0,0 +1,41 @@
// /redux/slices/tdrReferenceChartDataBySlotSlice.ts
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { fetchReferenceCurveBySlotThunk } from "../thunks/fetchReferenceCurveBySlotThunk";
interface TDRReferenceChartState {
referenceData: { [slot: number]: any[] };
loading: boolean;
error: string | null;
}
const initialState: TDRReferenceChartState = {
referenceData: {},
loading: false,
error: null,
};
const tdrReferenceChartDataBySlotSlice = createSlice({
name: "tdrReferenceChartDataBySlot",
initialState,
reducers: {},
extraReducers: (builder) => {
builder
.addCase(fetchReferenceCurveBySlotThunk.pending, (state) => {
state.loading = true;
state.error = null;
})
.addCase(
fetchReferenceCurveBySlotThunk.fulfilled,
(state, action: PayloadAction<{ slot: number; data: any[] }>) => {
state.loading = false;
state.referenceData[action.payload.slot] = action.payload.data;
}
)
.addCase(fetchReferenceCurveBySlotThunk.rejected, (state, action) => {
state.loading = false;
state.error = action.error.message ?? "Unbekannter Fehler";
});
},
});
export default tdrReferenceChartDataBySlotSlice.reducer;

View File

@@ -20,6 +20,7 @@ import tdrDataByIdReducer from "./slices/tdrDataByIdSlice";
import kueDataReducer from "./slices/kueDataSlice";
import selectedChartDataReducer from "./slices/selectedChartDataSlice";
import tdmSingleChartReducer from "./slices/tdmSingleChartSlice";
import tdrReferenceChartDataBySlotReducer from "./slices/tdrReferenceChartDataBySlotSlice";
const store = configureStore({
reducer: {
@@ -42,6 +43,7 @@ const store = configureStore({
kueData: kueDataReducer,
selectedChartData: selectedChartDataReducer,
tdmSingleChart: tdmSingleChartReducer,
tdrReferenceChartDataBySlot: tdrReferenceChartDataBySlotReducer,
},
});

View File

@@ -0,0 +1,12 @@
// /redux/thunks/fetchAllTDRReferenceChartThunk.ts
import { createAsyncThunk } from "@reduxjs/toolkit";
import { fetchTDRReferenceCurve } from "../../services/fetchTDRReferenceCurve";
export const fetchReferenceCurveBySlotThunk = createAsyncThunk(
"tdrReferenceChart/fetchBySlot",
async (slot: number) => {
const data = await fetchTDRReferenceCurve(slot);
if (!data) throw new Error("Keine Referenzdaten gefunden");
return { slot, data };
}
);