diff --git a/apiMockData/SERVICE/analogeEingaengeMockData.js b/apiMockData/SERVICE/analogeEingaengeMockData.js index f785a12..fa6a798 100644 --- a/apiMockData/SERVICE/analogeEingaengeMockData.js +++ b/apiMockData/SERVICE/analogeEingaengeMockData.js @@ -2,8 +2,8 @@ var win_analogInputsValues = [4.771072, 5.665244, 0.005467, -0.007468, 0.000002, 0.000001, 0.000001, 0.000007]; var win_analogInputsNames = ["AE5", "AE 2", "AE 3", "AE 4", "AE 5", "AE 6", "AE 7", "AE 8"]; -var win_analogInputsOffset = [5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]; -var win_analogInputsFactor = [5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]; +var win_analogInputsOffset = [11.001, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0]; +var win_analogInputsFactor = [12.001, 1.0, 1.0, 1, 1.0, 1.0, 1.0, 1.0]; var win_analogInputsloggerIntervall = [5, 10, 10, 10, 10, 10, 10, 10]; var win_analogInputsUnits = ["V", "V", "V", "V", "mA", "mA", "mA", "mA"]; var win_analogInputsWeighting = [0, 0, 0, 0, 0, 0, 0, 0]; diff --git a/components/main/analogeEingaenge/AnalogInputsSettingsModal.tsx b/components/main/analogeEingaenge/AnalogInputsSettingsModal.tsx index 7888a6d..d84730c 100644 --- a/components/main/analogeEingaenge/AnalogInputsSettingsModal.tsx +++ b/components/main/analogeEingaenge/AnalogInputsSettingsModal.tsx @@ -7,23 +7,37 @@ interface Props { onClose: () => void; } -export default function AnalogInputsSettingsModal({ +export default function AnalogInputSettingsModal({ selectedInput, isOpen, onClose, }: Props) { const [name, setName] = useState(""); - const [offset, setOffset] = useState(0); - const [factor, setFactor] = useState(1); - const [loggerInterval, setLoggerInterval] = useState(10); + const [offset, setOffset] = useState("0.000000"); + const [factor, setFactor] = useState("1.000000"); + const [loggerInterval, setLoggerInterval] = useState("10"); + const [unit, setUnit] = useState("V"); const [isSaving, setIsSaving] = useState(false); useEffect(() => { if (selectedInput && isOpen) { setName(selectedInput.name || ""); - setOffset(selectedInput.offset || 0); - setFactor(selectedInput.factor || 1); - setLoggerInterval(selectedInput.loggerInterval || 10); + setOffset( + typeof selectedInput.offset === "number" + ? selectedInput.offset.toFixed(6) + : selectedInput.offset || "0.000000" + ); + setFactor( + typeof selectedInput.factor === "number" + ? selectedInput.factor.toFixed(6) + : selectedInput.factor || "1.000000" + ); + setLoggerInterval( + selectedInput.loggerInterval !== undefined + ? selectedInput.loggerInterval.toString() + : "10" + ); + setUnit(selectedInput.unit || "V"); } }, [selectedInput, isOpen]); @@ -31,39 +45,46 @@ export default function AnalogInputsSettingsModal({ 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(name); - const offsetParam = offset.toString().replace(",", "."); - const factorParam = factor.toString().replace(",", "."); - const loggerParam = loggerInterval.toString(); + const acu = encodeURIComponent(unit); - const url = `/CPL?/Service/ae.ACP&ACN${slot}=${acn}&ACO${slot}=${offsetParam}&ACF${slot}=${factorParam}&ACL${slot}=${loggerParam}`; + const url = `/CPL?/Service/ae.ACP&ACN${slot}=${acn}&ACO${slot}=${offsetParam}&ACF${slot}=${factorParam}&ACL${slot}=${loggerParam}&ACU${slot}=${acu}`; try { if (isDev) { - // Entwicklung: lokale Mock-API await fetch("/api/cpl/updateAnalogInputsSettingsAPIHandler", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ updates: [ { key: "win_analogInputsNames", index: slot - 1, value: name }, - { key: "win_analogInputsOffset", index: slot - 1, value: offset }, - { key: "win_analogInputsFactor", index: slot - 1, value: factor }, + { + 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: loggerInterval, + value: parseInt(loggerParam), }, ], }), }); alert("Mockdaten gespeichert."); } else { - // Produktion: direkter CGI-Befehl const result = await fetch(url); if (!result.ok) throw new Error("Fehler bei CGI-Aufruf"); alert("Einstellungen gespeichert (Produktion)."); @@ -97,19 +118,34 @@ export default function AnalogInputsSettingsModal({ setOffset(parseFloat(e.target.value))} + onChange={(e) => setOffset(e.target.value)} /> setFactor(parseFloat(e.target.value))} + onChange={(e) => setFactor(e.target.value)} /> + + + @@ -117,12 +153,13 @@ export default function AnalogInputsSettingsModal({ type="number" className="w-full border rounded px-3 py-1 mb-4" value={loggerInterval} - onChange={(e) => setLoggerInterval(parseInt(e.target.value))} + onChange={(e) => setLoggerInterval(e.target.value)} />