function zeroPad(number) { return ("0" + number).slice(-2) } function timeStamp() { now = new Date() Y = now.getFullYear() m = now.getMonth() d = now.getDate() H = zeroPad(now.getHours()) M = zeroPad(now.getMinutes()) S = zeroPad(now.getSeconds()) return `${Y}-${m}-${d} ${H}:${M}:${S}` } function coils(data) { if (document.getElementById("coilval_0") == null) { for (n=0; n {coilval.className = ""}, 1000) } else { coilval.className = "" } } } } function registers(data) { if (document.getElementById("regval_0") == null) { console.log(`${timeStamp()} Filling register data...`) for (n=0; n {regval.className = ""}, 1000) } else { regval.className = "" } } } } function getData() { // document.getElementById('time').innerHTML = `${Y}-${m}-${d} ${H}:${M}:${S}` document.getElementById('time').innerHTML = timeStamp() error = false // The same index.html is used for both coil and register data, // change api url based on which we're looking at if (document.location.pathname == "/coils/") { url = "/api/v1/coils" document.getElementById("title").innerHTML = "Coils | Enervent Pingvin Kotilämpö" document.getElementById('caption').innerHTML = "Coil values at " } else if (document.location.pathname == "/registers/") { url = "/api/v1/registers" document.getElementById("title").innerHTML = "Registers | Enervent Pingvin Kotilämpö" } else { document.getElementById("data").innerHTML = 'Page not found' error = true } if (!error) { // Fetch data from API fetch(url) .then((response) => { if (!response.ok) { throw new Error(`Error fetching data: ${response.status}`) } return response.json() }) .then((data) => { // Populate table if (url == '/api/v1/coils') { coils(data) } else if (url == '/api/v1/registers') { registers(data) } }); } // Using setTimeout instead of setInterval to avoid possible connection issues // There's no need to update exactly every 5 seconds, the skew is fine setTimeout(getData, 2*1000); } // Show or hide rows for "reserved" values when clicking the checkbox incl_res = document.getElementById("incl_res") incl_res.addEventListener("change", (event) => { reservedRows = document.getElementsByClassName("reserved") if (!event.currentTarget.checked) { for (i=0; i