Skip to content

Commit 48e5804

Browse files
authored
Merge pull request #164 from fleetbase/dev-v0.6.15
preparing for route optimization implementation overhaul
2 parents bba85c0 + 8938ac2 commit 48e5804

55 files changed

Lines changed: 464 additions & 31 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

addon/components/customer/orders.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export default class CustomerOrdersComponent extends Component {
2525
@service modalsManager;
2626
@service customerSession;
2727
@service hostRouter;
28-
@service leafletRouterControl;
28+
@service leafletRoutingControl;
2929
@engineService('@fleetbase/fleetops-engine') movementTracker;
3030
@engineService('@fleetbase/fleetops-engine') location;
3131
@tracked orders = [];
@@ -240,7 +240,7 @@ export default class CustomerOrdersComponent extends Component {
240240
}
241241

242242
const routingService = this.currentUser.getOption('routing', { router: 'osrm' }).router;
243-
const { router, formatter } = this.leafletRouterControl.get(routingService);
243+
const { router, formatter } = this.leafletRoutingControl.get(routingService);
244244

245245
this.routeControl = new RoutingControl({
246246
router,

addon/components/live-map.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@
243243
{{/if}}
244244
</div>
245245

246-
{{#if this.isDataLoaded}}
246+
{{#if (and this.isDataLoaded (not-eq @drawerTab false))}}
247247
<LiveMapDrawer
248248
@tab={{@drawerTab}}
249249
@onTabChanged={{@onDrawerTabChanged}}

addon/components/live-map.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export default class LiveMapComponent extends Component {
3636
@service contextPanel;
3737
@service leafletMapManager;
3838
@service leafletContextmenuManager;
39-
@service leafletRouterControl;
39+
@service leafletRoutingControl;
4040
@service theme;
4141

4242
/**
@@ -1140,7 +1140,7 @@ export default class LiveMapComponent extends Component {
11401140
}
11411141

11421142
const routingService = this.currentUser.getOption('routing', { router: 'osrm' }).router;
1143-
const { router, formatter } = this.leafletRouterControl.get(routingService);
1143+
const { router, formatter } = this.leafletRoutingControl.get(routingService);
11441144

11451145
this.routeControl = new RoutingControl({
11461146
router,

addon/components/route-optimization-engine-select-button.hbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
<div class="px-1">
1616
{{#each this.routeOptimization.availableServices as |service|}}
1717
<a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.handleClick service)}}>
18-
<div >
18+
<div class="flex flex-row items-center">
19+
<div class="mr-2"><FaIcon @icon="arrow-right" /></div>
1920
<div class="text-sm">{{service.name}}</div>
2021
</div>
2122
</a>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<Overlay
2+
@isOpen={{true}}
3+
@onLoad={{this.setOverlayContext}}
4+
@position="right"
5+
@noBackdrop={{true}}
6+
@fullHeight={{true}}
7+
@isResizeble={{true}}
8+
@width="450px"
9+
@overlayClass="route-optimization-wizard-panel"
10+
>
11+
<Overlay::Header @title="New Route Optimization">
12+
<div class="flex flex-1 justify-end">
13+
<Button @icon="play" @type="primary" @text="Run" @wrapperClass="mr-2" />
14+
<Button @type="default" @icon="times" />
15+
</div>
16+
</Overlay::Header>
17+
18+
<Overlay::Body @wrapperClass="px-4 space-y-4 pt-4">
19+
{{#each @waypoints as |waypoint|}}
20+
<div class="border rounded p-4 flex items-center mb-3">{{waypoint.address}}</div>
21+
{{/each}}
22+
<Spacer @height="300px" />
23+
</Overlay::Body>
24+
</Overlay>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import Component from '@glimmer/component';
2+
import { tracked } from '@glimmer/tracking';
3+
import { action } from '@ember/object';
4+
import { inject as service } from '@ember/service';
5+
import contextComponentCallback from '@fleetbase/ember-core/utils/context-component-callback';
6+
import applyContextComponentArguments from '@fleetbase/ember-core/utils/apply-context-component-arguments';
7+
8+
export default class RouteOptimizationWizardPanelComponent extends Component {
9+
@service universe;
10+
@tracked context;
11+
12+
/**
13+
* Constructs the component and applies initial state.
14+
*/
15+
constructor(owner, { controller }) {
16+
super(...arguments);
17+
this.controller = controller;
18+
applyContextComponentArguments(this);
19+
}
20+
21+
/**
22+
* Sets the overlay context.
23+
*
24+
* @action
25+
* @param {OverlayContextObject} overlayContext
26+
*/
27+
@action setOverlayContext(overlayContext) {
28+
this.context = overlayContext;
29+
// hide sidebar
30+
if (this.universe.sidebarContext) {
31+
this.universe.sidebarContext.hide();
32+
}
33+
contextComponentCallback(this, 'onLoad', ...arguments);
34+
}
35+
36+
/**
37+
* Handles the cancel action.
38+
*
39+
* @method
40+
* @action
41+
* @returns {Boolean} Indicates whether the cancel action was overridden.
42+
*/
43+
@action onPressCancel() {
44+
return contextComponentCallback(this, 'onPressCancel');
45+
}
46+
}

addon/controllers/operations/orders/index.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export default class OperationsOrdersIndexController extends BaseController {
2222
@service socket;
2323
@service abilities;
2424
@service theme;
25+
@service routeOptimization;
2526

2627
/**
2728
* Queryable parameters for this controller's model
@@ -1130,7 +1131,6 @@ export default class OperationsOrdersIndexController extends BaseController {
11301131
*/
11311132
@action bulkAssignDriver(selected = []) {
11321133
selected = selected.length > 0 ? selected : this.table.selectedRows;
1133-
11341134
if (!isArray(selected) || selected.length === 0) {
11351135
return;
11361136
}
@@ -1199,12 +1199,37 @@ export default class OperationsOrdersIndexController extends BaseController {
11991199
});
12001200
}
12011201

1202+
/**
1203+
* Commits the bulk query to the server for results.
1204+
* @action
1205+
* @memberof OperationsOrdersIndexController
1206+
*/
12021207
@action commitBulkQuery() {
12031208
this.bulk_query = this.bulkSearchValue;
12041209
}
12051210

1211+
/**
1212+
* Resets/clear the bulk query search.
1213+
* @action
1214+
* @memberof OperationsOrdersIndexController
1215+
*/
12061216
@action removeBulkQuery() {
12071217
this.bulkSearchValue = '';
12081218
this.bulk_query = null;
12091219
}
1220+
1221+
/**
1222+
* Run route optimization wizard.
1223+
* @action
1224+
* @memberof OperationsOrdersIndexController
1225+
*/
1226+
@action optimizeOrderRoutes(selected = []) {
1227+
selected = selected.length > 0 ? selected : this.table.selectedRows;
1228+
1229+
return this.hostRouter.transitionTo('console.fleet-ops.operations.routes.index.new', {
1230+
queryParams: {
1231+
selectedOrders: selected.map((_) => _.public_id).join(','),
1232+
},
1233+
});
1234+
}
12101235
}

addon/controllers/operations/orders/index/new.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export default class OperationsOrdersIndexNewController extends BaseController {
4141
@service contextPanel;
4242
@service universe;
4343
@service routeOptimization;
44-
@service leafletRouterControl;
44+
@service leafletRoutingControl;
4545
@service osrm;
4646

4747
@tracked order = this.store.createRecord('order', { meta: [] });
@@ -613,14 +613,15 @@ export default class OperationsOrdersIndexNewController extends BaseController {
613613
return route;
614614
}
615615

616-
@action setOptimizedRoute(route, trip, waypoints) {
616+
@action setOptimizedRoute(route, trip, waypoints, engine = 'osrm') {
617617
let summary = { totalDistance: trip.distance, totalTime: trip.duration };
618618
let payload = {
619619
optimized: true,
620620
coordinates: route,
621621
waypoints,
622622
trip,
623623
summary,
624+
engine,
624625
};
625626

626627
this.leafletOptimizedRoute = payload;
@@ -792,7 +793,7 @@ export default class OperationsOrdersIndexNewController extends BaseController {
792793

793794
if (canPreviewRoute) {
794795
const routingService = this.currentUser.getOption('routing', { router: 'osrm' }).router;
795-
const { router, formatter } = this.leafletRouterControl.get(routingService);
796+
const { router, formatter } = this.leafletRoutingControl.get(routingService);
796797

797798
this.previewRouteControl = new RoutingControl({
798799
router,
@@ -886,7 +887,7 @@ export default class OperationsOrdersIndexNewController extends BaseController {
886887
}
887888
}
888889

889-
handleRouteOptimization({ sortedWaypoints, route, trip, result }) {
890+
handleRouteOptimization({ sortedWaypoints, route, trip, result, engine = 'osrm' }) {
890891
// Update map layers & UI
891892
this.removeRoutingControlPreview();
892893
this.removeOptimizedRoute(this.leafletMap);
@@ -895,7 +896,7 @@ export default class OperationsOrdersIndexNewController extends BaseController {
895896
// Update controller state
896897
this.waypoints = sortedWaypoints;
897898
if (route) {
898-
this.setOptimizedRoute(route, trip, result.waypoints);
899+
this.setOptimizedRoute(route, trip, result.waypoints, engine);
899900
}
900901
this.previewDraftOrderRoute(this.payload, this.waypoints, this.isMultipleDropoffOrder);
901902
this.updatePayloadCoordinates();

addon/controllers/operations/orders/index/view.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export default class OperationsOrdersIndexViewController extends BaseController
2323
@service socket;
2424
@service universe;
2525
@service contextPanel;
26-
@service leafletRouterControl;
26+
@service leafletRoutingControl;
2727

2828
@tracked isLoadingAdditionalData = false;
2929
@tracked isWaypointsCollapsed;
@@ -383,7 +383,7 @@ export default class OperationsOrdersIndexViewController extends BaseController
383383
leafletMap.flyTo(waypoints.firstObject);
384384

385385
const routingService = this.currentUser.getOption('routing', { router: 'osrm' }).router;
386-
const { router, formatter } = this.leafletRouterControl.get(routingService);
386+
const { router, formatter } = this.leafletRoutingControl.get(routingService);
387387

388388
this.routeControl = new RoutingControl({
389389
router,
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Controller from '@ember/controller';
2+
import { tracked } from '@glimmer/tracking';
3+
import { action } from '@ember/object';
4+
5+
export default class OperationsRoutesIndexController extends Controller {
6+
@tracked leafletMap;
7+
@tracked liveMap;
8+
9+
@action setMapReference({ target }) {
10+
this.leafletMap = target;
11+
this.liveMap = target.liveMap;
12+
}
13+
}

0 commit comments

Comments
 (0)