paramod-rust/static/settings.js
2026-01-14 18:41:57 +01:00

86 lines
3.1 KiB
JavaScript

async function saveSettings() {
// 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,
button_circulation: document.getElementById('mqtt_button_circulation').value || null
};
// 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
};
// 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
};
// Default (für [default])
const defaultConfig = {
loglevel: document.getElementById('loglevel')?.value || null
};
const settings = {
default: defaultConfig,
mqtt,
influxdb,
modbus
};
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!';
} 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!';
}
}
// Darkmode Toggle
document.addEventListener('DOMContentLoaded', function() {
const btn = document.getElementById('darkmode-toggle');
if (!btn) return;
// Initialer Zustand aus LocalStorage
if (localStorage.getItem('darkmode') === 'true') {
document.body.classList.add('darkmode');
}
btn.addEventListener('click', function() {
document.body.classList.toggle('darkmode');
localStorage.setItem('darkmode', document.body.classList.contains('darkmode'));
});
});