import React, { useState, useEffect } from "react"; // omponents/modales/settingsModal.jsx import ReactModal from "react-modal"; import { ClipLoader } from "react-spinners"; import "bootstrap-icons/font/bootstrap-icons.css"; // Import Bootstrap Icons import { useSelector } from "react-redux"; // Definiere das App-Element für ReactModal ReactModal.setAppElement("#__next"); function SettingModal({ showModal, onClose }) { // Redux-Werte abrufen const deviceName_Redux = useSelector((state) => state.variables.deviceName); const mac1_Redux = useSelector((state) => state.variables.mac1); const mac2_Redux = useSelector((state) => state.variables.mac2); const ip_Redux = useSelector((state) => state.variables.ip); const subnet_Redux = useSelector((state) => state.variables.subnet); const gateway_Redux = useSelector((state) => state.variables.gateway); const datetime_Redux = useSelector((state) => state.variables.datetime); const ntp1_Redux = useSelector((state) => state.variables.ntp1); const ntp2_Redux = useSelector((state) => state.variables.ntp2); const ntp3_Redux = useSelector((state) => state.variables.ntp3); const ntpTimezone_Redux = useSelector((state) => state.variables.ntpTimezone); const active_Redux = useSelector((state) => state.variables.ntpActive); // Lokale State-Variablen zum Bearbeiten const [name, setName] = useState(deviceName_Redux || ""); const [mac1, setMac1] = useState(mac1_Redux || ""); const [mac2, setMac2] = useState(mac2_Redux || ""); const [ip, setIp] = useState(ip_Redux || ""); const [subnet, setSubnet] = useState(subnet_Redux || ""); const [gateway, setGateway] = useState(gateway_Redux || ""); const [systemUhr, setSystemUhr] = useState(datetime_Redux || ""); const [ntp1, setNtp1] = useState(ntp1_Redux || ""); const [ntp2, setNtp2] = useState(ntp2_Redux || ""); const [ntp3, setNtp3] = useState(ntp3_Redux || ""); const [ntpTimezone, setNtpTimezone] = useState(ntpTimezone_Redux || ""); const [active, setActive] = useState(active_Redux || ""); const [showRebootModal, setShowRebootModal] = useState(false); // Originalwerte speichern const [originalValues, setOriginalValues] = useState({}); // Effekt, um Redux-Werte beim Anzeigen des Modals in lokale State-Variablen zu setzen const handleReboot = () => { if ( window.confirm("Sind Sie sicher, dass Sie den CPL neu starten möchten?") ) { fetch(`CPL?KUEdetail.ACP&BOOT=1`, { method: "GET" }).finally(() => { window.location.href = `/wait`; //auf Client-Seite }); } }; const handleClearDatabase = () => { if ( window.confirm("Sind Sie sicher, dass Sie die Datenbank leeren möchten?") ) { const clearDbUrl = `CPL?KUEdetail.ACP&DEDB=1`; fetch(clearDbUrl) .then((response) => { if (response.ok) { alert("Befehl zum Leeren der Datenbank erfolgreich gesendet!"); } else { alert("Fehler beim Senden des Befehls zum Leeren der Datenbank!"); } }) .catch((error) => { console.error("Fehler:", error); alert("Fehler beim Senden des Befehls zum Leeren der Datenbank!"); }); } }; const handleSubmit = () => { const changes = {}; // Überprüfe, welche Werte sich geändert haben if (name !== originalValues.name) { changes.SNNA = name; } if (ip !== originalValues.ip) { changes.SEI01 = ip; } if (subnet !== originalValues.subnet) { changes.SEI02 = subnet; } if (gateway !== originalValues.gateway) { changes.SEI03 = gateway; } if (ntp1 !== originalValues.ntp1) { changes.SNIP1 = ntp1; } if (ntp2 !== originalValues.ntp2) { changes.SNIP2 = ntp2; } if (ntp3 !== originalValues.ntp3) { changes.SNIP3 = ntp3; } if (ntpTimezone !== originalValues.ntpTimezone) { changes.SNTZ = ntpTimezone; } if (active !== originalValues.active) { changes.SNAC = active; } // Falls Änderungen vorhanden sind, sende die neuen Daten if (Object.keys(changes).length > 0) { let url = `CPL?KUEdetail.ACP`; Object.keys(changes).forEach((paramKey) => { url += `&${paramKey}=${encodeURIComponent(changes[paramKey])}`; }); fetch(url, { method: "GET" }) .then((response) => { if (response.ok) { alert("Daten erfolgreich gesendet!"); } else { alert("Daten erfolgreich gesendet!"); //alert("Fehler beim Senden der Daten!"); weil wird sofort ausgefüht und bekommt kein Antwort } }) .catch((error) => { console.error("Fehler:", error); //alert("Fehler beim Senden der Daten!"); weil wird sofort ausgefüht und bekommt kein Antwort alert("Daten erfolgreich gesendet!"); }); } else { alert("Keine Änderungen vorgenommen."); } }; const handleSetDateTime = () => { const currentDate = new Date(); // Format date and time as required by the system: const year = currentDate.getFullYear().toString().slice(-2); // Last two digits of the year const month = String(currentDate.getMonth() + 1).padStart(2, "0"); // Month (1-12) const day = String(currentDate.getDate()).padStart(2, "0"); // Day (1-31) const hours = String(currentDate.getHours()).padStart(2, "0"); // Hours (0-23) const minutes = String(currentDate.getMinutes()).padStart(2, "0"); // Minutes (0-59) const seconds = String(currentDate.getSeconds()).padStart(2, "0"); // Seconds (0-59) // Date command const dateCommand = `CLK00=${year}-${month}-${day}`; // Time command const timeCommand = `CLK01=${hours}-${minutes}-${seconds}`; // Send the commands to the server using fetch and GET method fetch(`/CPL?${dateCommand}`, { method: "GET" }) .then((response) => { if (response.ok) { alert("Datum erfolgreich gesetzt!"); return fetch(`/CPL?${timeCommand}`, { method: "GET" }); } else { alert("Fehler beim Setzen des Datums!"); throw new Error("Date setting failed."); } }) .then((response) => { if (response.ok) { alert("Uhrzeit erfolgreich gesetzt!"); } else { alert("Fehler beim Setzen der Uhrzeit!"); } }) .catch((error) => { console.error("Fehler:", error); alert("Fehler beim Setzen von Datum und Uhrzeit!"); }); }; //--------------------------------------------------- useEffect(() => { if (showModal) { setName(deviceName_Redux || ""); setMac1(mac1_Redux || ""); setMac2(mac2_Redux || ""); setIp(ip_Redux || ""); setSubnet(subnet_Redux || ""); setGateway(gateway_Redux || ""); setSystemUhr(datetime_Redux || ""); setNtp1(ntp1_Redux || ""); setNtp2(ntp2_Redux || ""); setNtp3(ntp3_Redux || ""); setNtpTimezone(ntpTimezone_Redux || ""); setActive(active_Redux || ""); } }, [ showModal, deviceName_Redux, mac1_Redux, mac2_Redux, ip_Redux, subnet_Redux, gateway_Redux, datetime_Redux, ntp1_Redux, ntp2_Redux, ntp3_Redux, ntpTimezone_Redux, active_Redux, ]); //--------------------------------------------------- useEffect(() => { setOriginalValues({ name: deviceName_Redux, ip: ip_Redux, subnet: subnet_Redux, gateway: gateway_Redux, ntp1: ntp1_Redux, ntp2: ntp2_Redux, ntp3: ntp3_Redux, ntpTimezone: ntpTimezone_Redux, active: active_Redux, }); }, [ deviceName_Redux, ip_Redux, subnet_Redux, gateway_Redux, ntp1_Redux, ntp2_Redux, ntp3_Redux, ntpTimezone_Redux, active_Redux, ]); //--------------------------------------------------- return ( <> {/* Modal-Inhalt */} {/* Weitere Inhalte wie Formular */}

System:

setName(e.target.value)} />
setMac1(e.target.value)} disabled />
setMac2(e.target.value)} disabled />
setIp(e.target.value)} />
setSubnet(e.target.value)} />
setGateway(e.target.value)} />
{/* Button für Systemzeit übernehmen */} {/*
*/}
{/* SNTP Client */}

SNTP Client:

setNtp1(e.target.value)} />
setNtp2(e.target.value)} />
setNtp3(e.target.value)} />
setNtpTimezone(e.target.value)} />
setActive(e.target.value)} />
{/* Datenbank leeren und Neustart CPL */} {/*
*/} {/* Modal Footer */}
{/* Reboot Modal */}

CPL wird neu gestartet...

{/* Spinner */}

Bitte warten Sie 5 Sekunden...

); } export default SettingModal;