From 67dd56d71d826e541af00e5c2e32d6e40b9035e0 Mon Sep 17 00:00:00 2001 From: Oliver Gerlich Date: Wed, 18 Jul 2018 22:29:54 +0200 Subject: [PATCH] call render() again after render bouncer timer has elapsed This is necessary so that the GUI really shows the latest data from server after the timer has elapsed. Also add some other minor fixes. --- webroot/js/gui.js | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/webroot/js/gui.js b/webroot/js/gui.js index f6079b8..2a94e4b 100644 --- a/webroot/js/gui.js +++ b/webroot/js/gui.js @@ -16,7 +16,6 @@ let init = false, function renderView () { if (!document.body) { - window.setTimeout(renderView, GUI_RENDER_DEBOUNCER_TIME); return; } @@ -36,19 +35,25 @@ function renderView () { router.resolve(); } -export function render () { - let timeout = false; - function reset () { - timeout = null; - } - if (timeout) { - console('skip rendering to often'); - window.clearTimeout(timeout); - }else{ +let renderDebounceTimer = null, + numRenderCallsSkipped = 0; + +export function render () { + if (renderDebounceTimer == null) { renderView(); + renderDebounceTimer = window.setTimeout(() => { + renderDebounceTimer = null; + if (numRenderCallsSkipped > 0) { + console.log("skipped " + numRenderCallsSkipped + " render calls; calling render() now"); + numRenderCallsSkipped = 0; + render(); + } + }, GUI_RENDER_DEBOUNCER_TIME); + } else { + console.log("skip rendering"); + numRenderCallsSkipped++; } - timeout = window.setTimeout(reset, GUI_RENDER_DEBOUNCER_TIME); } export function setView (toView) {