"use client"; import React, { useEffect, useMemo } from "react"; import { useRouter } from "next/navigation"; import "tailwindcss/tailwind.css"; import "@fontsource/roboto"; import "bootstrap-icons/font/bootstrap-icons.css"; import { Icon } from "@iconify/react"; import { useSelector, useDispatch } from "react-redux"; import { RootState } from "../redux/store"; import { setOpcUaZustand, setOpcUaActiveClientCount, setOpcUaNodesetName, } from "../redux/slices/variablesSlice"; import Last20MessagesTable from "../components/main/uebersicht/Last20MessagesTable"; import NetworkInfo from "../components/main/uebersicht/NetworkInfo"; import VersionInfo from "../components/main/uebersicht/VersionInfo"; import Baugruppentraeger from "../components/main/uebersicht/Baugruppentraeger"; const Dashboard: React.FC = () => { const router = useRouter(); const dispatch = useDispatch(); // Setzt OPC-UA-Werte beim Laden der Seite useEffect(() => { if (typeof window !== "undefined") { dispatch(setOpcUaZustand(window.win_opcUaZustand || "Unbekannt")); dispatch( setOpcUaActiveClientCount( Number(window.win_opcUaActiveClientCount) || 0 ) ); dispatch(setOpcUaNodesetName(window.win_opcUaNodesetName || "Unbekannt")); } }, [dispatch]); // Redux-Variablen abrufen & Werte sicherstellen const { kueOnline: kueOnlineRaw, kueVersion, kueCableBreak, kueAlarm1, kueAlarm2, kueGroundFault, } = useSelector((state: RootState) => state.variables); // `kueOnline` sicherstellen, dass es nur Zahlen enthält const kueOnline = useMemo( () => kueOnlineRaw.map((value) => typeof value === "string" ? parseFloat(value) || 0 : value ), [kueOnlineRaw] ); // Modul-Klick-Handler const handleModuleClick = (rackNumber: number) => { router.push(`/kabelueberwachung?rack=${rackNumber}`); }; return (
{/* Header */}

Letzten 20 Meldungen

{/* Hauptbereich mit Meldungstabelle und Baugruppenträger */}
); }; export default Dashboard;