diff --git a/public/assets/js/dashboard_map.js b/public/assets/js/dashboard_map.js index 5d753cab..a13bc851 100644 --- a/public/assets/js/dashboard_map.js +++ b/public/assets/js/dashboard_map.js @@ -231,30 +231,38 @@ class DashboardMap { ); } - putRiderAvailableMarker(id, lat, lng, name) { - this.putMarkerWithLabel( - id, - lat, - lng, - this.rider_markers, - this.options.icons.rider_available, - this.layer_groups.rider_available, - this.options.rider_popup_url, - name - ); + putRiderAvailableMarker(id, lat, lng) { + var my = this; + + my.getRiderName(id, function(name) { + my.putMarkerWithLabel( + id, + lat, + lng, + my.rider_markers, + my.options.icons.rider_available, + my.layer_groups.rider_available, + my.options.rider_popup_url, + name + ); + }); } - putRiderActiveJOMarker(id, lat, lng, name) { - this.putMarkerWithLabel( - id, - lat, - lng, - this.rider_markers, - this.options.icons.rider_active_jo, - this.layer_groups.rider_active_jo, - this.options.rider_popup_url, - name - ); + putRiderActiveJOMarker(id, lat, lng) { + var my = this; + + my.getRiderName(id, function(name) { + my.putMarkerWithLabel( + id, + lat, + lng, + my.rider_markers, + my.options.icons.rider_active_jo, + my.layer_groups.rider_active_jo, + my.options.rider_popup_url, + name + ); + }); } removeRiderMarker(id) { @@ -305,41 +313,38 @@ class DashboardMap { var lng = data.longitude; var name = ''; - if (my.rider_names.hasOwnProperty(id)) { - name = my.rider_names[id]; - - if (data.has_jo) - my.putRiderActiveJOMarker(id, lat, lng, name); - else - my.putRiderAvailableMarker(id, lat, lng, name) - - } else { - getRiderName(id, my.options.rider_name_url, function(name) { - my.rider_names[id] = name; - - if (data.has_jo) - my.putRiderActiveJOMarker(id, lat, lng, name); - else - my.putRiderAvailableMarker(id, lat, lng, name) - }); - } + if (data.has_jo) + my.putRiderActiveJOMarker(id, lat, lng); + else + my.putRiderAvailableMarker(id, lat, lng); }); // console.log(rider_markers); }); } -} -function getRiderName(id, url, callback) { - var name = ''; - var rider_url = url.replace('[id]', id); + getRiderName(id, callback) { + var name = ''; + var rider_url = this.options.rider_name_url.replace('[id]', id); - $.ajax({ - method: "GET", - url: rider_url - }).done(function(response) { - name = response.rider_name; - callback(name); - }); + var my = this; + + console.log('getting rider name for rider ' + id); + + // check if we have it in cache + if (this.rider_names.hasOwnProperty(id)) { + name = this.rider_names[id]; + callback(name); + } + + // ajax call to get it + $.ajax({ + method: "GET", + url: rider_url + }).done(function(response) { + name = response.rider_name; + my.rider_names[id] = name; + callback(name); + }); + } } -