@fleetbase/fleetops-engine 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,7 +21,7 @@ export default class LiveMapComponent extends Component {
21
21
  @service notifications;
22
22
  @service serviceAreas;
23
23
  @service appCache;
24
- @service engineContext;
24
+ @service universe;
25
25
 
26
26
  @tracked routes = [];
27
27
  @tracked drivers = [];
@@ -80,7 +80,7 @@ export default class LiveMapComponent extends Component {
80
80
  */
81
81
  @action async setupLiveMap() {
82
82
  // trigger that initial coordinates have been set
83
- this.engineContext.trigger('livemap.loaded', this);
83
+ this.universe.trigger('livemap.loaded', this);
84
84
 
85
85
  if (this.skipSetCoordinates === false) {
86
86
  if (this.appCache.has(['map_latitude', 'map_longitude'])) {
@@ -101,7 +101,7 @@ export default class LiveMapComponent extends Component {
101
101
  }
102
102
 
103
103
  // trigger that initial coordinates have been set
104
- this.engineContext.trigger('livemap.has_coordinates', { latitude: this.latitude, longitude: this.longitude });
104
+ this.universe.trigger('livemap.has_coordinates', { latitude: this.latitude, longitude: this.longitude });
105
105
 
106
106
  this.routes = await this.fetchActiveRoutes();
107
107
  this.drivers = await this.fetchActiveDrivers();
@@ -115,7 +115,7 @@ export default class LiveMapComponent extends Component {
115
115
  }
116
116
 
117
117
  // add context event
118
- this.engineContext.trigger('livemap.ready', this);
118
+ this.universe.trigger('livemap.ready', this);
119
119
  }
120
120
 
121
121
  @action setMapReference(event) {
@@ -31,16 +31,81 @@ export default class OperationsOrdersIndexNewController extends Controller {
31
31
  @controller('management.vendors.index') vendorsController;
32
32
  @controller('operations.orders.index') ordersController;
33
33
 
34
+ /**
35
+ * Inject the `modalsManager` service
36
+ *
37
+ * @var {Service}
38
+ */
34
39
  @service modalsManager;
40
+
41
+ /**
42
+ * Inject the `notifications` service
43
+ *
44
+ * @var {Service}
45
+ */
35
46
  @service notifications;
47
+
48
+ /**
49
+ * Inject the `loader` service
50
+ *
51
+ * @var {Service}
52
+ */
36
53
  @service loader;
54
+
55
+ /**
56
+ * Inject the `currentUser` service
57
+ *
58
+ * @var {Service}
59
+ */
37
60
  @service currentUser;
61
+
62
+ /**
63
+ * Inject the `hostRouter` service
64
+ *
65
+ * @var {Service}
66
+ */
38
67
  @service hostRouter;
68
+
69
+ /**
70
+ * Inject the `fileQueue` service
71
+ *
72
+ * @var {Service}
73
+ */
39
74
  @service fileQueue;
75
+
76
+ /**
77
+ * Inject the `fetch` service
78
+ *
79
+ * @var {Service}
80
+ */
40
81
  @service fetch;
82
+
83
+ /**
84
+ * Inject the `store` service
85
+ *
86
+ * @var {Service}
87
+ */
41
88
  @service store;
42
89
 
90
+ /**
91
+ * Inject the `universe` service
92
+ *
93
+ * @var {Service}
94
+ */
95
+ @service universe;
96
+
97
+ /**
98
+ * Create an OrderModel instance.
99
+ *
100
+ * @var {OrderModel}
101
+ */
43
102
  @tracked order = this.store.createRecord('order', { meta: [] });
103
+
104
+ /**
105
+ * Create an PayloadModel instance.
106
+ *
107
+ * @var {OrderModel}
108
+ */
44
109
  @tracked payload = this.store.createRecord('payload');
45
110
  @tracked driversQuery = {};
46
111
  @tracked meta = [];
@@ -213,12 +278,18 @@ export default class OperationsOrdersIndexNewController extends Controller {
213
278
  return;
214
279
  }
215
280
 
281
+ // send event that fleetops is `creating` an order
282
+ this.universe.trigger('fleet-ops.order.creating', order);
216
283
  this.isCreatingOrder = true;
217
284
 
218
285
  try {
219
286
  return order
220
287
  .save()
221
288
  .then((order) => {
289
+ // trigger event that fleet-ops created an order
290
+ this.universe.trigger('fleet-ops.order.created', order);
291
+
292
+ // transition to order view
222
293
  return this.transitionToRoute('operations.orders.index.view', order).then(() => {
223
294
  this.notifications.success(`New Order ${order.public_id} Created`);
224
295
  this.loader.removeLoader();
@@ -9,7 +9,6 @@ import { OSRMv1, Control as RoutingControl } from '@fleetbase/leaflet-routing-ma
9
9
  import groupBy from '@fleetbase/ember-core/utils/macros/group-by';
10
10
  import findClosestWaypoint from '@fleetbase/ember-core/utils/find-closest-waypoint';
11
11
  import getRoutingHost from '@fleetbase/ember-core/utils/get-routing-host';
12
- import extractCoordinates from '@fleetbase/ember-core/utils/extract-coordinates';
13
12
 
14
13
  export default class OperationsOrdersIndexViewController extends Controller {
15
14
  /**
@@ -83,11 +82,11 @@ export default class OperationsOrdersIndexViewController extends Controller {
83
82
  @service hostRouter;
84
83
 
85
84
  /**
86
- * Inject the `engineContext` service
85
+ * Inject the `universe` service
87
86
  *
88
87
  * @var {Service}
89
88
  */
90
- @service engineContext;
89
+ @service universe;
91
90
 
92
91
  @tracked isLoadingAdditionalData = false;
93
92
  @tracked isWaypointsCollapsed;
@@ -226,14 +225,14 @@ export default class OperationsOrdersIndexViewController extends Controller {
226
225
  };
227
226
 
228
227
  // re-display order routes when livemap has coordinates
229
- this.engineContext.on('livemap.has_coordinates', this, displayOrderRoute);
228
+ this.universe.on('livemap.has_coordinates', this, displayOrderRoute);
230
229
 
231
230
  // when transitioning away kill event listener
232
231
  this.hostRouter.on('routeWillChange', () => {
233
- const isListening = this.engineContext.has('livemap.has_coordinates');
232
+ const isListening = this.universe.has('livemap.has_coordinates');
234
233
 
235
234
  if (isListening) {
236
- this.engineContext.off('livemap.has_coordinates', this, displayOrderRoute);
235
+ this.universe.off('livemap.has_coordinates', this, displayOrderRoute);
237
236
  }
238
237
  });
239
238
 
@@ -241,10 +240,28 @@ export default class OperationsOrdersIndexViewController extends Controller {
241
240
  setup();
242
241
  }
243
242
 
243
+ @computed('model.payload.{dropoff,pickup,waypoints}') get routeWaypoints() {
244
+ const { payload } = this.model;
245
+ let waypoints = [];
246
+ let coordinates = [];
247
+
248
+ waypoints.pushObjects([payload.pickup, ...payload.waypoints.toArray(), payload.dropoff]);
249
+ waypoints.forEach((place) => {
250
+ if (place && place.get('longitude') && place.get('latitude')) {
251
+ if (place.hasInvalidCoordinates) {
252
+ return;
253
+ }
254
+
255
+ coordinates.pushObject([place.get('latitude'), place.get('longitude')]);
256
+ }
257
+ });
258
+
259
+ return coordinates;
260
+ }
261
+
244
262
  @action displayOrderRoute() {
245
- // map coordinates from lng, lat -> lat, lng
246
263
  const payload = this.model.payload;
247
- const waypoints = payload?.payloadCoordinates?.map((coord) => extractCoordinates(coord));
264
+ const waypoints = this.routeWaypoints;
248
265
  const leafletMap = this.leafletMap;
249
266
  const routingHost = getRoutingHost(payload, payload?.waypoints?.toArray());
250
267
 
@@ -74,11 +74,11 @@ export default class OperationsOrdersIndexController extends Controller {
74
74
  @service crud;
75
75
 
76
76
  /**
77
- * Inject the `engineContext` service
77
+ * Inject the `universe` service
78
78
  *
79
79
  * @var {Service}
80
80
  */
81
- @service engineContext;
81
+ @service universe;
82
82
 
83
83
  /**
84
84
  * Queryable parameters for this controller's model
@@ -528,7 +528,7 @@ export default class OperationsOrdersIndexController extends Controller {
528
528
  this.isSearchVisible = false;
529
529
  }
530
530
 
531
- this.engineContext.trigger('dashboard.layout.changed', mode);
531
+ this.universe.trigger('dashboard.layout.changed', mode);
532
532
  }
533
533
 
534
534
  @action setMapReference({ target }) {
package/addon/engine.js CHANGED
@@ -14,6 +14,10 @@ export default class FleetOpsEngine extends Engine {
14
14
  services,
15
15
  externalRoutes,
16
16
  };
17
+ setupExtension = function (app, engine, universe) {
18
+ // register menu item in header
19
+ universe.registerHeaderMenuItem('Fleet Ops', 'console.fleet-ops', { icon: 'route', priority: 0 });
20
+ };
17
21
  }
18
22
 
19
23
  loadInitializers(FleetOpsEngine, modulePrefix);
package/package.json CHANGED
@@ -1,13 +1,11 @@
1
1
  {
2
2
  "name": "@fleetbase/fleetops-engine",
3
- "extension": "Fleet Ops",
4
- "icon": "route",
5
- "version": "0.1.8",
6
- "priority": 0,
3
+ "version": "0.1.9",
4
+ "description": "Fleetbase Fleet-Ops extension provides a fleet management and last mile delivery operations system module.",
7
5
  "fleetbase": {
6
+ "route": "fleet-ops",
8
7
  "dashboard": "int/v1/fleet-ops/dashboard"
9
8
  },
10
- "description": "Fleetbase Fleet-Ops extension provides a fleet management and last mile delivery operations system module.",
11
9
  "keywords": [
12
10
  "fleetbase-extension",
13
11
  "fleet-management",
@@ -39,8 +37,8 @@
39
37
  "test:ember-compatibility": "ember try:each"
40
38
  },
41
39
  "dependencies": {
42
- "@fleetbase/ember-core": "^0.0.8",
43
- "@fleetbase/ember-ui": "^0.1.2",
40
+ "@fleetbase/ember-core": "^0.1.0",
41
+ "@fleetbase/ember-ui": "^0.1.3",
44
42
  "@fleetbase/fleetops-data": "^0.0.6",
45
43
  "@fleetbase/leaflet-routing-machine": "^3.2.16",
46
44
  "@fortawesome/ember-fontawesome": "^0.4.1",
@@ -1,17 +0,0 @@
1
- import Service from '@ember/service';
2
- import Evented from '@ember/object/evented';
3
-
4
- export default class EngineContextService extends Service.extend(Evented) {
5
- options = {};
6
-
7
- setOption(key, value) {
8
- this.options = {
9
- ...this.options,
10
- [key]: value,
11
- };
12
- }
13
-
14
- getOption(key) {
15
- return this.options[key];
16
- }
17
- }
@@ -1 +0,0 @@
1
- export { default } from '@fleetbase/fleetops-engine/services/engine-context';