From 8a026ef44a3c45d1f9cce18b8bd706ac57b0c863 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 4 Aug 2020 07:52:27 +0000 Subject: [PATCH] Add fix to dashboard map zoom error. #424 --- config/routes/rider.yaml | 5 + public/assets/js/dashboard_map.js | 9 +- public/assets/js/map_mqtt.js | 164 +++++++++++++++-------------- src/Controller/RiderController.php | 14 +++ 4 files changed, 110 insertions(+), 82 deletions(-) diff --git a/config/routes/rider.yaml b/config/routes/rider.yaml index da41058d..5e31dfb4 100644 --- a/config/routes/rider.yaml +++ b/config/routes/rider.yaml @@ -61,3 +61,8 @@ rider_ajax_avialable: path: /riders/{id}/available controller: App\Controller\RiderController::ajaxAvailable methods: [GET] + +rider_ajax_rider_name: + path: /riders/rider_name + controller: App\Controller\RiderController::ajaxRiderName + methods: [GET] diff --git a/public/assets/js/dashboard_map.js b/public/assets/js/dashboard_map.js index f0fd7900..aaf6827b 100644 --- a/public/assets/js/dashboard_map.js +++ b/public/assets/js/dashboard_map.js @@ -163,7 +163,6 @@ class DashboardMap { ); var marker_label = id + ' - ' + name; - console.log(marker_label); markers[id].bindTooltip(marker_label, { @@ -231,7 +230,7 @@ class DashboardMap { ); } - putRiderAvailableMarker(id, name, lat, lng) { + putRiderAvailableMarker(id, lat, lng, name) { this.putMarkerWithLabel( id, name, @@ -244,7 +243,7 @@ class DashboardMap { ); } - putRiderActiveJOMarker(id, name, lat, lng) { + putRiderActiveJOMarker(id, lat, lng, name) { this.putMarkerWithLabel( id, name, @@ -306,9 +305,9 @@ class DashboardMap { var name = data.name; if (data.has_jo) - my.putRiderActiveJOMarker(id, name, lat, lng); + my.putRiderActiveJOMarker(id, lat, lng, name); else - my.putRiderAvailableMarker(id, name, lat, lng); + my.putRiderAvailableMarker(id, lat, lng, name); }); // console.log(rider_markers); diff --git a/public/assets/js/map_mqtt.js b/public/assets/js/map_mqtt.js index 00474c6f..825bf065 100644 --- a/public/assets/js/map_mqtt.js +++ b/public/assets/js/map_mqtt.js @@ -79,88 +79,98 @@ class MapEventHandler { handleRider(chan_split, payload) { // console.log("rider message"); - switch (chan_split[2]) { - case "availability": - console.log("got availability for rider " + chan_split[1] + " - " + payload); - var obj = JSON.parse(payload); + // get rider name using chan_split[1] which is rider id + var rider_id = chan_split[1]; + $.ajax({ + method: "GET", + url: "{{ url('rider_ajax_rider_name') }}", + data: {id: rider_id} + }).done(function(response) { + var name = response.rider_name; + console.log('rider_name ' + name); + switch (chan_split[2]) { + case "availability": + console.log("got availability for rider " + chan_split[1] + " - " + payload); + var obj = JSON.parse(payload); - var status = obj.status; - 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); + var status = obj.status; + 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); - // cheeck if rider is available / unavailable - // TODO: make url not hardcoded - var dashmap = this.dashmap; - $.get('https://cmbdev.wildcard.cc/riders/' + chan_split[1] + '/available').done(function(data) { - console.log('rider availability - ' + data); - 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; - } - }); - break; - } - break; - case "location": - // console.log("got location for rider " + chan_split[1] + " - " + payload); - var pl_split = payload.split(':'); - // console.log(pl_split); - - // check for correct format - if (pl_split.length != 2) - break; - - 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[chan_split[1]]) { - console.log('NOT displaying marker for inactive rider'); - display_marker = false; + // cheeck if rider is available / unavailable + // TODO: make url not hardcoded + var dashmap = this.dashmap; + $.get('https://cmbdev.wildcard.cc/riders/' + chan_split[1] + '/available').done(function(data) { + console.log('rider availability - ' + data); + 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, name); + 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, name); + break; + } + }); + break; } - } else { - console.log('rider not in availability check'); - } + break; + case "location": + // console.log("got location for rider " + chan_split[1] + " - " + payload); + var pl_split = payload.split(':'); + // console.log(pl_split); - // TODO: cache rider availability (available vs active jo) status and check before displaying icon - // NOTE: we really should fix our terms since available can mean many things - if (display_marker) { - this.dashmap.putRiderAvailableMarker(chan_split[1], lat, lng); - } - break; - case "status": - console.log("got status for rider " + chan_split[1] + " - " + payload); - switch (payload) { - case 'available': - this.dashmap.switchRiderStatus(chan_split[1], 'available'); + // check for correct format + if (pl_split.length != 2) break; - case 'jo': - console.log('jo status'); - this.dashmap.switchRiderStatus(chan_split[1], 'jo'); - break; - case 'logout': - this.dashmap.removeRiderMarker(chan_split[1]); - break; - } - break; - } + + 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[chan_split[1]]) { + console.log('NOT displaying marker for inactive rider'); + display_marker = false; + } + } else { + console.log('rider not in availability check'); + } + + // TODO: cache rider availability (available vs active jo) status and check before displaying icon + // NOTE: we really should fix our terms since available can mean many things + if (display_marker) { + this.dashmap.putRiderAvailableMarker(chan_split[1], lat, lng, name); + } + break; + case "status": + console.log("got status for rider " + chan_split[1] + " - " + payload); + switch (payload) { + case 'available': + this.dashmap.switchRiderStatus(chan_split[1], 'available'); + break; + case 'jo': + console.log('jo status'); + this.dashmap.switchRiderStatus(chan_split[1], 'jo'); + break; + case 'logout': + this.dashmap.removeRiderMarker(chan_split[1]); + break; + } + break; + } + }); } handleJobOrder(chan_split, payload) { diff --git a/src/Controller/RiderController.php b/src/Controller/RiderController.php index 247123d5..bdfd3b85 100644 --- a/src/Controller/RiderController.php +++ b/src/Controller/RiderController.php @@ -615,4 +615,18 @@ class RiderController extends Controller ); return $response; } + + public function ajaxRiderName(EntityManagerInterface $em, Request $req) + { + $rider_id = $req->query->get('id'); + + $rider = $em->getRepository(Rider::class)->find($rider_id); + $rider_name = ''; + if ($rider != null) + $rider_name = $rider->getFullName(); + + return $this->json([ + 'rider_name' => $rider_name, + ]); + } }