"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/dashboardSlice"; const Last20MessagesTable: React.FC = () => { const dispatch = useDispatch(); // Holt last20Messages aus Redux const rawLast20Messages = useSelector( (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 const parseMessages = (messages: string | null) => { if (typeof messages === "string") { messages = messages .replace(//g, "\n") .replace(/<\/?td>/g, "") .replace(/<\/tr>/g, "") .trim(); const rows = messages.split("\n"); return rows.map((row) => [ row.substring(0, 5), row.substring(5, 10), row.substring(10, 29), row.substring(33, row.length - 1), row.substring(row.length - 1), ]); } return []; }; 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;