"use client"; // /components/main/uebersicht/Last20MessagesTable.tsx import React, { useEffect } from "react"; import { useSelector, useDispatch } from "react-redux"; import { RootState } from "../../../redux/store"; import { setLast20Messages } from "../../../redux/slices/last20MessagesSlice"; const Last20MessagesTable: React.FC = () => { const dispatch = useDispatch(); // Holt last20Messages aus Redux const rawLast20Messages = useSelector( (state: RootState) => state.last20MessagesSlice.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 const parseMessages = (messages: string | null) => { if (!messages) return []; const rows = messages .split("") .slice(1) // erstes Element ist leer .map((row) => { const cols = row .replace(/<\/tr>/, "") .split("") .map((col) => col.replace(/<[^>]+>/g, "")); return cols; }); return rows; }; const last20Messages = parseMessages(rawLast20Messages); return (
{last20Messages.length > 0 ? ( last20Messages.map((columns, index) => ( )) ) : ( )}
ID Modul Zeitstempel Meldung Status
{columns[0]} {columns[1]}
{columns[2].split(" ")[0]} {columns[2].split(" ")[1]}
{columns[3]} {columns[4]}
Keine Meldungen verfügbar.
); }; export default Last20MessagesTable;