Merge branch '377-resq-bug-fixes' of gitlab.com:jankstudio/resq into 379-resq-jo-and-jo-event-report
This commit is contained in:
commit
e96fd6d7fb
3 changed files with 74 additions and 6 deletions
|
|
@ -1,14 +1,16 @@
|
||||||
class DashboardMap {
|
class DashboardMap {
|
||||||
constructor(options, rider_markers, cust_markers) {
|
constructor(options, rider_markers, cust_markers, mc_markers) {
|
||||||
this.options = options;
|
this.options = options;
|
||||||
this.rider_markers = rider_markers;
|
this.rider_markers = rider_markers;
|
||||||
this.cust_markers = cust_markers;
|
this.cust_markers = cust_markers;
|
||||||
|
this.mobile_cust_markers = mc_markers;
|
||||||
|
|
||||||
// layer groups
|
// layer groups
|
||||||
this.layer_groups = {
|
this.layer_groups = {
|
||||||
'rider_available': L.layerGroup(),
|
'rider_available': L.layerGroup(),
|
||||||
'rider_active_jo': L.layerGroup(),
|
'rider_active_jo': L.layerGroup(),
|
||||||
'customer': L.layerGroup()
|
'customer': L.layerGroup(),
|
||||||
|
'mobile_customer': L.layerGroup(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -31,6 +33,7 @@ class DashboardMap {
|
||||||
this.layer_groups.rider_available.addTo(this.map);
|
this.layer_groups.rider_available.addTo(this.map);
|
||||||
this.layer_groups.rider_active_jo.addTo(this.map);
|
this.layer_groups.rider_active_jo.addTo(this.map);
|
||||||
this.layer_groups.customer.addTo(this.map);
|
this.layer_groups.customer.addTo(this.map);
|
||||||
|
this.layer_groups.mobile_customer.addTo(this.map);
|
||||||
|
|
||||||
// base layer
|
// base layer
|
||||||
var baseMaps = {
|
var baseMaps = {
|
||||||
|
|
@ -42,7 +45,8 @@ class DashboardMap {
|
||||||
var overlayMaps = {
|
var overlayMaps = {
|
||||||
'Available Riders' : this.layer_groups.rider_available,
|
'Available Riders' : this.layer_groups.rider_available,
|
||||||
'JO Riders' : this.layer_groups.rider_active_jo,
|
'JO Riders' : this.layer_groups.rider_active_jo,
|
||||||
'Customers' : this.layer_groups.customer
|
'Customers' : this.layer_groups.customer,
|
||||||
|
'Mobile Customers': this.layer_groups.mobile_customer
|
||||||
}
|
}
|
||||||
|
|
||||||
L.control.layers(baseMaps, overlayMaps).addTo(this.map);
|
L.control.layers(baseMaps, overlayMaps).addTo(this.map);
|
||||||
|
|
@ -133,6 +137,32 @@ class DashboardMap {
|
||||||
layer_group.removeLayer(markers[id]);
|
layer_group.removeLayer(markers[id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
putMobileCustomerMarker(id, lat, lng) {
|
||||||
|
this.putMarker(
|
||||||
|
id,
|
||||||
|
lat,
|
||||||
|
lng,
|
||||||
|
this.mobile_cust_markers,
|
||||||
|
this.options.icons.mobile_customer,
|
||||||
|
this.layer_groups.mobile_customer,
|
||||||
|
this.options.cust_popup_url
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeMobileCustomerMarker(id) {
|
||||||
|
console.log('removing mobile customer marker for ' + id);
|
||||||
|
var layer_group = this.layer_groups.mobile_customer;
|
||||||
|
var markers = this.mobile_cust_markers;
|
||||||
|
|
||||||
|
// no customer marker with that id
|
||||||
|
if (!markers.hasOwnProperty(id)) {
|
||||||
|
console.log('no such marker to remove');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
layer_group.removeLayer(markers[id]);
|
||||||
|
}
|
||||||
|
|
||||||
putRiderAvailableMarker(id, lat, lng) {
|
putRiderAvailableMarker(id, lat, lng) {
|
||||||
this.putMarker(
|
this.putMarker(
|
||||||
id,
|
id,
|
||||||
|
|
@ -180,10 +210,12 @@ class DashboardMap {
|
||||||
my.layer_groups.rider_available.clearLayers();
|
my.layer_groups.rider_available.clearLayers();
|
||||||
my.layer_groups.rider_active_jo.clearLayers();
|
my.layer_groups.rider_active_jo.clearLayers();
|
||||||
my.layer_groups.customer.clearLayers();
|
my.layer_groups.customer.clearLayers();
|
||||||
|
my.layer_groups.mobile_customer.clearLayers();
|
||||||
|
|
||||||
// get riders and job orders
|
// get riders and job orders
|
||||||
var riders = response.riders;
|
var riders = response.riders;
|
||||||
var jos = response.jos;
|
var jos = response.jos;
|
||||||
|
var mobile_jos = response.mobile_jos;
|
||||||
|
|
||||||
// job orders
|
// job orders
|
||||||
$.each(jos, function(id, data) {
|
$.each(jos, function(id, data) {
|
||||||
|
|
@ -193,6 +225,14 @@ class DashboardMap {
|
||||||
my.putCustomerMarker(id, lat, lng);
|
my.putCustomerMarker(id, lat, lng);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// mobile app job orders
|
||||||
|
$.each(mobile_jos, function(id, data) {
|
||||||
|
var lat = data.latitude;
|
||||||
|
var lng = data.longitude;
|
||||||
|
|
||||||
|
my.putMobileCustomerMarker(id, lat, lng);
|
||||||
|
});
|
||||||
|
|
||||||
// riders
|
// riders
|
||||||
$.each(riders, function(id, data) {
|
$.each(riders, function(id, data) {
|
||||||
var lat = data.latitude;
|
var lat = data.latitude;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,9 @@ use App\Service\JobOrderCache;
|
||||||
use App\Service\RiderCache;
|
use App\Service\RiderCache;
|
||||||
|
|
||||||
use App\Entity\Rider;
|
use App\Entity\Rider;
|
||||||
|
use App\Entity\JobOrder;
|
||||||
|
|
||||||
|
use App\Ramcar\TransactionOrigin;
|
||||||
|
|
||||||
class HomeController extends Controller
|
class HomeController extends Controller
|
||||||
{
|
{
|
||||||
|
|
@ -63,6 +65,24 @@ class HomeController extends Controller
|
||||||
$riders[$rider_id]['has_jo'] = true;
|
$riders[$rider_id]['has_jo'] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get JOs with transaction origin TransactionOrigin::MOBILE_APP from list of active_jos
|
||||||
|
$mobile_jos = [];
|
||||||
|
foreach ($active_jos as $jo_id => $jo_data)
|
||||||
|
{
|
||||||
|
$jo = $em->getRepository(JobOrder::class)->find($jo_id);
|
||||||
|
if ($jo == null)
|
||||||
|
{
|
||||||
|
unset($active_jos[$jo_id]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($jo->getSource() == TransactionOrigin::MOBILE_APP)
|
||||||
|
{
|
||||||
|
$mobile_jos[$jo_id] = $jo_data;
|
||||||
|
unset($active_jos[$jo_id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// get active riders from cache
|
// get active riders from cache
|
||||||
// get all riders
|
// get all riders
|
||||||
/*
|
/*
|
||||||
|
|
@ -120,6 +140,7 @@ class HomeController extends Controller
|
||||||
return $this->json([
|
return $this->json([
|
||||||
'jos' => $active_jos,
|
'jos' => $active_jos,
|
||||||
'riders' => $riders,
|
'riders' => $riders,
|
||||||
|
'mobile_jos' => $mobile_jos,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
function initMap(r_markers, c_markers, icons) {
|
function initMap(r_markers, c_markers, mc_markers, icons) {
|
||||||
var default_lat = {% trans %}default_lat{% endtrans %};
|
var default_lat = {% trans %}default_lat{% endtrans %};
|
||||||
var default_lng = {% trans %}default_long{% endtrans %};
|
var default_lng = {% trans %}default_long{% endtrans %};
|
||||||
|
|
||||||
|
|
@ -38,7 +38,7 @@ function initMap(r_markers, c_markers, icons) {
|
||||||
'icons': icons
|
'icons': icons
|
||||||
};
|
};
|
||||||
|
|
||||||
var dashmap = new DashboardMap(options, r_markers, c_markers);
|
var dashmap = new DashboardMap(options, r_markers, c_markers, mc_markers);
|
||||||
dashmap.initialize();
|
dashmap.initialize();
|
||||||
dashmap.loadLocations('{{ path('rider_locations') }}');
|
dashmap.loadLocations('{{ path('rider_locations') }}');
|
||||||
|
|
||||||
|
|
@ -81,13 +81,20 @@ var icons = {
|
||||||
html: "<div style='background-color:#0055FF;' class='marker-pin'></div><i class='fa fa-user awesome'>",
|
html: "<div style='background-color:#0055FF;' class='marker-pin'></div><i class='fa fa-user awesome'>",
|
||||||
iconSize: [39, 42],
|
iconSize: [39, 42],
|
||||||
iconAnchor: [15, 42]
|
iconAnchor: [15, 42]
|
||||||
|
}),
|
||||||
|
'mobile_customer': L.divIcon({
|
||||||
|
className: 'map-div-icon',
|
||||||
|
html: "<div style='background-color:#A200FF;' class='marker-pin'></div><i class='fa fa-user awesome'>",
|
||||||
|
iconSize: [39, 42],
|
||||||
|
iconAnchor: [15, 42]
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
var r_markers = {};
|
var r_markers = {};
|
||||||
var c_markers = {};
|
var c_markers = {};
|
||||||
|
var mc_markers = {};
|
||||||
|
|
||||||
var dashmap = initMap(r_markers, c_markers, icons);
|
var dashmap = initMap(r_markers, c_markers, mc_markers, icons);
|
||||||
initEventHandler(dashmap, icons);
|
initEventHandler(dashmap, icons);
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue