// Setze den Wert des Darkmode-Schalters beim Laden der Seite, sobald das Element existiert document.addEventListener('DOMContentLoaded', function() { fetch('/api/config') .then(response => response.json()) .then(config => { function setSwitch() { const el = document.getElementById('darkmode_switch'); if (el) { if (config && config.default && (config.default.darkmode === true || config.default.darkmode === 'true')) { el.checked = true; document.body.classList.add('darkmode'); } else { el.checked = false; document.body.classList.remove('darkmode'); } // Event Listener für Umschalten el.addEventListener('change', function() { if (el.checked) { document.body.classList.add('darkmode'); } else { document.body.classList.remove('darkmode'); } }); } else { setTimeout(setSwitch, 50); } } setSwitch(); }); }); async function saveSettings() { // Default (für [default]) const darkmode = document.getElementById('darkmode_switch')?.checked ?? null; const defaultConfig = { loglevel: document.getElementById('loglevel')?.value || null, darkmode: darkmode }; // Modbus const modbus = { host: document.getElementById('modbus_host').value, port: parseInt(document.getElementById('modbus_port').value, 10), max_coils_addr: parseInt(document.getElementById('modbus_max_coils_addr').value, 10) || null, max_input_addr: parseInt(document.getElementById('modbus_max_input_addr').value, 10) || null, max_holding_addr: parseInt(document.getElementById('modbus_max_holding_addr').value, 10) || null, modbus_coils: null, modbus_input_register: null, modbus_holding_register: null, }; // MQTT const mqtt = { broker: document.getElementById('mqtt_broker').value, port: parseInt(document.getElementById('mqtt_port').value, 10), user: document.getElementById('mqtt_user').value || null, password: document.getElementById('mqtt_password').value || null, path: document.getElementById('mqtt_path')?.value || null, leitsystem_path: document.getElementById('mqtt_leitsystem_path')?.value || null, set_write_interval_ms: parseInt(document.getElementById('mqtt_set_write_interval_ms')?.value, 10) || 2000 }; // InfluxDB const influxdb = { url: document.getElementById('influxdb_url').value, token: document.getElementById('influxdb_token').value, bucket: document.getElementById('influxdb_bucket').value, org: document.getElementById('influxdb_org').value, location: document.getElementById('influxdb_location').value || null, measurement: document.getElementById('influxdb_measurement').value || null }; const settings = { default: defaultConfig, modbus, mqtt, influxdb }; try { const response = await fetch('/api/save-settings', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(settings) }); const messageDiv = document.getElementById('message'); if (response.ok) { messageDiv.className = 'message success'; messageDiv.textContent = '✓ Einstellungen erfolgreich gespeichert!'; setTimeout(() => { window.location.reload(); }, 1000); } else { messageDiv.className = 'message error'; messageDiv.textContent = '✗ Fehler beim Speichern der Einstellungen!'; setTimeout(() => { messageDiv.style.display = 'none'; }, 3000); } } catch (error) { const messageDiv = document.getElementById('message'); messageDiv.className = 'message error'; messageDiv.textContent = '✗ Verbindungsfehler!'; } }