refactor: last20Messages in dashboardSlice ausgelagert und Redux-Handling optimiert

- last20Messages aus variablesSlice entfernt und in dashboardSlice verschoben
- Redux wird nun mit window.win_last20Messages aktualisiert
- setInterval hinzugefügt, um späte Ladezeiten von window-Daten abzufangen
- API-Aufruf entfernt, da keine /api/last20Messages existiert
- Redux DevTools überprüft, Daten werden jetzt korrekt geladen und angezeigt
This commit is contained in:
Ismail Ali
2025-02-22 22:57:55 +01:00
parent f1e30405a2
commit 80c9d12c6b
4 changed files with 52 additions and 6 deletions

View File

@@ -1,13 +1,34 @@
"use client"; "use client"; // /components/main/uebersicht/Last20MessagesTable.tsx
import React from "react"; import React, { useEffect } from "react";
import { useSelector } from "react-redux"; import { useSelector, useDispatch } from "react-redux";
import { RootState } from "../../../redux/store"; import { RootState } from "../../../redux/store";
import { setLast20Messages } from "../../../redux/slices/dashboardSlice";
const Last20MessagesTable: React.FC = () => { const Last20MessagesTable: React.FC = () => {
const dispatch = useDispatch();
// Holt last20Messages aus Redux
const rawLast20Messages = useSelector( const rawLast20Messages = useSelector(
(state: RootState) => state.variables.last20Messages (state: RootState) => state.dashboard.last20Messages
); );
// Holt Daten aus `window.win_last20Messages` und speichert sie in Redux
useEffect(() => {
const loadWindowMessages = () => {
if (typeof window !== "undefined" && (window as any).win_last20Messages) {
dispatch(setLast20Messages((window as any).win_last20Messages));
}
};
// Initialen Wert setzen
loadWindowMessages();
// Falls die Daten erst später geladen werden, überprüfe jede Sekunde
const interval = setInterval(loadWindowMessages, 1000);
return () => clearInterval(interval);
}, [dispatch]);
// Hilfsfunktion zum Parsen der Nachrichten // Hilfsfunktion zum Parsen der Nachrichten
const parseMessages = (messages: string | null) => { const parseMessages = (messages: string | null) => {
if (typeof messages === "string") { if (typeof messages === "string") {

View File

@@ -0,0 +1,23 @@
// /redux/slices/dashboardSlice.ts
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
interface DashboardState {
last20Messages: string | null;
}
const initialState: DashboardState = {
last20Messages: null,
};
export const dashboardSlice = createSlice({
name: "dashboard",
initialState,
reducers: {
setLast20Messages: (state, action: PayloadAction<string | null>) => {
state.last20Messages = action.payload;
},
},
});
export const { setLast20Messages } = dashboardSlice.actions;
export default dashboardSlice.reducer;

View File

@@ -14,7 +14,7 @@ export interface VariablesState {
obereSchleifenGrenzwerte: number[]; obereSchleifenGrenzwerte: number[];
schleifenintervall: number[]; schleifenintervall: number[];
//--------------- //---------------
last20Messages: string | null;
deviceName: string | null; deviceName: string | null;
mac1: string | null; mac1: string | null;
ip: string | null; ip: string | null;
@@ -78,7 +78,7 @@ const initialState: VariablesState = {
obereSchleifenGrenzwerte: [], obereSchleifenGrenzwerte: [],
schleifenintervall: [], schleifenintervall: [],
//--------------- //---------------
last20Messages: null,
deviceName: null, deviceName: null,
mac1: null, mac1: null,
ip: null, ip: null,

View File

@@ -6,6 +6,7 @@ import kueChartModeReducer from "./slices/kueChartModeSlice";
import webVersionReducer from "./slices/webVersionSlice"; import webVersionReducer from "./slices/webVersionSlice";
import digitalInputsReducer from "./slices/digitalInputsSlice"; import digitalInputsReducer from "./slices/digitalInputsSlice";
import kabelueberwachungChartReducer from "./slices/kabelueberwachungChartSlice"; import kabelueberwachungChartReducer from "./slices/kabelueberwachungChartSlice";
import dashboardReducer from "./slices/dashboardSlice";
const store = configureStore({ const store = configureStore({
reducer: { reducer: {
@@ -15,6 +16,7 @@ const store = configureStore({
webVersion: webVersionReducer, webVersion: webVersionReducer,
digitalInputs: digitalInputsReducer, digitalInputs: digitalInputsReducer,
kabelueberwachungChart: kabelueberwachungChartReducer, kabelueberwachungChart: kabelueberwachungChartReducer,
dashboard: dashboardReducer,
}, },
}); });