From 37dbc71f976713bd16ca1c8b45243e1a7d7ba5f2 Mon Sep 17 00:00:00 2001 From: Matthias Wirth Date: Sun, 10 Jul 2022 21:30:44 +0200 Subject: [PATCH] smarter queries when using reAPI --- html/script.js | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/html/script.js b/html/script.js index 53dfe9e..a836330 100644 --- a/html/script.js +++ b/html/script.js @@ -125,6 +125,7 @@ let layerExtraContrast = 0; let shareFiltersParam = false; let lastRequestSize = 0; let lastRequestBox = ''; +let nextQuerySelected = 0; let limitUpdates = -1; @@ -342,13 +343,44 @@ function fetchData(options) { ac_url.push('uuid/?feed=' + uuid[i]); } } else if (reApi) { + + if (now > nextQuerySelected > now && SelPlanes.length > 0) { + nextQuerySelected = now + 15; // directly query selected planes every 15 seconds + let url = 're-api/?' + (binCraft ? 'binCraft' : 'json'); + url += zstd ? '&zstd' : ''; + url += '&find_hex=' + for (let k in SelPlanes) { + url += SelPlanes[k].icao + ',' + } + url.slice(0, -1); // remove trailing comma + ac_url.push(url); + } + let url = 're-api/?' + (binCraft ? 'binCraft' : 'json'); url += zstd ? '&zstd' : ''; url += onlyMilitary ? '&filter_mil' : ''; lastRequestBox = requestBoxString(); - url += '&box=' + lastRequestBox; - //console.log(url); + if (icaoFilter) { + if (icaoFilter.length > 0) { + url += '&find_hex=' + for (let k in icaoFilter) { + url += icaoFilter[k] + ',' + } + url = url.slice(0, -1); // remove trailing comma + } + } else if (onlySelected && SelPlanes.length > 0) { + url += '&find_hex=' + for (let k in SelPlanes) { + url += SelPlanes[k].icao + ',' + } + url = url.slice(0, -1); // remove trailing comma + } else { + url += '&box=' + lastRequestBox; + } + ac_url.push(url); + //console.log(url); + } else if (globeIndex) { let indexes = globeIndexes(); const ancient = (currentTime - 2 * refreshInt() / globeSimLoad * globeTilesViewCount) / 1000; @@ -5745,7 +5777,11 @@ function refreshInt() { if (refresh > RefreshInterval * max) { refresh = RefreshInterval * max; } - if (lastRequestBox != requestBoxString()) { + if (onlySelected && SelPlanes.length == 0 && reApi) { + // no aircraft selected, none shown + refresh = RefreshInterval * max * 2; + } + if (!FollowSelected && lastRequestBox != requestBoxString()) { refresh = Math.min(RefreshInterval, refresh / 4); } } @@ -5774,6 +5810,7 @@ function refreshInt() { refresh *= 1.5; } + //console.log(refresh); return refresh; } @@ -7630,7 +7667,7 @@ function RGBColorToKMLColor(c) { // Returns an array of selected planes, ordered by registration-or-ICAO. function selectedPlanes() { const planes = []; - for (let key in Planes) { + for (let key in SelPlanes) { if (Planes[key].selected) { planes.push(Planes[key]); }