"use client"; // Falls notwendig import React, { useState, useEffect } from "react"; import { Icon } from "@iconify/react"; function EinAusgaenge() { const [mockData, setMockData] = useState({ win_de: Array(32).fill(0), win_counter: Array(32).fill(0), win_flutter: Array(32).fill(0), }); const [isLoading, setIsLoading] = useState(true); // Digitale Ausgänge (Hooks müssen immer initialisiert werden) const [digitalOutputs, setDigitalOutputs] = useState([ { id: 1, description: "Ausgang1", toggle: true }, { id: 2, description: "Ausgang2", toggle: false }, { id: 3, description: "Ausgang3", toggle: true }, { id: 4, description: "Ausgang4", toggle: false }, ]); // Modal-Zustände const [selectedInput, setSelectedInput] = useState(null); const [selectedOutput, setSelectedOutput] = useState(null); const [isInputModalOpen, setIsInputModalOpen] = useState(false); const [isOutputModalOpen, setIsOutputModalOpen] = useState(false); useEffect(() => { const isDevelopment = process.env.NODE_ENV === "development"; const script = document.createElement("script"); script.src = isDevelopment ? "/CPLmockData/SERVICE/de.js" : "/CPL/SERVICE/de.js"; script.async = true; script.onload = () => { try { if ( typeof win_de !== "undefined" && typeof win_counter !== "undefined" && typeof win_flutter !== "undefined" ) { setMockData({ win_de, win_counter, win_flutter, }); } else { console.error("Mock-Daten konnten nicht geladen werden."); } } catch (error) { console.error("Fehler beim Zugriff auf die globalen Daten:", error); } finally { setIsLoading(false); } }; script.onerror = () => { console.error("Fehler beim Laden der Skript-Datei:", script.src); setIsLoading(false); }; document.body.appendChild(script); return () => { document.body.removeChild(script); }; }, []); const toggleSwitch = (id) => { setDigitalOutputs((prevOutputs) => prevOutputs.map((output) => output.id === id ? { ...output, toggle: !output.toggle } : output ) ); }; const openInputModal = (input) => { setSelectedInput(input); setIsInputModalOpen(true); }; const closeInputModal = () => { setSelectedInput(null); setIsInputModalOpen(false); }; const openOutputModal = (output) => { setSelectedOutput(output); setIsOutputModalOpen(true); }; const closeOutputModal = () => { setSelectedOutput(null); setIsOutputModalOpen(false); }; const digitalInputs = mockData.win_de.map((status, index) => ({ id: index + 1, status: status === 1 ? "active" : "inactive", description: `DE${index + 1}`, isInverted: false, })); const inputsGroup1 = digitalInputs.slice(0, 16); const inputsGroup2 = digitalInputs.slice(16); return (

Ein- und Ausgänge

{/* Digitale Eingänge */}

Digitale Eingänge

{[inputsGroup1, inputsGroup2].map((group, index) => (
{group.map((input) => ( ))}
Eingang Zustand Bezeichnung Aktion
{input.id} {input.status === "active" ? "●" : "⨉"} {input.description} openInputModal(input)} />
))}
{/* Digitale Ausgänge */}

Digitale Ausgänge

{digitalOutputs.map((output) => ( ))}
Ausgang Bezeichnung Schalter Aktion
{output.id} {output.description} toggleSwitch(output.id)} className={`cursor-pointer text-2xl transform ${ output.toggle ? "text-blue-500 scale-x-100" : "text-gray-500 scale-x-[-1]" }`} title={`Schalter ${ output.toggle ? "EIN" : "AUS" } schalten`} /> openOutputModal(output)} />
{/* Modal für Eingänge */} {isInputModalOpen && (

Details für Eingang {selectedInput.id}

Status:{" "} {selectedInput.status === "active" ? "Aktiv" : "Inaktiv"}

Beschreibung: {selectedInput.description}

)} {/* Modal für Ausgänge */} {isOutputModalOpen && (

Details für Ausgang {selectedOutput.id}

Bezeichnung: {selectedOutput.description}

Status:{" "} {selectedOutput.toggle ? "Eingeschaltet" : "Ausgeschaltet"}

)}
); } export default EinAusgaenge;