From b2be9d02da0cc3ab2fe09049ce7c5b73cea24e17 Mon Sep 17 00:00:00 2001 From: Matthias Wirth Date: Fri, 22 Jul 2022 18:18:51 +0200 Subject: [PATCH] pretend planes stay on screen when persistence and all planes are selected --- html/script.js | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/html/script.js b/html/script.js index 17d1a6b..714bdc1 100644 --- a/html/script.js +++ b/html/script.js @@ -1737,20 +1737,40 @@ function parseHistory() { historyLoaded.resolve(); } +let replay_was_active = false; let timers = {}; +let timersActive = false; function clearIntervalTimers() { + if (!timersActive) { + return; + } + + timersActive = false; + if (loadFinished) { jQuery("#timers_paused_detail").text('Timers paused (tab hidden).'); jQuery("#timers_paused").css('display','block'); + + replay_was_active = replay.playing; + if (replay.playing) { + playReplay(false); + } } console.log("clear timers"); const entries = Object.entries(timers); for (let i in entries) { clearInterval(entries[i][1]); } + } function setIntervalTimers() { + if (timersActive) { + return; + } + + timersActive = true; + if (loadFinished) { jQuery("#timers_paused").css('display','none'); } @@ -1778,6 +1798,11 @@ function setIntervalTimers() { timers.drawOutline = window.setInterval(drawOutlineJson, 15000); drawOutlineJson(); } + + + if (replay_was_active) { + playReplay(true); + } } let djson; @@ -3621,7 +3646,14 @@ function refreshFeatures() { const plane = PlanesOrdered[i]; plane.visible = plane.checkVisible() && !plane.isFiltered() - plane.inView = inView(plane.position, planeMan.lastRenderExtent); + + + if ((globeIndex || replay) && SelectedAllPlanes && noVanish) { + // pretend planes never go off the map for trails: + plane.inView = true; + } else { + plane.inView = inView(plane.position, planeMan.lastRenderExtent); + } TrackedHistorySize += plane.history_size; @@ -4028,8 +4060,9 @@ function selectAllPlanes() { if (globeIndex) { for (let i in PlanesOrdered) { let plane = PlanesOrdered[i]; - if (plane.visible && plane.inView) + if (plane.visible && plane.inView) { plane.processTrace(); + } } } refreshFeatures();