Add ability to remove customer markers via status publish #299
This commit is contained in:
parent
a5a95a45d0
commit
2d6193318a
5 changed files with 52 additions and 8 deletions
|
|
@ -88,6 +88,20 @@ class DashboardMap {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
removeCustomerMarker(id) {
|
||||||
|
console.log('removing customer marker for ' + id);
|
||||||
|
var layer_group = this.layer_groups.customer;
|
||||||
|
var markers = this.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,
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ class MapEventHandler {
|
||||||
// subscribe to jo locations
|
// subscribe to jo locations
|
||||||
console.log('subscribing to ' + my.options.channels.jo_location);
|
console.log('subscribing to ' + my.options.channels.jo_location);
|
||||||
my.mqtt.subscribe(my.options.channels.jo_location);
|
my.mqtt.subscribe(my.options.channels.jo_location);
|
||||||
|
my.mqtt.subscribe(my.options.channels.jo_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
onMessage(msg) {
|
onMessage(msg) {
|
||||||
|
|
@ -77,10 +78,10 @@ class MapEventHandler {
|
||||||
|
|
||||||
handleJobOrder(chan_split, payload) {
|
handleJobOrder(chan_split, payload) {
|
||||||
console.log("jo message");
|
console.log("jo message");
|
||||||
|
var id = chan_split[1];
|
||||||
switch (chan_split[2]) {
|
switch (chan_split[2]) {
|
||||||
case "location":
|
case "location":
|
||||||
var my = this;
|
// var my = this;
|
||||||
var id = chan_split[1];
|
|
||||||
console.log("got location for jo " + id + " - " + payload);
|
console.log("got location for jo " + id + " - " + payload);
|
||||||
var pl_split = payload.split(':');
|
var pl_split = payload.split(':');
|
||||||
|
|
||||||
|
|
@ -96,6 +97,14 @@ class MapEventHandler {
|
||||||
|
|
||||||
this.dashmap.putCustomerMarker(id, lat, lng);
|
this.dashmap.putCustomerMarker(id, lat, lng);
|
||||||
break;
|
break;
|
||||||
|
case "status":
|
||||||
|
switch (payload) {
|
||||||
|
case 'cancel':
|
||||||
|
case 'fulfill':
|
||||||
|
case 'delete':
|
||||||
|
this.dashmap.removeCustomerMarker(id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,10 @@ class JobOrderActiveCacheListener
|
||||||
break;
|
break;
|
||||||
// inactive
|
// inactive
|
||||||
case JOStatus::CANCELLED:
|
case JOStatus::CANCELLED:
|
||||||
|
$this->processInactiveJO($jo, 'cancel');
|
||||||
|
break;
|
||||||
case JOStatus::FULFILLED:
|
case JOStatus::FULFILLED:
|
||||||
$this->processInactiveJO($jo);
|
$this->processInactiveJO($jo, 'fulfill');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -59,8 +61,10 @@ class JobOrderActiveCacheListener
|
||||||
break;
|
break;
|
||||||
// inactive
|
// inactive
|
||||||
case JOStatus::CANCELLED:
|
case JOStatus::CANCELLED:
|
||||||
|
$this->processInactiveJO($jo, 'cancel');
|
||||||
|
break;
|
||||||
case JOStatus::FULFILLED:
|
case JOStatus::FULFILLED:
|
||||||
$this->processInactiveJO($jo);
|
$this->processInactiveJO($jo, 'fulfill');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -68,14 +72,17 @@ class JobOrderActiveCacheListener
|
||||||
// when a job order is deleted
|
// when a job order is deleted
|
||||||
public function postRemove(JobOrder $jo, LifecycleEventArgs $args)
|
public function postRemove(JobOrder $jo, LifecycleEventArgs $args)
|
||||||
{
|
{
|
||||||
|
$this->processInactiveJO($jo, 'delete');
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function processActiveJO($jo)
|
protected function processActiveJO($jo)
|
||||||
{
|
{
|
||||||
// save in cache
|
// save in cache
|
||||||
$jo_cache->addActiveJobOrder($jo);
|
$this->jo_cache->addActiveJobOrder($jo);
|
||||||
|
|
||||||
// publish to mqtt
|
// publish to mqtt
|
||||||
|
$coords = $jo->getCoordinates();
|
||||||
|
|
||||||
// TODO: do we put the key in config?
|
// TODO: do we put the key in config?
|
||||||
$this->mqtt->publish(
|
$this->mqtt->publish(
|
||||||
'jo/' . $jo->getID() . '/location',
|
'jo/' . $jo->getID() . '/location',
|
||||||
|
|
@ -83,11 +90,16 @@ class JobOrderActiveCacheListener
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function processInactiveJO($jo)
|
protected function processInactiveJO($jo, $status = 'cancel')
|
||||||
{
|
{
|
||||||
// TODO: remove from redis cache
|
// remove from redis cache
|
||||||
|
$this->jo_cache->removeActiveJobOrder($jo);
|
||||||
|
|
||||||
// TODO: publich to mqtt
|
// TODO: publich to mqtt
|
||||||
|
$this->mqtt->publish(
|
||||||
|
'jo/' . $jo->getID() . '/status',
|
||||||
|
$status
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,4 +55,12 @@ class JobOrderCache
|
||||||
// error_log(print_r($all_jo, true));
|
// error_log(print_r($all_jo, true));
|
||||||
return $jo_locs;
|
return $jo_locs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function removeActiveJobOrder(JobOrder $jo)
|
||||||
|
{
|
||||||
|
$this->redis->zrem(
|
||||||
|
$this->active_jo_key,
|
||||||
|
$jo->getID()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,8 @@ function initEventHandler(dashmap) {
|
||||||
var options = {
|
var options = {
|
||||||
'channels': {
|
'channels': {
|
||||||
'rider_location': 'rider/+/location',
|
'rider_location': 'rider/+/location',
|
||||||
'jo_location': 'jo/+/location'
|
'jo_location': 'jo/+/location',
|
||||||
|
'jo_status': 'jo/+/status'
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue