Fix getting rider name for rider markers #472

This commit is contained in:
Kendrick Chan 2020-08-21 17:04:30 +08:00
parent a2245fef2b
commit 78554ec9c6

View file

@ -231,30 +231,38 @@ class DashboardMap {
); );
} }
putRiderAvailableMarker(id, lat, lng, name) { putRiderAvailableMarker(id, lat, lng) {
this.putMarkerWithLabel( var my = this;
my.getRiderName(id, function(name) {
my.putMarkerWithLabel(
id, id,
lat, lat,
lng, lng,
this.rider_markers, my.rider_markers,
this.options.icons.rider_available, my.options.icons.rider_available,
this.layer_groups.rider_available, my.layer_groups.rider_available,
this.options.rider_popup_url, my.options.rider_popup_url,
name name
); );
});
} }
putRiderActiveJOMarker(id, lat, lng, name) { putRiderActiveJOMarker(id, lat, lng) {
this.putMarkerWithLabel( var my = this;
my.getRiderName(id, function(name) {
my.putMarkerWithLabel(
id, id,
lat, lat,
lng, lng,
this.rider_markers, my.rider_markers,
this.options.icons.rider_active_jo, my.options.icons.rider_active_jo,
this.layer_groups.rider_active_jo, my.layer_groups.rider_active_jo,
this.options.rider_popup_url, my.options.rider_popup_url,
name name
); );
});
} }
removeRiderMarker(id) { removeRiderMarker(id) {
@ -305,41 +313,38 @@ class DashboardMap {
var lng = data.longitude; var lng = data.longitude;
var name = ''; var name = '';
if (my.rider_names.hasOwnProperty(id)) {
name = my.rider_names[id];
if (data.has_jo) if (data.has_jo)
my.putRiderActiveJOMarker(id, lat, lng, name); my.putRiderActiveJOMarker(id, lat, lng);
else else
my.putRiderAvailableMarker(id, lat, lng, name) my.putRiderAvailableMarker(id, lat, lng);
} 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)
});
}
}); });
// console.log(rider_markers); // console.log(rider_markers);
}); });
} }
}
function getRiderName(id, url, callback) { getRiderName(id, callback) {
var name = ''; var name = '';
var rider_url = url.replace('[id]', id); var rider_url = this.options.rider_name_url.replace('[id]', id);
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({ $.ajax({
method: "GET", method: "GET",
url: rider_url url: rider_url
}).done(function(response) { }).done(function(response) {
name = response.rider_name; name = response.rider_name;
my.rider_names[id] = name;
callback(name); callback(name);
}); });
}
} }