Add fix to dashboard map zoom error. #424

This commit is contained in:
Korina Cordero 2020-08-04 07:52:27 +00:00
parent fdce6c02a4
commit 8a026ef44a
4 changed files with 110 additions and 82 deletions

View file

@ -61,3 +61,8 @@ rider_ajax_avialable:
path: /riders/{id}/available path: /riders/{id}/available
controller: App\Controller\RiderController::ajaxAvailable controller: App\Controller\RiderController::ajaxAvailable
methods: [GET] methods: [GET]
rider_ajax_rider_name:
path: /riders/rider_name
controller: App\Controller\RiderController::ajaxRiderName
methods: [GET]

View file

@ -163,7 +163,6 @@ class DashboardMap {
); );
var marker_label = id + ' - ' + name; var marker_label = id + ' - ' + name;
console.log(marker_label);
markers[id].bindTooltip(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( this.putMarkerWithLabel(
id, id,
name, name,
@ -244,7 +243,7 @@ class DashboardMap {
); );
} }
putRiderActiveJOMarker(id, name, lat, lng) { putRiderActiveJOMarker(id, lat, lng, name) {
this.putMarkerWithLabel( this.putMarkerWithLabel(
id, id,
name, name,
@ -306,9 +305,9 @@ class DashboardMap {
var name = data.name; var name = data.name;
if (data.has_jo) if (data.has_jo)
my.putRiderActiveJOMarker(id, name, lat, lng); my.putRiderActiveJOMarker(id, lat, lng, name);
else else
my.putRiderAvailableMarker(id, name, lat, lng); my.putRiderAvailableMarker(id, lat, lng, name);
}); });
// console.log(rider_markers); // console.log(rider_markers);

View file

@ -79,88 +79,98 @@ class MapEventHandler {
handleRider(chan_split, payload) { handleRider(chan_split, payload) {
// console.log("rider message"); // console.log("rider message");
switch (chan_split[2]) { // get rider name using chan_split[1] which is rider id
case "availability": var rider_id = chan_split[1];
console.log("got availability for rider " + chan_split[1] + " - " + payload); $.ajax({
var obj = JSON.parse(payload); 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; var status = obj.status;
console.log("status " + status); console.log("status " + status);
switch (status) { switch (status) {
case 'rider_offline': case 'rider_offline':
this.dashmap.rider_availability[chan_split[1]] = false; this.dashmap.rider_availability[chan_split[1]] = false;
this.dashmap.removeRiderMarker(chan_split[1]); this.dashmap.removeRiderMarker(chan_split[1]);
break; break;
case 'rider_online': case 'rider_online':
this.dashmap.rider_availability[chan_split[1]] = true; this.dashmap.rider_availability[chan_split[1]] = true;
var lat = parseFloat(obj.latitude); var lat = parseFloat(obj.latitude);
var lng = parseFloat(obj.longitude); var lng = parseFloat(obj.longitude);
// cheeck if rider is available / unavailable // cheeck if rider is available / unavailable
// TODO: make url not hardcoded // TODO: make url not hardcoded
var dashmap = this.dashmap; var dashmap = this.dashmap;
$.get('https://cmbdev.wildcard.cc/riders/' + chan_split[1] + '/available').done(function(data) { $.get('https://cmbdev.wildcard.cc/riders/' + chan_split[1] + '/available').done(function(data) {
console.log('rider availability - ' + data); console.log('rider availability - ' + data);
switch (data) { switch (data) {
case 'available': case 'available':
console.log('putting available marker ' + chan_split[1] + ' ' + lat + ':' + lng); console.log('putting available marker ' + chan_split[1] + ' ' + lat + ':' + lng);
dashmap.switchRiderStatus(chan_split[1], 'available'); dashmap.switchRiderStatus(chan_split[1], 'available');
dashmap.putRiderAvailableMarker(chan_split[1], lat, lng); dashmap.putRiderAvailableMarker(chan_split[1], lat, lng, name);
break; break;
case 'unavailable': case 'unavailable':
console.log('putting active jo marker ' + chan_split[1] + ' ' + lat + ':' + lng); console.log('putting active jo marker ' + chan_split[1] + ' ' + lat + ':' + lng);
dashmap.switchRiderStatus(chan_split[1], 'jo'); dashmap.switchRiderStatus(chan_split[1], 'jo');
dashmap.putRiderActiveJOMarker(chan_split[1], lat, lng); dashmap.putRiderActiveJOMarker(chan_split[1], lat, lng, name);
break; break;
} }
}); });
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;
} }
} else { break;
console.log('rider not in availability check'); 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 // check for correct format
// NOTE: we really should fix our terms since available can mean many things if (pl_split.length != 2)
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');
break; break;
case 'jo':
console.log('jo status'); var lat = parseFloat(pl_split[0]);
this.dashmap.switchRiderStatus(chan_split[1], 'jo'); var lng = parseFloat(pl_split[1]);
break;
case 'logout': var display_marker = true;
this.dashmap.removeRiderMarker(chan_split[1]); if (this.dashmap.rider_availability.hasOwnProperty(chan_split[1])) {
break; if (!this.dashmap.rider_availability[chan_split[1]]) {
} console.log('NOT displaying marker for inactive rider');
break; 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) { handleJobOrder(chan_split, payload) {

View file

@ -615,4 +615,18 @@ class RiderController extends Controller
); );
return $response; 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,
]);
}
} }