Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions addon/components/leaflet-tracking-marker.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
import MarkerLayer from 'ember-leaflet/components/marker-layer';
import { isArray } from '@ember/array';

const __draggingHotfix = (layer) => {
if (!layer.dragging) {
layer.dragging = {
enabled: () => false,
enable: () => (layer.options.draggable = true),
disable: () => (layer.options.draggable = false),
};
}
};

const arrayFromLatLng = (latlng) => {
if (isArray(latlng)) {
return latlng;
Expand Down Expand Up @@ -52,6 +62,7 @@ L.TrackingMarker = L.Marker.extend({
this._slideKeepAtCenter = false;
this._slideDraggingWasAllowed = false;
this._slideFrame = 0;
__draggingHotfix(this);
},

slideTo: function (latlng, options = {}) {
Expand All @@ -69,6 +80,7 @@ L.TrackingMarker = L.Marker.extend({
this._nextPosition = arrayFromLatLng(latlng);
this._slideKeepAtCenter = !!options.keepAtCenter;
this._slideDraggingWasAllowed = this._slideDraggingWasAllowed !== undefined ? this._slideDraggingWasAllowed : this._map.dragging.enabled();
__draggingHotfix(this);

if (this._slideKeepAtCenter) {
this._map.dragging.disable();
Expand Down Expand Up @@ -245,6 +257,13 @@ export default class LeafletTrackingMarkerComponent extends MarkerLayer {
*/
rotationAngle = 0;

/**
* Default value for the draggable prop.
*
* @memberof LeafletTrackingMarkerComponent
*/
draggable = false;

getOption(key, defaultValue = null) {
const value = this.options[key] ?? this[key];
if (value === undefined) {
Expand Down
5 changes: 5 additions & 0 deletions addon/components/live-map.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
@icon={{icon iconUrl=driver.vehicle_avatar iconSize=(array 24 24)}}
@onAdd={{fn this.triggerAction "onDriverAdded" driver}}
@onClick={{fn this.triggerAction "onDriverClicked" driver}}
@draggable={{false}}
as |marker|
>
<marker.popup @maxWidth="500" @minWidth="225">
Expand Down Expand Up @@ -77,6 +78,7 @@
@icon={{icon iconUrl=driver.vehicle_avatar iconSize=(array 24 24)}}
@onAdd={{fn this.triggerAction "onDriverAdded" driver}}
@onClick={{fn this.triggerAction "onDriverClicked" driver}}
@draggable={{false}}
as |marker|
>
<marker.popup @maxWidth="500" @minWidth="225">
Expand Down Expand Up @@ -114,6 +116,7 @@
@icon={{icon iconUrl=vehicle.avatar_url iconSize=(array 24 24)}}
@onAdd={{fn this.triggerAction "onVehicleAdded" vehicle}}
@onClick={{fn this.triggerAction "onVehicleClicked" vehicle}}
@draggable={{false}}
as |marker|
>
<marker.popup @permanent={{false}} @sticky={{true}}>
Expand Down Expand Up @@ -150,6 +153,7 @@
@icon={{icon iconUrl=vehicle.avatar_url iconSize=(array 24 24)}}
@onAdd={{fn this.triggerAction "onVehicleAdded" vehicle}}
@onClick={{fn this.triggerAction "onVehicleClicked" vehicle}}
@draggable={{false}}
as |marker|
>
<marker.popup @permanent={{false}} @sticky={{true}}>
Expand Down Expand Up @@ -189,6 +193,7 @@
@alt={{place.address}}
@onAdd={{fn this.triggerAction "onPlaceAdded" place}}
@onClick={{fn this.triggerAction "onPlaceClicked" place}}
@draggable={{false}}
as |marker|
>
<marker.popup>
Expand Down
47 changes: 26 additions & 21 deletions addon/controllers/operations/orders/index/new.js
Original file line number Diff line number Diff line change
Expand Up @@ -677,7 +677,7 @@ export default class OperationsOrdersIndexNewController extends BaseController {

@action resetInterface() {
if (this.leafletMap && this.leafletMap.liveMap) {
this.leafletMap.liveMap.show(['drivers', 'vehicles', 'routes']);
this.leafletMap.liveMap.showAll();
}
}

Expand Down Expand Up @@ -709,31 +709,35 @@ export default class OperationsOrdersIndexNewController extends BaseController {
}

@action removeRoutingControlPreview() {
const leafletMap = this.leafletMap;
const previewRouteControl = this.previewRouteControl;
return new Promise((resolve) => {
const leafletMap = this.leafletMap;
const previewRouteControl = this.previewRouteControl;

let removed = false;
let removed = false;

if (leafletMap && previewRouteControl instanceof RoutingControl) {
try {
previewRouteControl.remove();
removed = true;
} catch (e) {
// silent
}

if (!removed) {
if (leafletMap && previewRouteControl instanceof RoutingControl) {
try {
leafletMap.removeControl(previewRouteControl);
previewRouteControl.remove();
removed = true;
} catch (e) {
// silent
}

if (!removed) {
try {
leafletMap.removeControl(previewRouteControl);
} catch (e) {
// silent
}
}
}
}

if (!removed) {
this.forceRemoveRoutePreview();
}
if (!removed) {
this.forceRemoveRoutePreview();
}

resolve(true);
});
}

@action forceRemoveRoutePreview() {
Expand Down Expand Up @@ -1060,7 +1064,7 @@ export default class OperationsOrdersIndexNewController extends BaseController {
}
}

@action resetForm() {
@action async resetForm() {
const order = this.store.createRecord('order', { meta: [] });
const payload = this.store.createRecord('payload');
const driversQuery = {};
Expand All @@ -1080,8 +1084,6 @@ export default class OperationsOrdersIndexNewController extends BaseController {
const customFields = [];
const customFieldValues = {};

this.removeRoutingControlPreview();
this.removeOptimizedRoute();
this.setProperties({
order,
payload,
Expand All @@ -1102,6 +1104,9 @@ export default class OperationsOrdersIndexNewController extends BaseController {
customFields,
customFieldValues,
});

await this.removeRoutingControlPreview();
this.removeOptimizedRoute();
this.resetInterface();
}

Expand Down
42 changes: 22 additions & 20 deletions addon/controllers/operations/orders/index/view.js
Original file line number Diff line number Diff line change
Expand Up @@ -243,39 +243,41 @@ export default class OperationsOrdersIndexViewController extends BaseController
this.customFieldGroups = customFieldGroups;
}

@action resetView() {
this.removeRoutingControlPreview();
@action async resetView() {
await this.removeRoutingControlPreview();
this.resetInterface();
}

@action resetInterface() {
const liveMap = this.leafletMap ? this.leafletMap.liveMap : null;
if (liveMap) {
liveMap.reload();
liveMap.showAll();
if (this.leafletMap && this.leafletMap.liveMap) {
this.leafletMap.liveMap.showAll();
this.leafletMap.liveMap.reload();
}
}

@action removeRoutingControlPreview() {
const { leafletMap, routeControl } = this;
return new Promise((resolve) => {
const { leafletMap, routeControl } = this;

if (routeControl instanceof RoutingControl) {
try {
routeControl.remove();
} catch (e) {
// silent
if (routeControl instanceof RoutingControl) {
try {
routeControl.remove();
} catch (e) {
// silent
}
}
}

if (leafletMap instanceof L.Map) {
try {
leafletMap.removeControl(routeControl);
} catch (e) {
// silent
if (leafletMap instanceof L.Map) {
try {
leafletMap.removeControl(routeControl);
} catch (e) {
// silent
}
}
}

this.forceRemoveRoutePreview();
this.forceRemoveRoutePreview();
resolve(true);
});
}

@action forceRemoveRoutePreview() {
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "fleetbase/fleetops-api",
"version": "0.6.11",
"version": "0.6.12",
"description": "Fleet & Transport Management Extension for Fleetbase",
"keywords": [
"fleetbase-extension",
Expand Down
2 changes: 1 addition & 1 deletion extension.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "Fleet-Ops",
"version": "0.6.11",
"version": "0.6.12",
"description": "Fleet & Transport Management Extension for Fleetbase",
"repository": "https://github.com/fleetbase/fleetops",
"license": "AGPL-3.0-or-later",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@fleetbase/fleetops-engine",
"version": "0.6.11",
"version": "0.6.12",
"description": "Fleet & Transport Management Extension for Fleetbase",
"fleetbase": {
"route": "fleet-ops"
Expand Down
10 changes: 5 additions & 5 deletions server/src/Console/Commands/DebugOrderTracker.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ class DebugOrderTracker extends Command
*/
public function handle()
{
$order = Order::where('public_id', 'order_n227274')->first();
if ($order) {
$tracker = new OrderTracker($order);
dd($tracker->getOrderProgressPercentage());
}
// $order = Order::where('public_id', 'order_n227274')->first();
// if ($order) {
// $tracker = new OrderTracker($order);
// dd($tracker->getOrderProgressPercentage());
// }

return Command::SUCCESS;
}
Expand Down
4 changes: 3 additions & 1 deletion server/src/Http/Controllers/Api/v1/ServiceAreaController.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,9 @@ public function create(CreateServiceAreaRequest $request)
try {
$serviceArea = ServiceArea::create($input);
} catch (\Throwable $e) {
dd($e->getMessage());
logger()->error('Unable to create service area.', ['error' => $e->getMessage()]);

return response()->apiError('Failed to create service area.');
}

// response the driver resource
Expand Down
27 changes: 15 additions & 12 deletions server/src/Http/Controllers/Internal/v1/OrderController.php
Original file line number Diff line number Diff line change
Expand Up @@ -167,25 +167,28 @@ function (&$request, Order &$order, &$requestInput) {
);
}

// notify driver if assigned
$order->notifyDriverAssigned();
// Run background processes on queue
dispatch(function () use ($order, $serviceQuote): void {
// notify driver if assigned
$order->notifyDriverAssigned();

// set driving distance and time
$order->setPreliminaryDistanceAndTime();
// set driving distance and time
$order->setPreliminaryDistanceAndTime();

// if service quote attached purchase
$order->purchaseServiceQuote($serviceQuote);
// if service quote attached purchase
$order->purchaseServiceQuote($serviceQuote);

// dispatch if flagged true
$order->firstDispatchWithActivity();
// dispatch if flagged true
$order->firstDispatchWithActivity();

// load tracking number
$order->load(['trackingNumber']);
// Trigger order created event
event(new OrderReady($order));
})->afterCommit();
}
);

// Trigger order created event
event(new OrderReady($record));
// Reload payload and tracking number
$record->load(['payload', 'trackingNumber']);

return ['order' => new $this->resource($record)];
} catch (\Exception $e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ public function saveNotificationSettings(Request $request)
if (!is_array($notificationSettings)) {
throw new \Exception('Invalid notification settings data.');
}
$currentNotificationSettings = Setting::lookupCompany('notification_settings');
$currentNotificationSettings = Setting::lookupCompany('notification_settings', []);
Setting::configureCompany('notification_settings', array_merge($currentNotificationSettings, $notificationSettings));

return response()->json([
Expand Down
2 changes: 1 addition & 1 deletion server/src/Http/Resources/v1/Waypoint.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public function toArray($request)
'owner' => $this->when(!Http::isInternalRequest(), Resolve::resourceForMorph($this->owner_type, $this->owner_uuid)),
'tracking_number' => $this->whenLoaded('trackingNumber', $waypoint->trackingNumber),
'customer' => $this->setCustomerType(Resolve::resourceForMorph($waypoint->customer_type, $waypoint->customer_uuid)),
'type' => $this->type,
'type' => $waypoint->type ?? $this->type,
'meta' => data_get($this, 'meta', Utils::createObject()),
'eta' => $this->eta,
'updated_at' => $this->updated_at,
Expand Down
Loading
Loading