Digitale Ausgänge von window laden, stae und Bezeichnung
This commit is contained in:
@@ -6,5 +6,5 @@
|
|||||||
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
|
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
|
||||||
|
|
||||||
*/
|
*/
|
||||||
const webVersion = "1.6.54";
|
const webVersion = "1.6.55";
|
||||||
export default webVersion;
|
export default webVersion;
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
// hokks/useLoadDigitalOutputs.ts
|
|
||||||
import { useEffect, useState } from "react";
|
|
||||||
|
|
||||||
export function useLoadDigitalOutputs() {
|
|
||||||
const [digitalOutputs, setDigitalOutputs] = useState([]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
fetch("/CPLmockData/digitaleausgaengeMockData.json")
|
|
||||||
.then((response) => response.json())
|
|
||||||
.then((data) => setDigitalOutputs(data))
|
|
||||||
.catch((error) =>
|
|
||||||
console.error("Fehler beim Laden der digitalen Ausgänge:", error)
|
|
||||||
);
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return { digitalOutputs, setDigitalOutputs };
|
|
||||||
}
|
|
||||||
@@ -1,30 +1,63 @@
|
|||||||
"use client"; // pages/einausgaenge.tsx
|
"use client";
|
||||||
import React, { useState } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import DigitalOutputs from "../components/main/einausgaenge/DigitalOutputs";
|
import DigitalOutputs from "../components/main/einausgaenge/DigitalOutputs";
|
||||||
import DigitalInputs from "../components/main/einausgaenge/DigitalInputs";
|
import DigitalInputs from "../components/main/einausgaenge/DigitalInputs";
|
||||||
import { useDigitalInputData } from "../hooks/einausgaenge/useDigitalInputData";
|
|
||||||
import InputModal from "../components/main/einausgaenge/modals/InputModal";
|
import InputModal from "../components/main/einausgaenge/modals/InputModal";
|
||||||
import OutputModal from "../components/main/einausgaenge/modals/OutputModal";
|
import OutputModal from "../components/main/einausgaenge/modals/OutputModal";
|
||||||
|
import { useDigitalInputData } from "../hooks/einausgaenge/useDigitalInputData";
|
||||||
|
|
||||||
function EinAusgaenge() {
|
function EinAusgaenge() {
|
||||||
// Digitale Ausgänge (Hooks müssen immer initialisiert werden)
|
// Zustand für digitale Ausgänge
|
||||||
const [digitalOutputs, setDigitalOutputs] = useState([
|
const [digitalOutputs, setDigitalOutputs] = useState([]);
|
||||||
{ id: 1, description: "Ausgang1", toggle: true },
|
const [isLoadingOutputs, setIsLoadingOutputs] = useState(true);
|
||||||
{ id: 2, description: "Ausgang2", toggle: false },
|
|
||||||
{ id: 3, description: "Ausgang3", toggle: true },
|
|
||||||
{ id: 4, description: "Ausgang4", toggle: false },
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Modal-Zustände
|
// Zustand für Modale
|
||||||
const [selectedInput, setSelectedInput] = useState(null);
|
const [selectedInput, setSelectedInput] = useState(null);
|
||||||
const [selectedOutput, setSelectedOutput] = useState(null);
|
const [selectedOutput, setSelectedOutput] = useState(null);
|
||||||
const [isInputModalOpen, setIsInputModalOpen] = useState(false);
|
const [isInputModalOpen, setIsInputModalOpen] = useState(false);
|
||||||
const [isOutputModalOpen, setIsOutputModalOpen] = useState(false);
|
const [isOutputModalOpen, setIsOutputModalOpen] = useState(false);
|
||||||
|
|
||||||
// Daten laden
|
// Laden der digitalen Eingänge
|
||||||
const { mockData, isLoading } = useDigitalInputData();
|
const { mockData, isLoading: isLoadingInputs } = useDigitalInputData();
|
||||||
|
|
||||||
// Funktionen zum Umschalten von Ausgängen
|
// Laden der digitalen Ausgänge
|
||||||
|
useEffect(() => {
|
||||||
|
const script = document.createElement("script");
|
||||||
|
script.src = "/CPLmockData/SERVICE/da.js";
|
||||||
|
script.async = true;
|
||||||
|
|
||||||
|
script.onload = () => {
|
||||||
|
const da = window.win_da_state;
|
||||||
|
const bezeichnungen = window.win_da_bezeichnung;
|
||||||
|
console.log("da : ", da);
|
||||||
|
console.log("bezeichnungen : ", bezeichnungen);
|
||||||
|
|
||||||
|
if (da && bezeichnungen) {
|
||||||
|
const outputs = da.map((status, index) => ({
|
||||||
|
id: index + 1,
|
||||||
|
description: bezeichnungen[index] || `Ausgang${index + 1}`,
|
||||||
|
toggle: status === 1,
|
||||||
|
}));
|
||||||
|
setDigitalOutputs(outputs);
|
||||||
|
} else {
|
||||||
|
console.error("Daten konnten nicht geladen werden.");
|
||||||
|
}
|
||||||
|
setIsLoadingOutputs(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
script.onerror = () => {
|
||||||
|
console.error("Fehler beim Laden der da.js-Datei.");
|
||||||
|
setIsLoadingOutputs(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
document.body.appendChild(script);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
document.body.removeChild(script);
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
// Funktion zum Umschalten des Ausgangs
|
||||||
const toggleSwitch = (id) => {
|
const toggleSwitch = (id) => {
|
||||||
setDigitalOutputs((prevOutputs) =>
|
setDigitalOutputs((prevOutputs) =>
|
||||||
prevOutputs.map((output) =>
|
prevOutputs.map((output) =>
|
||||||
@@ -33,21 +66,22 @@ function EinAusgaenge() {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Modal-Funktionen für Eingänge
|
// Funktionen zum Öffnen und Schließen der Modale
|
||||||
const openInputModal = (input) => {
|
const openInputModal = (input) => {
|
||||||
setSelectedInput(input);
|
setSelectedInput(input);
|
||||||
setIsInputModalOpen(true);
|
setIsInputModalOpen(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const closeInputModal = () => {
|
const closeInputModal = () => {
|
||||||
setSelectedInput(null);
|
setSelectedInput(null);
|
||||||
setIsInputModalOpen(false);
|
setIsInputModalOpen(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Modal-Funktionen für Ausgänge
|
|
||||||
const openOutputModal = (output) => {
|
const openOutputModal = (output) => {
|
||||||
setSelectedOutput(output);
|
setSelectedOutput(output);
|
||||||
setIsOutputModalOpen(true);
|
setIsOutputModalOpen(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const closeOutputModal = () => {
|
const closeOutputModal = () => {
|
||||||
setSelectedOutput(null);
|
setSelectedOutput(null);
|
||||||
setIsOutputModalOpen(false);
|
setIsOutputModalOpen(false);
|
||||||
@@ -75,26 +109,27 @@ function EinAusgaenge() {
|
|||||||
openInputModal={openInputModal}
|
openInputModal={openInputModal}
|
||||||
/>
|
/>
|
||||||
{/* Digitale Ausgänge */}
|
{/* Digitale Ausgänge */}
|
||||||
<DigitalOutputs
|
{!isLoadingOutputs && (
|
||||||
digitalOutputs={digitalOutputs}
|
<DigitalOutputs
|
||||||
openOutputModal={openOutputModal}
|
digitalOutputs={digitalOutputs}
|
||||||
toggleSwitch={toggleSwitch}
|
openOutputModal={openOutputModal}
|
||||||
/>
|
toggleSwitch={toggleSwitch}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Eingangs-Modal */}
|
{/* Eingangs-Modal */}
|
||||||
<InputModal
|
{isInputModalOpen && selectedInput && (
|
||||||
selectedInput={selectedInput}
|
<InputModal selectedInput={selectedInput} onClose={closeInputModal} />
|
||||||
closeInputModal={closeInputModal}
|
)}
|
||||||
isOpen={isInputModalOpen}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{/* Ausgangs-Modal */}
|
{/* Ausgangs-Modal */}
|
||||||
<OutputModal
|
{isOutputModalOpen && selectedOutput && (
|
||||||
selectedOutput={selectedOutput}
|
<OutputModal
|
||||||
closeOutputModal={closeOutputModal}
|
selectedOutput={selectedOutput}
|
||||||
isOpen={isOutputModalOpen}
|
onClose={closeOutputModal}
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
3
public/CPLmockData/SERVICE/da.js
Normal file
3
public/CPLmockData/SERVICE/da.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
// public/CPLmockData/SERVICE/da.js
|
||||||
|
win_da_state = [1, 0, 1, 0];
|
||||||
|
win_da_bezeichnung = ["Ausgang1", "Ausgang2", "Ausgang3", "Ausgang4"];
|
||||||
@@ -57,6 +57,8 @@ export async function loadWindowVariables(): Promise<WindowVariables> {
|
|||||||
"win_opcUaZustand",
|
"win_opcUaZustand",
|
||||||
"win_opcUaActiveClientCount",
|
"win_opcUaActiveClientCount",
|
||||||
"win_opcUaNodesetName",
|
"win_opcUaNodesetName",
|
||||||
|
"win_da_state",
|
||||||
|
"win_da_bezeichnung",
|
||||||
];
|
];
|
||||||
|
|
||||||
const loadScript = (src: string): Promise<void> => {
|
const loadScript = (src: string): Promise<void> => {
|
||||||
@@ -75,6 +77,7 @@ export async function loadWindowVariables(): Promise<WindowVariables> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const scripts: string[] = [
|
const scripts: string[] = [
|
||||||
|
"da.js",
|
||||||
"de.js",
|
"de.js",
|
||||||
"ae.js",
|
"ae.js",
|
||||||
"kueData.js",
|
"kueData.js",
|
||||||
|
|||||||
Reference in New Issue
Block a user