"use client"; // /components/main/digitalOutputs/DigitalOutputsWidget.tsx import React from "react"; import { useSelector, useDispatch } from "react-redux"; import { RootState, AppDispatch } from "../../../redux/store"; import { Icon } from "@iconify/react"; import settingsIcon from "@iconify/icons-mdi/settings"; import outputIcon from "@iconify/icons-mdi/output"; import switchIcon from "@iconify/icons-ion/switch"; import { setDigitalOutputs } from "@/redux/slices/digitalOutputsSlice"; import type { DigitalOutput } from "@/types/digitalOutput"; export interface DigitalOutputsWidgetProps { openOutputModal: (output: DigitalOutput) => void; } export default function DigitalOutputsWidget({ openOutputModal, }: DigitalOutputsWidgetProps) { const dispatch = useDispatch(); const digitalOutputs = useSelector( (state: RootState) => state.digitalOutputsSlice.outputs ); const isCPL = process.env.NEXT_PUBLIC_NODE_ENV === "production"; const handleToggle = async (id: number) => { const updatedOutputs = digitalOutputs.map((output) => output.id === id ? { ...output, status: !output.status } : output ); dispatch(setDigitalOutputs(updatedOutputs)); try { if (isCPL) { // Statt redirect: // window.location.href = `/CPL?...`; // Verwende fetch: fetch( `/CPL?digitalOutputs.html&DAS0${id}=${ updatedOutputs[id - 1].status ? 1 : 0 }`, { method: "GET", } ) .then((res) => { if (!res.ok) throw new Error("Fehler beim Schalten"); // Optional: Feedback anzeigen }) .catch((err) => { console.error("CPL Fehler:", err); }); } else { await fetch("/api/cpl/updateDigitalOutputsHandler", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ outputs: updatedOutputs }), }); } console.log("✅ Ausgang aktualisiert:", id); } catch (error) { console.error("❌ Fehler beim Schreiben:", error); } }; return (

Schaltausgänge

{digitalOutputs.map((output) => ( ))}
Ausgang Bezeichnung Schalter Aktion
{output.id} {output.label} handleToggle(output.id)} /> openOutputModal(output)} />
); }