"use client"; // app/dashboard/page.jsx import React, { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import "tailwindcss/tailwind.css"; import "@fontsource/roboto"; import "bootstrap-icons/font/bootstrap-icons.css"; import { loadWindowVariables } from "../utils/loadWindowVariables"; import CPLStatus from "../components/modulesStatus/CPLStatus"; import Access1Status from "../components/modulesStatus/Access1Status"; import Access2Status from "../components/modulesStatus/Access2Status"; import KabelModulStatus from "../components/modulesStatus/KabelModulStatus"; import XioPM1Status from "../components/modulesStatus/XioPM1Status"; import XioPM2Status from "../components/modulesStatus/XioPM2Status"; import { Icon } from "@iconify/react"; function Dashboard() { const [last20Messages, setLast20Messages] = useState([]); const [kueOnline, setkueOnline] = useState([]); const [ip, setIp] = useState(""); const [subnet, setSubnet] = useState(""); const [gateway, setGateway] = useState(""); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [kueCableBreak, setKueCableBreak] = useState([]); const [appVersion, setAppVersion] = useState(""); const router = useRouter(); const parseMessages = (messages) => { 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), ]); }; useEffect(() => { const loadDataOnce = async () => { try { await loadWindowVariables(); // Werte direkt aus `window` zuweisen setLast20Messages(parseMessages(window.last20Messages || "")); setIp(window.ip || ""); setSubnet(window.subnet || ""); setGateway(window.gateway || ""); setAppVersion(window.appVersion || ""); // Verarbeite `kueCableBreak` und `kueOnline` const cableBreakArray = Array.isArray(window.kueCableBreak) ? window.kueCableBreak.map((value, index) => window.kueOnline[index] === 1 ? Number(value) : 0 ) : (window.kueCableBreak || "") .split(",") .map((value, index) => window.kueOnline[index] === 1 ? Number(value) : 0 ); setKueCableBreak(cableBreakArray); const onlineArray = Array.isArray(window.kueOnline) ? window.kueOnline.map(Number) : []; setkueOnline(onlineArray); setLoading(false); } catch (error) { console.error("Fehler beim Laden der Daten:", error); setError(error); setLoading(false); } }; // Sofortiges Laden der Daten einmalig loadDataOnce(); // Starten des Intervalls für regelmäßige Updates const intervalId = setInterval(loadDataOnce, 5000); return () => clearInterval(intervalId); // Bereinigung des Intervalls bei Komponente unmount }, []); const handleModuleClick = (rackNumber) => { router.push(`/kabelueberwachung?rack=${rackNumber}`); }; const renderBaugruppentraeger = () => { const baugruppen = []; const numBaugruppen = Math.ceil(kueOnline.length / 8); for (let i = 0; i < numBaugruppen; i++) { const slots = kueOnline.slice(i * 8, (i + 1) * 8); baugruppen.push(
{slots.map((version, index) => { const slotNumber = i * 8 + index + 1; const isSlotOnline = kueOnline[slotNumber - 1] === 1; const moduleVersion = window.kueVersion ? window.kueVersion[slotNumber - 1] : version; return (
handleModuleClick(i + 1)} >
); })}
); } return baugruppen; }; return (

Letzten 20 Meldungen

{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.

Versionsinformationen

Applikationsversion:{" "} {appVersion}{" "}

Webserverversion: 1.0.0

{loading ? (

Lädt...

) : error ? (

{error.toString()}

) : ( renderBaugruppentraeger() )}
IP Address

IP-Adresse

{ip}

subnet mask

Subnet-Maske

{subnet}

gateway

Gateway

{gateway}

); } export default Dashboard;