diff --git a/dev/dev.htm b/dev/dev.htm index d44c198..783ff22 100644 --- a/dev/dev.htm +++ b/dev/dev.htm @@ -26,6 +26,11 @@ function initCharts() { } }, axis: { + x: { + tick: { + format: (x) => new Date(x).toISOString() + } + }, y2: { show: true } @@ -46,6 +51,13 @@ function initCharts() { voltage: 'y', } }, + axis: { + x: { + tick: { + format: (x) => new Date(x).toISOString() + } + }, + }, zoom: { enabled: true } @@ -64,6 +76,9 @@ function status(msg) { document.getElementById('status').textContent = msg } +var autoupdate = true +var chart_updater = null + async function updateCharts() { status("loading data...") const latest = await fetch("/api/latest") @@ -76,7 +91,10 @@ async function updateCharts() { diff = Math.min(diff, max_interval_millis/1000) var path = "/api/last/weeks/" var offset = diff - if (diff < 60*60) { + if (diff < 60) { + path = "/api/last/seconds/" + offset = Math.ceil(diff) + } else if (diff < 60*60) { path = "/api/last/minutes/" offset = Math.ceil(diff/60) } else if (diff < 24*60*60) { @@ -117,17 +135,13 @@ async function updateCharts() { break } } - console.log("slice idx ", slice_idx) + //console.log("slice idx ", slice_idx) temp = temp.slice(slice_idx) humd = humd.slice(slice_idx) volts = volts.slice(slice_idx) time = time.slice(slice_idx) - console.log(time) - console.log(temp) - console.log(humd) - console.log(volts) chart.load({ columns: [ ["time"].concat(time), @@ -143,25 +157,72 @@ async function updateCharts() { }) status("charts updated") } + + if (autoupdate) { + chart_updater = chartupdater() + } else { + chart_updater = null + } +} + +const sleep = (ms) => new Promise(r => setTimeout(r, ms)) + +async function chartupdater() { + if (chart_updater != null) return + + await sleep(5000) + // wait at least two seconds to avoid wasting a lot of bandwidth + const resp = await fetch("/api/update") + chart_updater = null + updateCharts() +} + +var status_updater = null +async function updateStatus() { + const status_resp = await fetch("/api/status") + const status = await status_resp.json() + document.getElementById("device-status").textContent = "connected: " + status.connected + ", humdifier: " + (status.humdifier ? "on" : "off") + + if (autoupdate) { + status_updater = waitThenUpdateStatus() + } else { + status_updater = null + } +} + +async function waitThenUpdateStatus() { + if (status_updater != null) return + await fetch("/api/status_update") + status_updater = null + updateStatus() } window.onload = () => { initCharts() updateCharts() + updateStatus() document.getElementById('update').addEventListener('click', (e) => { updateCharts() + updateStatus() + }) + document.getElementById('autoupdate').addEventListener('click', (e) => { + autoupdate = document.getElementById('autoupdate').checked }) }
+