Add fix to dashboard map zoom error. #424
This commit is contained in:
parent
fdce6c02a4
commit
8a026ef44a
4 changed files with 110 additions and 82 deletions
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue