Skip to content

Commit bc8ea18

Browse files
authored
Merge pull request #161 from fleetbase/dev-v0.6.13
v0.6.13 ~ Implemented route optimization registry, fixed multiple way…
2 parents d9503fd + 31f16a9 commit bc8ea18

50 files changed

Lines changed: 938 additions & 232 deletions

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: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import { isArray } from '@ember/array';
66
import { later } from '@ember/runloop';
77
import { debug } from '@ember/debug';
88
import { task, timeout } from 'ember-concurrency';
9-
import { OSRMv1, Control as RoutingControl } from '@fleetbase/leaflet-routing-machine';
10-
import getRoutingHost from '@fleetbase/ember-core/utils/get-routing-host';
9+
import { Control as RoutingControl } from '@fleetbase/leaflet-routing-machine';
1110
import engineService from '@fleetbase/ember-core/decorators/engine-service';
1211
import registerComponent from '@fleetbase/ember-core/utils/register-component';
1312
import OrderProgressCardComponent from '../order-progress-card';
@@ -26,6 +25,7 @@ export default class CustomerOrdersComponent extends Component {
2625
@service modalsManager;
2726
@service customerSession;
2827
@service hostRouter;
28+
@service leafletRouterControl;
2929
@engineService('@fleetbase/fleetops-engine') movementTracker;
3030
@engineService('@fleetbase/fleetops-engine') location;
3131
@tracked orders = [];
@@ -226,7 +226,6 @@ export default class CustomerOrdersComponent extends Component {
226226

227227
@action displayOrderRoute() {
228228
const waypoints = this.getRouteCoordinatesFromOrder(this.selectedOrder);
229-
const routingHost = getRoutingHost();
230229
if (this.cannotRouteWaypoints(waypoints)) {
231230
return;
232231
}
@@ -240,15 +239,14 @@ export default class CustomerOrdersComponent extends Component {
240239
debug(`Leaflet Map Error: ${error.message}`);
241240
}
242241

243-
const router = new OSRMv1({
244-
serviceUrl: `${routingHost}/route/v1`,
245-
profile: 'driving',
246-
});
242+
const routingService = this.currentUser.getOption('routing', { router: 'osrm' }).router;
243+
const { router, formatter } = this.leafletRouterControl.get(routingService);
247244

248245
this.routeControl = new RoutingControl({
249-
fitSelectedRoutes: false,
250246
router,
247+
formatter,
251248
waypoints,
249+
fitSelectedRoutes: false,
252250
alternativeClassName: 'hidden',
253251
addWaypoints: false,
254252
markerOptions: {

addon/components/layout/fleet-ops-sidebar.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,14 @@ export default class LayoutFleetOpsSidebarComponent extends Component {
162162
permission: 'fleet-ops view notification-settings',
163163
visible: this.abilities.can('fleet-ops see notification-settings'),
164164
},
165+
{
166+
intl: 'fleet-ops.component.layout.fleet-ops-sidebar.routing',
167+
title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.routing'),
168+
icon: 'route',
169+
route: 'settings.routing',
170+
permission: 'fleet-ops view routing-settings',
171+
visible: this.abilities.can('fleet-ops see routing-settings'),
172+
},
165173
];
166174

167175
const createPanel = (intl, routePrefix, items = []) => ({

addon/components/live-map.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ import { later } from '@ember/runloop';
99
import { debug } from '@ember/debug';
1010
import { allSettled } from 'rsvp';
1111
import { task } from 'ember-concurrency';
12-
import { OSRMv1, Control as RoutingControl } from '@fleetbase/leaflet-routing-machine';
13-
import getRoutingHost from '@fleetbase/ember-core/utils/get-routing-host';
12+
import { Control as RoutingControl } from '@fleetbase/leaflet-routing-machine';
1413
import getWithDefault from '@fleetbase/ember-core/utils/get-with-default';
1514

1615
/**
@@ -37,6 +36,7 @@ export default class LiveMapComponent extends Component {
3736
@service contextPanel;
3837
@service leafletMapManager;
3938
@service leafletContextmenuManager;
39+
@service leafletRouterControl;
4040
@service theme;
4141

4242
/**
@@ -1126,7 +1126,6 @@ export default class LiveMapComponent extends Component {
11261126

11271127
// create order route preview
11281128
const waypoints = this.getRouteCoordinatesFromOrder(order);
1129-
const routingHost = getRoutingHost();
11301129
if (this.cannotRouteWaypoints(waypoints)) {
11311130
return;
11321131
}
@@ -1140,15 +1139,14 @@ export default class LiveMapComponent extends Component {
11401139
debug(`Leaflet Map Error: ${error.message}`);
11411140
}
11421141

1143-
const router = new OSRMv1({
1144-
serviceUrl: `${routingHost}/route/v1`,
1145-
profile: 'driving',
1146-
});
1142+
const routingService = this.currentUser.getOption('routing', { router: 'osrm' }).router;
1143+
const { router, formatter } = this.leafletRouterControl.get(routingService);
11471144

11481145
this.routeControl = new RoutingControl({
1149-
fitSelectedRoutes: false,
11501146
router,
1147+
formatter,
11511148
waypoints,
1149+
fitSelectedRoutes: false,
11521150
alternativeClassName: 'hidden',
11531151
addWaypoints: false,
11541152
markerOptions: {

addon/components/order-config/fields-editor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ export default class OrderConfigFieldsEditorComponent extends Component {
197197
}
198198
}
199199

200-
/* eslint no-unused-vars: "off" */
200+
/* eslint-disable no-unused-vars */
201201
@action sortMetaFieldOptions(metaField, el, target) {
202202
// const { fields } = this;
203203
// const { index } = el.dataset;
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<DropdownButton
2+
@text="Optimize Route"
3+
@icon="caret-down"
4+
@type="magic"
5+
@size="sm"
6+
@iconPrefix="fas"
7+
@triggerClass="hidden md:flex"
8+
@helpText="Optimize route using an integrated optimization engine"
9+
@disabled={{@disabled}}
10+
@isLoading={{@isLoading}}
11+
@renderInPlace={{true}}
12+
as |dd|
13+
>
14+
<div class="next-dd-menu" aria-labelledby="user-menu">
15+
<div class="px-1">
16+
{{#each this.routeOptimization.availableServices as |service|}}
17+
<a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.handleClick service)}}>
18+
<div >
19+
<div class="text-sm">{{service.name}}</div>
20+
</div>
21+
</a>
22+
{{/each}}
23+
</div>
24+
</div>
25+
</DropdownButton>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Component from '@glimmer/component';
2+
import { inject as service } from '@ember/service';
3+
import { action } from '@ember/object';
4+
5+
export default class RouteOptimizationEngineSelectButtonComponent extends Component {
6+
@service routeOptimization;
7+
8+
@action handleClick({ key }) {
9+
if (typeof this.args.onClick === 'function') {
10+
this.args.onClick(key);
11+
}
12+
}
13+
}

0 commit comments

Comments
 (0)