"use client"; // app/dashboard/page.jsx import React, { useEffect } from "react"; import { useRouter } from "next/navigation"; import "tailwindcss/tailwind.css"; import "@fontsource/roboto"; import "bootstrap-icons/font/bootstrap-icons.css"; import CPLStatus from "../components/main/uebersicht/modulesStatus/CPLStatus"; import KabelModulStatus from "../components/main/uebersicht/modulesStatus/KabelModulStatus"; import { Icon } from "@iconify/react"; import { useSelector } from "react-redux"; import { RootState } from "../redux/store"; import { useDispatch } from "react-redux"; import { setOpcUaZustand, setOpcUaActiveClientCount, setOpcUaNodesetName, } from "../redux/slices/variablesSlice"; import webVersion from "../config/webVersion"; import Last20MessagesTable from "../components/main/uebersicht/Last20MessagesTable"; import NetworkInfo from "../components/main/uebersicht/NetworkInfo"; import VersionInfo from "../components/main/uebersicht/VersionInfo"; function Dashboard() { const router = useRouter(); const dispatch = useDispatch(); useEffect(() => { if (typeof window !== "undefined") { dispatch(setOpcUaZustand(window.win_opcUaZustand || "Unbekannt")); dispatch( setOpcUaActiveClientCount( Number(window.win_opcUaActiveClientCount) || 0 ) ); dispatch(setOpcUaNodesetName(window.win_opcUaNodesetName || "Unbekannt")); } }, []); // Redux-Variablen abrufen const opcUaZustand = useSelector( (state: RootState) => state.variables.opcUaZustand ); const opcUaActiveClientCount = useSelector( (state: RootState) => state.variables.opcUaActiveClientCount ); const opcUaNodesetName = useSelector( (state: RootState) => state.variables.opcUaNodesetName ); const rawLast20Messages = useSelector( (state: RootState) => state.variables.last20Messages ); const ip = useSelector((state: RootState) => state.variables.ip); const subnet = useSelector((state: RootState) => state.variables.subnet); const gateway = useSelector((state: RootState) => state.variables.gateway); const appVersion = useSelector( (state: RootState) => state.variables.appVersion ); const kueCableBreak = useSelector( (state: RootState) => state.variables.kueCableBreak ); const kueOnline = useSelector( (state: RootState) => state.variables.kueOnline ); const kueVersion = useSelector( (state: RootState) => state.variables.kueVersion ); const kueAlarm1 = useSelector( (state: RootState) => state.variables.kueAlarm1 ); const kueAlarm2 = useSelector( (state: RootState) => state.variables.kueAlarm2 ); const kueGroundFault = useSelector( (state: RootState) => state.variables.kueGroundFault ); // Hilfsfunktion zum Parsen der Nachrichten const parseMessages = (messages) => { if (typeof messages === "string") { messages = messages .replace(/