From 2ae4e0d5bdd890aa2fd07335766f2652abeb9bd7 Mon Sep 17 00:00:00 2001 From: Amateur Audio Dude <168192910+AmateurAudioDude@users.noreply.github.com> Date: Tue, 22 Apr 2025 18:49:29 +1000 Subject: [PATCH] further optimise graph cpu usage --- web/js/main.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/web/js/main.js b/web/js/main.js index 7612c10..8be0f84 100644 --- a/web/js/main.js +++ b/web/js/main.js @@ -444,6 +444,7 @@ function initCanvas() { bottom: -10 }, }, + animation: false, responsive: true, maintainAspectRatio: false, elements: { @@ -459,20 +460,23 @@ function initCanvas() { duration: 30000, refresh: 75, delay: 150, + frameRate: 30, // default is 30 onRefresh: (chart) => { if (!chart?.data?.datasets || parsedData?.sig === undefined) return; if ((isAndroid || isIOS || isIPadOS) && (document.hidden || !document.hasFocus())) return; - signalBuffer.push(parsedData.sig); - if (signalBuffer.length > 8) { - signalBuffer.shift(); - } + const sig = parsedData.sig; + if (signalBuffer.length > 0 && signalBuffer[signalBuffer.length - 1] === sig) return; // skip if data hasn't changed + + signalBuffer.push(sig); + if (signalBuffer.length > 8) signalBuffer.shift(); + const avgSignal = signalBuffer.reduce((sum, val) => sum + val, 0) / signalBuffer.length; - chart.data.datasets[0].data.push({ - x: Date.now(), - y: avgSignal - }); + const dataset = chart.data.datasets[0].data; + dataset.push({ x: Date.now(), y: avgSignal }); + + if (dataset.length > 400) dataset.shift(); // duration / refresh } } },