feat: Redux-Thunk für digitale Eingänge integriert & UI mit zwei Tabellen umgesetzt

- `fetchDigitaleEingaengeThunk.ts` erstellt, um digitale Eingänge in Redux zu speichern.
- `fetchDigitaleEingaenge.ts` erstellt, um API-Daten aus `de.js` zu laden.
- `digitalInputsSlice.ts` hinzugefügt, um digitale Eingänge in Redux zu verwalten.
- `DigitalInputs.tsx` überarbeitet: Zwei Tabellen für digitale Eingänge hinzugefügt.
- Sicherstellung, dass Redux-Thunk nur im Client (`useEffect`) ausgeführt wird.
- API-Calls werden nun alle 10 Sekunden aktualisiert.

 Jetzt läuft Redux-Thunk stabil & effizient für digitale Eingänge!
This commit is contained in:
ISA
2025-03-19 15:33:23 +01:00
parent 25b63e3a31
commit f9c2dc7bc9
8 changed files with 110 additions and 86 deletions

View File

@@ -0,0 +1,22 @@
import { createAsyncThunk } from "@reduxjs/toolkit";
import { fetchDigitaleEingaenge } from "../../services/fetchDigitaleEingaenge";
import { setInputs } from "../slices/digitalInputsSlice";
/**
* Holt digitale Eingänge von der API und speichert sie in Redux.
*/
export const fetchDigitaleEingaengeThunk = createAsyncThunk(
"digitalInputs/fetchDigitaleEingaenge",
async (_, { dispatch }) => {
if (typeof window === "undefined") return;
try {
const data = await fetchDigitaleEingaenge();
if (data) {
dispatch(setInputs(data)); // ✅ Redux mit API-Daten füllen
}
} catch (error) {
console.error("❌ Fehler beim Laden der digitalen Eingänge:", error);
}
}
);

View File

@@ -1,56 +0,0 @@
// /redux/thunks/fetchLoopChartDataThunk.ts
import { createAsyncThunk } from "@reduxjs/toolkit";
import { fetchLoopChartData } from "../../services/fetchLoopChartData";
import { setLoopMeasurementCurveChartData } from "../slices/kabelueberwachungChartSlice";
/**
* Holt die neuesten Daten von der API und speichert sie in Redux.
*/
export const fetchLoopChartDataThunk = createAsyncThunk(
"kabelueberwachungChart/fetchLoopChartData",
async (
{
mode,
type,
slotNumber,
vonDatum,
bisDatum,
}: {
mode: "DIA0" | "DIA1" | "DIA2";
type: number;
slotNumber: number;
vonDatum: string;
bisDatum: string;
},
{ dispatch }
) => {
const data = await fetchLoopChartData(
mode,
type,
slotNumber,
vonDatum,
bisDatum
);
if (data) {
dispatch(setLoopMeasurementCurveChartData(data));
}
}
);
/**
* Starte automatisches Polling (alle 10 Sekunden).
*/
export const startLoopChartDataPolling = () => (dispatch: any) => {
setInterval(() => {
console.log("🔄 Daten werden aktualisiert...");
dispatch(
fetchLoopChartDataThunk({
mode: "DIA0",
type: 4,
slotNumber: 6,
vonDatum: "2024-02-01",
bisDatum: "2024-02-10",
})
);
}, 10000);
};