modals ausgelagern von pages/einausgaenge.tsx

This commit is contained in:
Ismail Ali
2025-02-19 13:38:50 +01:00
parent 3b482935d5
commit 6eecd8c96d
3 changed files with 83 additions and 52 deletions

View File

@@ -0,0 +1,29 @@
"use client";
import React from "react";
export default function InputModal({ selectedInput, closeInputModal, isOpen }) {
if (!isOpen || !selectedInput) return null;
return (
<div className="fixed top-0 left-0 w-full h-full bg-black bg-opacity-50 flex justify-center items-center z-50">
<div className="bg-white rounded-lg shadow-lg p-6 w-1/3">
<h2 className="text-lg font-bold mb-4">
Details für Eingang {selectedInput.id}
</h2>
<p>
<strong>Status:</strong>{" "}
{selectedInput.status === "active" ? "Aktiv" : "Inaktiv"}
</p>
<p>
<strong>Beschreibung:</strong> {selectedInput.description}
</p>
<button
onClick={closeInputModal}
className="mt-4 px-4 py-2 bg-blue-500 text-white rounded-lg"
>
Schließen
</button>
</div>
</div>
);
}

View File

@@ -0,0 +1,33 @@
"use client";
import React from "react";
export default function OutputModal({
selectedOutput,
closeOutputModal,
isOpen,
}) {
if (!isOpen || !selectedOutput) return null;
return (
<div className="fixed top-0 left-0 w-full h-full bg-black bg-opacity-50 flex justify-center items-center z-50">
<div className="bg-white rounded-lg shadow-lg p-6 w-1/3">
<h2 className="text-lg font-bold mb-4">
Details für Ausgang {selectedOutput.id}
</h2>
<p>
<strong>Bezeichnung:</strong> {selectedOutput.description}
</p>
<p>
<strong>Status:</strong>{" "}
{selectedOutput.toggle ? "Eingeschaltet" : "Ausgeschaltet"}
</p>
<button
onClick={closeOutputModal}
className="mt-4 px-4 py-2 bg-blue-500 text-white rounded-lg"
>
Schließen
</button>
</div>
</div>
);
}

View File

@@ -1,9 +1,10 @@
"use client"; // Falls notwendig "use client"; // pages/einausgaenge.tsx
import React, { useState, useEffect } from "react"; import React, { useState } from "react";
import { Icon } from "@iconify/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 { useLoadScript } from "../hooks/useLoadScript"; import { useLoadScript } from "../hooks/useLoadScript";
import InputModal from "../components/main/einausgaenge/modals/InputModal";
import OutputModal from "../components/main/einausgaenge/modals/OutputModal";
function EinAusgaenge() { function EinAusgaenge() {
// Digitale Ausgänge (Hooks müssen immer initialisiert werden) // Digitale Ausgänge (Hooks müssen immer initialisiert werden)
@@ -20,8 +21,10 @@ function EinAusgaenge() {
const [isInputModalOpen, setIsInputModalOpen] = useState(false); const [isInputModalOpen, setIsInputModalOpen] = useState(false);
const [isOutputModalOpen, setIsOutputModalOpen] = useState(false); const [isOutputModalOpen, setIsOutputModalOpen] = useState(false);
// Daten laden
const { mockData, isLoading } = useLoadScript(); const { mockData, isLoading } = useLoadScript();
// Funktionen zum Umschalten von Ausgängen
const toggleSwitch = (id) => { const toggleSwitch = (id) => {
setDigitalOutputs((prevOutputs) => setDigitalOutputs((prevOutputs) =>
prevOutputs.map((output) => prevOutputs.map((output) =>
@@ -30,26 +33,27 @@ function EinAusgaenge() {
); );
}; };
// Modal-Funktionen für Eingänge
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);
}; };
// Digitale Eingänge aus Mock-Daten generieren
const digitalInputs = mockData.win_de.map((status, index) => ({ const digitalInputs = mockData.win_de.map((status, index) => ({
id: index + 1, id: index + 1,
status: status === 1 ? "active" : "inactive", status: status === 1 ? "active" : "inactive",
@@ -70,7 +74,6 @@ function EinAusgaenge() {
inputsGroup2={inputsGroup2} inputsGroup2={inputsGroup2}
openInputModal={openInputModal} openInputModal={openInputModal}
/> />
{/* Digitale Ausgänge */} {/* Digitale Ausgänge */}
<DigitalOutputs <DigitalOutputs
digitalOutputs={digitalOutputs} digitalOutputs={digitalOutputs}
@@ -79,53 +82,19 @@ function EinAusgaenge() {
/> />
</div> </div>
{/* Modal für Eingänge */} {/* Eingangs-Modal */}
{isInputModalOpen && ( <InputModal
<div className="fixed top-0 left-0 w-full h-full bg-black bg-opacity-50 flex justify-center items-center z-50"> selectedInput={selectedInput}
<div className="bg-white rounded-lg shadow-lg p-6 w-1/3"> closeInputModal={closeInputModal}
<h2 className="text-lg font-bold mb-4"> isOpen={isInputModalOpen}
Details für Eingang {selectedInput.id} />
</h2>
<p>
<strong>Status:</strong>{" "}
{selectedInput.status === "active" ? "Aktiv" : "Inaktiv"}
</p>
<p>
<strong>Beschreibung:</strong> {selectedInput.description}
</p>
<button
onClick={closeInputModal}
className="mt-4 px-4 py-2 bg-blue-500 text-white rounded-lg"
>
Schließen
</button>
</div>
</div>
)}
{/* Modal für Ausgänge */} {/* Ausgangs-Modal */}
{isOutputModalOpen && ( <OutputModal
<div className="fixed top-0 left-0 w-full h-full bg-black bg-opacity-50 flex justify-center items-center z-50"> selectedOutput={selectedOutput}
<div className="bg-white rounded-lg shadow-lg p-6 w-1/3"> closeOutputModal={closeOutputModal}
<h2 className="text-lg font-bold mb-4"> isOpen={isOutputModalOpen}
Details für Ausgang {selectedOutput.id} />
</h2>
<p>
<strong>Bezeichnung:</strong> {selectedOutput.description}
</p>
<p>
<strong>Status:</strong>{" "}
{selectedOutput.toggle ? "Eingeschaltet" : "Ausgeschaltet"}
</p>
<button
onClick={closeOutputModal}
className="mt-4 px-4 py-2 bg-blue-500 text-white rounded-lg"
>
Schließen
</button>
</div>
</div>
)}
</div> </div>
); );
} }