"use client"; // /components/main/analogeEingaenge/AnalogInputsSettingsModal.tsx import React, { useEffect, useState } from "react"; interface AnalogInput { id: number; label?: string; offset?: number | string; factor?: number | string; loggerInterval: string; unit?: string; } interface Props { selectedInput: AnalogInput; isOpen: boolean; onClose: () => void; } export default function AnalogInputSettingsModal({ selectedInput, isOpen, onClose, }: Props) { const [label, setLabel] = useState(""); const [offset, setOffset] = useState("0.000"); const [factor, setFactor] = useState("1.000"); const [loggerInterval, setLoggerInterval] = useState("9"); const [unit, setUnit] = useState("V"); const [isSaving, setIsSaving] = useState(false); useEffect(() => { if (selectedInput && isOpen) { setLabel(selectedInput.label || ""); setOffset( typeof selectedInput.offset === "number" ? selectedInput.offset.toFixed(3) : selectedInput.offset || "0.000" ); setFactor( typeof selectedInput.factor === "number" ? selectedInput.factor.toFixed(3) : selectedInput.factor || "1.000" ); setLoggerInterval(selectedInput.loggerInterval); setUnit(selectedInput.unit || "V"); console.log( "selectedInput in analoge Eingänge:", selectedInput.loggerInterval ); } }, [selectedInput, isOpen]); if (!isOpen || !selectedInput) return null; const handleSave = async () => { setIsSaving(true); const slot = selectedInput.id; const isDev = window.location.hostname === "localhost"; const offsetParam = offset.replace(",", "."); const factorParam = factor.replace(",", "."); const loggerParam = loggerInterval; const acn = encodeURIComponent(label); const acu = encodeURIComponent(unit); const url = `/CPL?/Service/ae.ACP&ACN${slot}=${acn}&ACO${slot}=${offsetParam}&ACF${slot}=${factorParam}&ACL${slot}=${loggerParam}&ACU${slot}=${acu}`; try { if (isDev) { await fetch("/api/cpl/updateAnalogInputsSettingsHandler", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ updates: [ { key: "win_analogInputsLabels", index: slot - 1, value: label }, { key: "win_analogInputsOffset", index: slot - 1, value: parseFloat(offsetParam), }, { key: "win_analogInputsFactor", index: slot - 1, value: parseFloat(factorParam), }, { key: "win_analogInputsUnits", index: slot - 1, value: unit }, { key: "win_analogInputsLoggerIntervall", index: slot - 1, value: parseInt(loggerParam), }, ], }), }); alert("Mockdaten gespeichert."); } else { const result = await fetch(url); if (!result.ok) throw new Error("Fehler bei CGI-Aufruf"); alert("Einstellungen gespeichert (Produktion)."); } onClose(); location.reload(); } catch (err) { alert("Fehler beim Speichern."); console.error(err); } finally { setIsSaving(false); } }; return (

Einstellungen Messwerteingang {selectedInput.id}

{/* Bezeichnung */}
Bezeichnung:
setLabel(e.target.value)} />
{/* Offset */}
Offset:
setOffset(e.target.value)} />
{/* Faktor */}
Faktor:
setFactor(e.target.value)} />{" "}
{/* Einheit */}
Einheit:
{/* Loggerintervall/Speicherintervall */}
Speicherintervall:
setLoggerInterval(e.target.value)} /> Minuten
); }