"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 (
| Eingang | Zustand | Bezeichnung | Aktion |
|---|---|---|---|
|
|
{input.status === "active" ? "●" : "⨉"} | {input.description} |
|
| Ausgang | Bezeichnung | Schalter | Aktion |
|---|---|---|---|
|
|
{output.description} |
|
|
Status:{" "} {selectedInput.status === "active" ? "Aktiv" : "Inaktiv"}
Beschreibung: {selectedInput.description}
Bezeichnung: {selectedOutput.description}
Status:{" "} {selectedOutput.toggle ? "Eingeschaltet" : "Ausgeschaltet"}