gh-5 Update datatable on coil/register status pages instead of appending to it

This commit is contained in:
Jarno Rankinen 2023-02-12 13:42:11 +02:00
parent e780ced158
commit 0baf86c67f
1 changed files with 55 additions and 37 deletions

View File

@ -14,49 +14,67 @@ function timeStamp() {
} }
function coils(data) { function coils(data) {
datable = document.getElementById('datatable') if (document.getElementById("coilval_0") == null) {
for (n=0; n<data.length; n++) {
tablerow = document.createElement("tr")
fields = ["address", "value", "symbol", "description"]
for (n=0; n<data.length; n++) { for (i=0; i<fields.length; i++) {
tablerow = document.createElement("tr") td = document.createElement("td")
fields = ["address", "value", "symbol", "description"] if (fields[i] == "value") {
value = document.createTextNode(Number(data[n][fields[i]]))
td.id = "coilval_" + n;
} else {
value = document.createTextNode(data[n][fields[i]])
}
td.appendChild(value)
tablerow.appendChild(td)
}
for (i=0; i<fields.length; i++) { datatable.appendChild(tablerow)
td = document.createElement("td") }
if (fields[i] == "value") { } else {
value = document.createTextNode(Number(data[n][fields[i]])) for (n=0; n<data.length; n++) {
} else { coilval = document.getElementById("coilval_" + n);
value = document.createTextNode(data[n][fields[i]]) coilval.innerHTML = Number(data[n]["value"])
} }
td.appendChild(value) }
tablerow.appendChild(td)
}
datatable.appendChild(tablerow)
}
} }
function registers(data) { function registers(data) {
console.log(`${timeStamp()} Filling register data...`) if (document.getElementById("regval_0") == null) {
datable = document.getElementById('datatable') console.log(`${timeStamp()} Filling register data...`)
for (n=0; n<data.length; n++) {
tablerow = document.createElement("tr")
fields = ["address", "value", "symbol", "description"]
for (n=0; n<data.length; n++) { for (i=0; i<fields.length; i++) {
tablerow = document.createElement("tr") td = document.createElement("td")
fields = ["address", "value", "symbol", "description"] if (fields[i] == "value" && data[n].type == "bitfield") {
value = document.createTextNode(data[n].bitfield)
} else {
value = document.createTextNode(data[n][fields[i]])
}
if (fields[i] == "value") {
td.id = "regval_" + n;
}
td.appendChild(value)
tablerow.appendChild(td)
}
for (i=0; i<fields.length; i++) { datatable.appendChild(tablerow)
td = document.createElement("td") }
if (fields[i] == "value" && data[n].type == "bitfield") { console.log(`${timeStamp()} Done.`)
value = document.createTextNode(data[n].bitfield) } else {
} else { for (n=0; n<data.length; n++) {
value = document.createTextNode(data[n][fields[i]]) regval = document.getElementById("regval_" + n);
} if (data[n].type == "bitfield") {
td.appendChild(value) regval.innerHTML = data[n]["bitfield"]
tablerow.appendChild(td) } else {
} regval.innerHTML = data[n]["value"]
}
datatable.appendChild(tablerow) }
} }
console.log(`${timeStamp()} Done.`)
} }
function getData() { function getData() {
@ -101,4 +119,4 @@ function getData() {
// Using setTimeout instead of setInterval to avoid possible connection issues // Using setTimeout instead of setInterval to avoid possible connection issues
// There's no need to update exactly every 5 seconds, the skew is fine // There's no need to update exactly every 5 seconds, the skew is fine
setTimeout(getData, 5*1000); setTimeout(getData, 5*1000);
} }