From 2d292e1f9def0ea5d4e9a8d6d7f1a76fc4e9d0c8 Mon Sep 17 00:00:00 2001 From: Kendrick Chan Date: Thu, 16 Jul 2020 14:50:36 +0800 Subject: [PATCH] Do not display marker for inactive rider #424 --- public/assets/js/dashboard_map.js | 1 + public/assets/js/map_mqtt.js | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/public/assets/js/dashboard_map.js b/public/assets/js/dashboard_map.js index 29d42731..82debb56 100644 --- a/public/assets/js/dashboard_map.js +++ b/public/assets/js/dashboard_map.js @@ -3,6 +3,7 @@ class DashboardMap { this.options = options; this.rider_markers = rider_markers; this.cust_markers = cust_markers; + this.rider_availability = {}; // layer groups this.layer_groups = { diff --git a/public/assets/js/map_mqtt.js b/public/assets/js/map_mqtt.js index e6566068..6a9ede6c 100644 --- a/public/assets/js/map_mqtt.js +++ b/public/assets/js/map_mqtt.js @@ -88,9 +88,11 @@ class MapEventHandler { console.log("status " + status); switch (status) { case 'rider_offline': + this.dashmap.rider_availability[chan_split[1]] = false; this.dashmap.removeRiderMarker(chan_split[1]); break; case 'rider_online': + this.dashmap.rider_availability[chan_split[1]] = true; var lat = parseFloat(obj.latitude); var lng = parseFloat(obj.longitude); @@ -102,10 +104,12 @@ class MapEventHandler { switch (data) { case 'available': console.log('putting available marker ' + chan_split[1] + ' ' + lat + ':' + lng); + dashmap.switchRiderStatus(chan_split[1], 'available'); dashmap.putRiderAvailableMarker(chan_split[1], lat, lng); break; case 'unavailable': console.log('putting active jo marker ' + chan_split[1] + ' ' + lat + ':' + lng); + dashmap.switchRiderStatus(chan_split[1], 'jo'); dashmap.putRiderActiveJOMarker(chan_split[1], lat, lng); break; } @@ -125,7 +129,16 @@ class MapEventHandler { var lat = parseFloat(pl_split[0]); var lng = parseFloat(pl_split[1]); + var display_marker = true; + if (this.dashmap.rider_availability.hasOwnProperty(chan_split[1])) { + if (!this.dashmap.rider_availability) { + console.log('NOT displaying marker for inactive rider'); + display_marker = false; + } + } + // TODO: cache rider availability status and check before displaying icon + // NOTE: code is already above, need to make it into a function and call it here this.dashmap.putRiderAvailableMarker(chan_split[1], lat, lng); break; case "status":