"use client"; // /pages/kabelueberwachung.tsx import React, { useState, useEffect } from "react"; import { useRouter, useSearchParams } from "next/navigation"; import Kue705FO from "../components/main/kabelueberwachung/kue705FO/Kue705FO"; import { useDispatch, useSelector } from "react-redux"; import { AppDispatch } from "../redux/store"; // Adjust the path to your Redux store file import { RootState } from "../redux/store"; // Adjust the path to your Redux store file import { getKueDataThunk } from "../redux/thunks/getKueDataThunk"; function Kabelueberwachung() { const dispatch: AppDispatch = useDispatch(); const searchParams = useSearchParams(); // URL-Parameter holen const initialRack = parseInt(searchParams.get("rack")) || 1; // Rack-Nummer aus URL oder 1 const [activeRack, setActiveRack] = useState(initialRack); // Nutze initialRack als Startwert const [alarmStatus, setAlarmStatus] = useState([]); // Alarmstatus // Redux-Variablen aus dem Store abrufen const { kueOnline, kueID, kueIso, kueAlarm1, kueAlarm2, kueResidence, kueCableBreak, kueGroundFault, } = useSelector((state) => state.kueDataSlice); //---------------------------------------------------------------- // 🚀 **TDR-Daten bereits in Redux abrufen** // Redux-Variablen abrufen const tdrData = useSelector((state) => state.tdrChartSlice.data); const loading = useSelector((state) => state.tdrChartSlice.loading); const error = useSelector((state) => state.tdrChartSlice.error); //---------------------------------------------------------------- //---------------------------------------------------------------- // Alarmstatus basierend auf Redux-Variablen berechnen const updateAlarmStatus = () => { const updatedAlarmStatus = kueIso.map((_, index) => { return ( (kueAlarm1 && kueAlarm1[index]) || (kueAlarm2 && kueAlarm2[index]) || (kueCableBreak && kueCableBreak[index]) || (kueGroundFault && kueGroundFault[index]) ); }); setAlarmStatus(updatedAlarmStatus); }; // Alarmstatus initial berechnen und alle 10 Sekunden aktualisieren useEffect(() => { updateAlarmStatus(); const interval = setInterval(updateAlarmStatus, 10000); return () => clearInterval(interval); }, [kueIso, kueAlarm1, kueAlarm2, kueCableBreak, kueGroundFault]); // Modul- und Rack-Daten aufbereiten const allModules = kueIso.map((iso, index) => ({ isolationswert: iso, schleifenwiderstand: kueResidence[index], modulName: kueID[index] || `Modul ${index + 1}`, // Eindeutiger Name pro Index kueOnlineStatus: kueOnline[index], alarmStatus: alarmStatus[index], })); //console.log("Alle Module:", allModules); const racks = { rack1: allModules.slice(0, 8), rack2: allModules.slice(8, 16), rack3: allModules.slice(16, 24), rack4: allModules.slice(24, 32), }; // Konsolenausgaben für jede Rack-Aufteilung /* console.log( "Rack 1 Module:", racks.rack1.map((slot) => slot.modulName) ); console.log( "Rack 2 Module:", racks.rack2.map((slot) => slot.modulName) ); console.log( "Rack 3 Module:", racks.rack3.map((slot) => slot.modulName) ); console.log( "Rack 4 Module:", racks.rack4.map((slot) => slot.modulName) ); */ // Funktion zum Wechseln des Racks const changeRack = (rack) => { setActiveRack(rack); console.log(`Aktives Rack geändert zu: ${rack}`); }; useEffect(() => { /* console.log(`Aktives Rack: ${activeRack}`); console.log( `Rack ${activeRack} Modulnamen:`, racks[`rack${activeRack}`].map((slot) => slot.modulName) ); */ }, [activeRack, racks]); //----------------------------------------------------------- const { data: loopData, loading: loopLoading, error: loopError, } = useSelector((state: RootState) => state.loopChartSlice); // Zugriff z. B. auf Schleifenwiderstand von DIA1 const dia1Schleifen = loopData["DIA1"]?.[4]; const dia0Iso = loopData["DIA0"]?.[3]; //------------------------------------------------------------ useEffect(() => { if (kueIso.length === 0) { console.log("📦 Lade KUE-Daten aus getKueDataThunk..."); dispatch(getKueDataThunk()); } }, []); //------------------------------------------------------------ //---------------------------------------------------------------- return (