Konfiguration auf yaml umgestellt

This commit is contained in:
Eric Neuber committed 2026-01-01 20:37:03 +01:00
1 parent e74689c70f
commit 09c41821c8
7 files changed
+283 -123

No files matched your search

+75 -33
View File
@@ -19,27 +19,56 @@ function addRow() {
const newRow = document.createElement('tr');
newRow.setAttribute('data-row', rowCount);
newRow.innerHTML = `
<td><input type='text' class='text-input' data-field='bezeichnung' value='' /></td>
<td><input type='text' class='text-input' data-field='adresse' value='' /></td>
<td><input type='text' class='text-input' data-field='type' value='' /></td>
<td><input type='text' class='text-input' data-field='faktor' value='1.0' /></td>
<td>
<label class='switch'>
<input type='checkbox' class='bool-input' data-field='mqtt' />
<span class='slider'></span>
</label>
</td>
<td>
<label class='switch'>
<input type='checkbox' class='bool-input' data-field='influxdb' />
<span class='slider'></span>
</label>
</td>
<td>
<button class="delete-btn" onclick="deleteRow(this)">🗑️</button>
</td>
`;
if (typeof tableId !== 'undefined' && tableId === 'modbus_coils') {
newRow.innerHTML = `
<td><input type='text' class='text-input' data-field='bezeichnung' value='' /></td>
<td><input type='number' class='text-input' data-field='adresse' value='' /></td>
<td>
<label class='switch'>
<input type='checkbox' class='bool-input' data-field='write' />
<span class='slider'></span>
</label>
</td>
<td>
<label class='switch'>
<input type='checkbox' class='bool-input' data-field='mqtt' />
<span class='slider'></span>
</label>
</td>
<td>
<label class='switch'>
<input type='checkbox' class='bool-input' data-field='influxdb' />
<span class='slider'></span>
</label>
</td>
<td><input type='text' class='text-input' data-field='comment' value='' /></td>
<td>
<button class="delete-btn" onclick="deleteRow(this)">🗑️</button>
</td>
`;
} else {
newRow.innerHTML = `
<td><input type='text' class='text-input' data-field='bezeichnung' value='' /></td>
<td><input type='text' class='text-input' data-field='adresse' value='' /></td>
<td><input type='text' class='text-input' data-field='type' value='' /></td>
<td><input type='text' class='text-input' data-field='faktor' value='1.0' /></td>
<td>
<label class='switch'>
<input type='checkbox' class='bool-input' data-field='mqtt' />
<span class='slider'></span>
</label>
</td>
<td>
<label class='switch'>
<input type='checkbox' class='bool-input' data-field='influxdb' />
<span class='slider'></span>
</label>
</td>
<td>
<button class="delete-btn" onclick="deleteRow(this)">🗑️</button>
</td>
`;
}
tableBody.appendChild(newRow);
}
@@ -63,22 +92,35 @@ async function saveTable() {
const rows = [];
const tableRows = document.querySelectorAll('#tableBody tr');
tableRows.forEach((row) => {
const key = row.querySelector("input[data-field='bezeichnung']").value.trim();
const key = row.querySelector("input[data-field='bezeichnung']")?.value.trim() || row.querySelector("input[data-field='key']")?.value.trim();
if (!key) return; // leere Zeilen überspringen
const addr = parseInt(row.querySelector("input[data-field='addr']")?.value || row.querySelector("input[data-field='adresse']")?.value || '0', 10);
const rtype = row.querySelector("input[data-field='type']")?.value || null;
const factor = parseFloat(row.querySelector("input[data-field='factor']")?.value || row.querySelector("input[data-field='faktor']")?.value || '1.0');
const mqtt = row.querySelector("input[data-field='mqtt']")?.checked || false;
const influxdb = row.querySelector("input[data-field='influxdb']")?.checked || false;
const comment = row.querySelector("input[data-field='comment']")?.value || null;
const value = {
addr: addr,
rtype: rtype,
factor: factor,
mqtt: mqtt,
influxdb: influxdb,
comment: comment
};
let value = {};
if (typeof tableId !== 'undefined' && tableId === 'modbus_coils') {
const write = row.querySelector("input[data-field='write']")?.checked || false;
const comment = row.querySelector("input[data-field='comment']")?.value || null;
value = {
addr: addr,
write: write,
mqtt: mqtt,
influxdb: influxdb,
comment: comment
};
} else {
const rtype = row.querySelector("input[data-field='type']")?.value || null;
const factor = parseFloat(row.querySelector("input[data-field='factor']")?.value || row.querySelector("input[data-field='faktor']")?.value || '1.0');
const comment = row.querySelector("input[data-field='comment']")?.value || null;
value = {
addr: addr,
rtype: rtype,
factor: factor,
mqtt: mqtt,
influxdb: influxdb,
comment: comment
};
}
const obj = {};
obj[key] = value;
rows.push(obj);