From ac0ad5b7798a2623b8b4f1837d44738e2b15663b Mon Sep 17 00:00:00 2001 From: liamcottle Date: Fri, 5 Apr 2024 15:08:31 +1300 Subject: [PATCH] add setting to hide waypoints that haven't been updated in a while --- src/public/index.html | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/public/index.html b/src/public/index.html index fca5e31..5ab3e43 100644 --- a/src/public/index.html +++ b/src/public/index.html @@ -1195,6 +1195,28 @@ + +
+ +
Waypoints not updated within this time are hidden. Reload to update map.
+ +
+
@@ -1321,6 +1343,19 @@ } } + function getConfigWaypointsMaxAgeInSeconds() { + const value = localStorage.getItem("config_waypoints_max_age_in_seconds"); + return value != null ? parseInt(value) : null; + } + + function setConfigWaypointsMaxAgeInSeconds(value) { + if(value != null){ + return localStorage.setItem("config_waypoints_max_age_in_seconds", value); + } else { + return localStorage.removeItem("config_waypoints_max_age_in_seconds"); + } + } + function getConfigNeighboursMaxDistanceInMeters() { const value = localStorage.getItem("config_neighbours_max_distance_in_meters"); return value != null ? parseInt(value) : null; @@ -1353,6 +1388,7 @@ configNodesMaxAgeInSeconds: window.getConfigNodesMaxAgeInSeconds(), configNodesOfflineAgeInSeconds: window.getConfigNodesOfflineAgeInSeconds(), + configWaypointsMaxAgeInSeconds: window.getConfigWaypointsMaxAgeInSeconds(), configNeighboursMaxDistanceInMeters: window.getConfigNeighboursMaxDistanceInMeters(), configZoomLevelGoToNode: window.getConfigZoomLevelGoToNode(), configAutoUpdatePositionInUrl: window.getConfigAutoUpdatePositionInUrl(), @@ -1783,6 +1819,9 @@ configNodesOfflineAgeInSeconds() { window.setConfigNodesOfflineAgeInSeconds(this.configNodesOfflineAgeInSeconds); }, + configWaypointsMaxAgeInSeconds() { + window.setConfigWaypointsMaxAgeInSeconds(this.configWaypointsMaxAgeInSeconds); + }, configNeighboursMaxDistanceInMeters() { window.setConfigNeighboursMaxDistanceInMeters(this.configNeighboursMaxDistanceInMeters); }, @@ -2327,6 +2366,16 @@ // add nodes for(var waypoint of updatedWaypoints){ + // skip waypoints older than configured waypoint max age + const now = moment(); + const configWaypointsMaxAgeInSeconds = getConfigWaypointsMaxAgeInSeconds(); + if(configWaypointsMaxAgeInSeconds){ + const lastUpdatedAgeInMillis = now.diff(moment(waypoint.updated_at)); + if(lastUpdatedAgeInMillis > configWaypointsMaxAgeInSeconds * 1000){ + continue; + } + } + // skip expired waypoints if(waypoint.expire < Date.now() / 1000){ continue;