@fleetbase/fleetops-engine 0.3.9 → 0.4.1

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.
Files changed (209) hide show
  1. package/addon/components/admin/navigator-app.hbs +3 -3
  2. package/addon/components/admin/visibility-controls.hbs +4 -4
  3. package/addon/components/cell/driver-name.hbs +1 -1
  4. package/addon/components/contact-form-panel.hbs +15 -15
  5. package/addon/components/contact-form-panel.js +5 -1
  6. package/addon/components/contact-panel/details.hbs +7 -7
  7. package/addon/components/contact-panel.hbs +2 -2
  8. package/addon/components/display-place.hbs +2 -2
  9. package/addon/components/driver-card.hbs +1 -1
  10. package/addon/components/driver-form-panel.hbs +36 -29
  11. package/addon/components/driver-form-panel.js +5 -1
  12. package/addon/components/driver-panel/details.hbs +10 -10
  13. package/addon/components/driver-panel.hbs +5 -5
  14. package/addon/components/fleet-driver-listing.hbs +5 -5
  15. package/addon/components/fleet-form-panel.hbs +16 -16
  16. package/addon/components/fleet-form-panel.js +5 -1
  17. package/addon/components/fleet-panel/details.hbs +7 -7
  18. package/addon/components/fleet-panel/driver-listing.hbs +5 -5
  19. package/addon/components/fleet-panel/driver-listing.js +6 -0
  20. package/addon/components/fleet-panel/vehicle-listing.hbs +5 -5
  21. package/addon/components/fleet-panel/vehicle-listing.js +6 -0
  22. package/addon/components/fleet-vehicle-listing.hbs +5 -5
  23. package/addon/components/fuel-report-form-panel.hbs +16 -16
  24. package/addon/components/fuel-report-form-panel.js +5 -1
  25. package/addon/components/fuel-report-panel/details.hbs +11 -11
  26. package/addon/components/fuel-report-panel.hbs +3 -3
  27. package/addon/components/global-search.hbs +1 -1
  28. package/addon/components/horizontal-route.hbs +1 -1
  29. package/addon/components/integrated-order-details.hbs +13 -13
  30. package/addon/components/issue-form-panel.hbs +25 -25
  31. package/addon/components/issue-form-panel.js +6 -1
  32. package/addon/components/issue-panel/details.hbs +11 -11
  33. package/addon/components/issue-panel.hbs +3 -3
  34. package/addon/components/layout/fleet-ops-sidebar.hbs +2 -2
  35. package/addon/components/layout/fleet-ops-sidebar.js +28 -12
  36. package/addon/components/live-map-drawer/driver-listing.hbs +1 -1
  37. package/addon/components/live-map-drawer/driver-listing.js +16 -10
  38. package/addon/components/live-map-drawer/place-listing.hbs +1 -1
  39. package/addon/components/live-map-drawer/place-listing.js +12 -7
  40. package/addon/components/live-map-drawer/vehicle-listing.hbs +1 -1
  41. package/addon/components/live-map-drawer/vehicle-listing.js +15 -9
  42. package/addon/components/live-map.hbs +10 -92
  43. package/addon/components/live-map.js +29 -24
  44. package/addon/components/map-container/toolbar/visibility-control-panel.hbs +9 -9
  45. package/addon/components/map-container/toolbar/zones-panel.hbs +10 -10
  46. package/addon/components/map-container/toolbar.hbs +6 -6
  47. package/addon/components/modals/assign-driver.hbs +2 -2
  48. package/addon/components/modals/clone-config-form.hbs +2 -2
  49. package/addon/components/modals/contact-details.hbs +6 -6
  50. package/addon/components/modals/contact-form.hbs +11 -11
  51. package/addon/components/modals/driver-assign-order.hbs +2 -2
  52. package/addon/components/modals/driver-assign-vehicle.hbs +2 -2
  53. package/addon/components/modals/driver-assign-vendor.hbs +2 -2
  54. package/addon/components/modals/driver-details.hbs +14 -14
  55. package/addon/components/modals/driver-form.hbs +18 -18
  56. package/addon/components/modals/edit-meta-form.hbs +2 -2
  57. package/addon/components/modals/entity-form.hbs +16 -16
  58. package/addon/components/modals/entity-meta-field-prompt.hbs +1 -1
  59. package/addon/components/modals/fleet-details.hbs +6 -6
  60. package/addon/components/modals/fleet-form.hbs +8 -8
  61. package/addon/components/modals/fuel-report-details.hbs +9 -9
  62. package/addon/components/modals/fuel-report-form.hbs +8 -8
  63. package/addon/components/modals/group-details.hbs +4 -4
  64. package/addon/components/modals/group-form.hbs +6 -6
  65. package/addon/components/modals/install-prompt.hbs +2 -3
  66. package/addon/components/modals/issue-details.hbs +8 -8
  67. package/addon/components/modals/issue-from.hbs +21 -21
  68. package/addon/components/modals/map-field-form.hbs +2 -2
  69. package/addon/components/modals/map-field-group-form.hbs +1 -1
  70. package/addon/components/modals/map-layer-form.hbs +10 -10
  71. package/addon/components/modals/meta-field-form.hbs +2 -2
  72. package/addon/components/modals/meta-field-group-form.hbs +1 -1
  73. package/addon/components/modals/new-order-config.hbs +4 -4
  74. package/addon/components/modals/order-assign-driver.hbs +2 -2
  75. package/addon/components/modals/order-config-new-status.hbs +1 -1
  76. package/addon/components/modals/order-event.hbs +2 -2
  77. package/addon/components/modals/order-form.hbs +8 -8
  78. package/addon/components/modals/order-import.hbs +8 -8
  79. package/addon/components/modals/order-label.hbs +1 -1
  80. package/addon/components/modals/order-new-activity.hbs +10 -10
  81. package/addon/components/modals/order-route-form.hbs +17 -17
  82. package/addon/components/modals/place-assign-vendor.hbs +2 -2
  83. package/addon/components/modals/place-details.hbs +13 -13
  84. package/addon/components/modals/place-form.hbs +15 -15
  85. package/addon/components/modals/policy-form.hbs +5 -5
  86. package/addon/components/modals/role-form.hbs +3 -3
  87. package/addon/components/modals/select-payment-method.hbs +1 -1
  88. package/addon/components/modals/service-area-form.hbs +8 -8
  89. package/addon/components/modals/set-password.hbs +3 -3
  90. package/addon/components/modals/uninstall-prompt.hbs +2 -3
  91. package/addon/components/modals/user-form.hbs +9 -9
  92. package/addon/components/modals/vehicle-details.hbs +41 -41
  93. package/addon/components/modals/vehicle-form.hbs +73 -73
  94. package/addon/components/modals/vendor-details.hbs +10 -10
  95. package/addon/components/modals/vendor-form.hbs +36 -36
  96. package/addon/components/modals/view-service-area.hbs +1 -1
  97. package/addon/components/modals/zone-form.hbs +6 -6
  98. package/addon/components/order/header.hbs +11 -11
  99. package/addon/components/order/place-card.hbs +2 -2
  100. package/addon/components/order/schedule-card.hbs +6 -6
  101. package/addon/components/order/schedule-card.js +11 -7
  102. package/addon/components/order-config/activity-flow-editor.hbs +14 -14
  103. package/addon/components/order-config/activity-flow-editor.js +11 -11
  104. package/addon/components/order-config/details-editor.hbs +9 -9
  105. package/addon/components/order-config/entities-editor.hbs +13 -13
  106. package/addon/components/order-config/entities-editor.js +2 -2
  107. package/addon/components/order-config/fields-editor.hbs +14 -14
  108. package/addon/components/order-config/fields-editor.js +13 -12
  109. package/addon/components/order-config.hbs +9 -9
  110. package/addon/components/order-config.js +12 -11
  111. package/addon/components/order-list-overlay.hbs +14 -14
  112. package/addon/components/place-form-panel.hbs +18 -18
  113. package/addon/components/place-form-panel.js +6 -1
  114. package/addon/components/place-panel/details.hbs +10 -10
  115. package/addon/components/place-panel.hbs +2 -2
  116. package/addon/components/route-list.hbs +2 -2
  117. package/addon/components/settings-window.hbs +5 -5
  118. package/addon/components/settings-window.js +2 -1
  119. package/addon/components/vehicle-form-panel.hbs +27 -27
  120. package/addon/components/vehicle-form-panel.js +7 -2
  121. package/addon/components/vehicle-panel/details.hbs +7 -7
  122. package/addon/components/vehicle-panel.hbs +4 -4
  123. package/addon/components/vendor-form-panel/create-form.hbs +34 -33
  124. package/addon/components/vendor-form-panel/create-form.js +6 -2
  125. package/addon/components/vendor-form-panel/edit-form.hbs +27 -27
  126. package/addon/components/vendor-form-panel/edit-form.js +1 -0
  127. package/addon/components/vendor-form-panel.hbs +6 -6
  128. package/addon/components/vendor-form-panel.js +6 -1
  129. package/addon/components/vendor-panel/details.hbs +10 -10
  130. package/addon/components/vendor-panel.hbs +3 -3
  131. package/addon/components/widget/fleet-ops-quickstart.hbs +2 -2
  132. package/addon/components/widget/fleet-ops-quickstart.js +1 -0
  133. package/addon/components/widget/key-metrics.hbs +12 -12
  134. package/addon/components/widget/live-order-map.hbs +4 -4
  135. package/addon/components/widget/recent-orders.hbs +4 -4
  136. package/addon/components/widget/transactions.hbs +4 -4
  137. package/addon/controllers/management/contacts/index/edit.js +10 -3
  138. package/addon/controllers/management/contacts/index/new.js +7 -0
  139. package/addon/controllers/management/contacts/index.js +23 -16
  140. package/addon/controllers/management/drivers/index/edit.js +10 -3
  141. package/addon/controllers/management/drivers/index/new.js +7 -0
  142. package/addon/controllers/management/drivers/index.js +33 -19
  143. package/addon/controllers/management/fleets/index/edit.js +10 -3
  144. package/addon/controllers/management/fleets/index/new.js +7 -0
  145. package/addon/controllers/management/fleets/index.js +24 -17
  146. package/addon/controllers/management/fuel-reports/index/edit.js +10 -3
  147. package/addon/controllers/management/fuel-reports/index/new.js +7 -0
  148. package/addon/controllers/management/fuel-reports/index.js +20 -13
  149. package/addon/controllers/management/issues/index/edit.js +10 -3
  150. package/addon/controllers/management/issues/index/new.js +8 -0
  151. package/addon/controllers/management/issues/index.js +22 -15
  152. package/addon/controllers/management/places/index/edit.js +10 -3
  153. package/addon/controllers/management/places/index/new.js +7 -0
  154. package/addon/controllers/management/places/index.js +27 -20
  155. package/addon/controllers/management/vehicles/index/edit.js +10 -3
  156. package/addon/controllers/management/vehicles/index/new.js +7 -0
  157. package/addon/controllers/management/vehicles/index.js +22 -15
  158. package/addon/controllers/management/vendors/index/edit.js +10 -3
  159. package/addon/controllers/management/vendors/index/new.js +7 -0
  160. package/addon/controllers/management/vendors/index.js +23 -16
  161. package/addon/controllers/operations/orders/index/new.js +110 -25
  162. package/addon/controllers/operations/orders/index/view.js +40 -16
  163. package/addon/controllers/operations/orders/index.js +34 -27
  164. package/addon/controllers/operations/scheduler/index.js +3 -2
  165. package/addon/controllers/operations/service-rates/index/edit.js +9 -1
  166. package/addon/controllers/operations/service-rates/index/new.js +9 -1
  167. package/addon/controllers/operations/service-rates/index.js +16 -9
  168. package/addon/routes/management/places/index.js +1 -1
  169. package/addon/routes/operations/orders/index/view.js +2 -14
  170. package/addon/services/driver-actions.js +9 -8
  171. package/addon/services/vehicle-actions.js +2 -1
  172. package/addon/templates/management/contacts/index.hbs +6 -6
  173. package/addon/templates/management/drivers/index.hbs +6 -6
  174. package/addon/templates/management/fleets/index.hbs +6 -6
  175. package/addon/templates/management/fuel-reports/index.hbs +7 -7
  176. package/addon/templates/management/index.hbs +17 -17
  177. package/addon/templates/management/issues/index.hbs +6 -6
  178. package/addon/templates/management/places/index.hbs +6 -6
  179. package/addon/templates/management/vehicles/index.hbs +6 -6
  180. package/addon/templates/management/vendors/index.hbs +6 -6
  181. package/addon/templates/operations/orders/index/config/types.hbs +3 -3
  182. package/addon/templates/operations/orders/index/config.hbs +3 -4
  183. package/addon/templates/operations/orders/index/new.hbs +72 -72
  184. package/addon/templates/operations/orders/index/view.hbs +147 -53
  185. package/addon/templates/operations/orders/index.hbs +13 -13
  186. package/addon/templates/operations/scheduler/index.hbs +3 -3
  187. package/addon/templates/operations/service-rates/index/new.hbs +79 -81
  188. package/addon/templates/operations/service-rates/index.hbs +6 -6
  189. package/composer.json +2 -2
  190. package/extension.json +1 -1
  191. package/package.json +3 -1
  192. package/server/resources/views/labels/default.php +40 -18
  193. package/server/resources/views/labels/waypoint-label.php +126 -0
  194. package/server/src/Console/Commands/FixDriverCompanies.php +65 -0
  195. package/server/src/Exceptions/IntegratedVendorException.php +11 -12
  196. package/server/src/Http/Controllers/Api/v1/DriverController.php +41 -32
  197. package/server/src/Http/Controllers/Api/v1/OrderController.php +1 -1
  198. package/server/src/Http/Controllers/Internal/v1/DriverController.php +17 -1
  199. package/server/src/Http/Resources/v1/Driver.php +1 -1
  200. package/server/src/Http/Resources/v1/Entity.php +2 -2
  201. package/server/src/Http/Resources/v1/Payload.php +11 -30
  202. package/server/src/Http/Resources/v1/Place.php +3 -3
  203. package/server/src/Http/Resources/v1/Waypoint.php +101 -0
  204. package/server/src/Models/Payload.php +39 -0
  205. package/server/src/Models/Place.php +5 -2
  206. package/server/src/Models/Waypoint.php +15 -3
  207. package/server/src/Providers/FleetOpsServiceProvider.php +1 -0
  208. package/server/src/Support/Flow.php +19 -2
  209. package/translations/en-us.yaml +1341 -3
@@ -23,6 +23,13 @@ export default class OperationsOrdersIndexController extends BaseController {
23
23
  */
24
24
  @service fetch;
25
25
 
26
+ /**
27
+ * Inject the `intl` service
28
+ *
29
+ * @var {Service}
30
+ */
31
+ @service intl;
32
+
26
33
  /**
27
34
  * Inject the `filters` service
28
35
  *
@@ -317,7 +324,7 @@ export default class OperationsOrdersIndexController extends BaseController {
317
324
  */
318
325
  @tracked columns = [
319
326
  {
320
- label: 'ID',
327
+ label: this.intl.t('fleet-ops.common.id'),
321
328
  valuePath: 'public_id',
322
329
  width: '150px',
323
330
  cellComponent: 'table/cell/link-to',
@@ -329,7 +336,7 @@ export default class OperationsOrdersIndexController extends BaseController {
329
336
  filterComponent: 'filter/string',
330
337
  },
331
338
  {
332
- label: 'Internal ID',
339
+ label: this.intl.t('fleet-ops.common.internal-id'),
333
340
  valuePath: 'internal_id',
334
341
  width: '125px',
335
342
  resizable: true,
@@ -338,7 +345,7 @@ export default class OperationsOrdersIndexController extends BaseController {
338
345
  filterComponent: 'filter/string',
339
346
  },
340
347
  {
341
- label: 'Payload',
348
+ label: this.intl.t('fleet-ops.operations.orders.index.payload'),
342
349
  valuePath: 'payload.public_id',
343
350
  resizable: true,
344
351
  hidden: true,
@@ -349,7 +356,7 @@ export default class OperationsOrdersIndexController extends BaseController {
349
356
  filterComponent: 'filter/string',
350
357
  },
351
358
  {
352
- label: 'Customer',
359
+ label: this.intl.t('fleet-ops.operations.orders.index.customer'),
353
360
  valuePath: 'customer.name',
354
361
  cellComponent: 'table/cell/base',
355
362
  width: '125px',
@@ -363,7 +370,7 @@ export default class OperationsOrdersIndexController extends BaseController {
363
370
  model: 'customer',
364
371
  },
365
372
  {
366
- label: 'Facilitator',
373
+ label: this.intl.t('fleet-ops.operations.orders.index.facilitator'),
367
374
  valuePath: 'facilitator.name',
368
375
  cellComponent: 'table/cell/base',
369
376
  width: '125px',
@@ -377,7 +384,7 @@ export default class OperationsOrdersIndexController extends BaseController {
377
384
  model: 'vendor',
378
385
  },
379
386
  {
380
- label: 'Pickup',
387
+ label: this.intl.t('fleet-ops.operations.orders.index.pickup'),
381
388
  valuePath: 'pickupName',
382
389
  cellComponent: 'table/cell/base',
383
390
  width: '160px',
@@ -392,7 +399,7 @@ export default class OperationsOrdersIndexController extends BaseController {
392
399
  model: 'place',
393
400
  },
394
401
  {
395
- label: 'Dropoff',
402
+ label: this.intl.t('fleet-ops.operations.orders.index.dropoff'),
396
403
  valuePath: 'dropoffName',
397
404
  cellComponent: 'table/cell/base',
398
405
  width: '160px',
@@ -406,7 +413,7 @@ export default class OperationsOrdersIndexController extends BaseController {
406
413
  model: 'place',
407
414
  },
408
415
  {
409
- label: 'Scheduled At',
416
+ label: this.intl.t('fleet-ops.operations.orders.index.scheduled-at'),
410
417
  valuePath: 'scheduledAt',
411
418
  sortParam: 'scheduled_at',
412
419
  filterParam: 'scheduled_at',
@@ -417,7 +424,7 @@ export default class OperationsOrdersIndexController extends BaseController {
417
424
  filterComponent: 'filter/date',
418
425
  },
419
426
  {
420
- label: '# Items',
427
+ label: this.intl.t('fleet-ops.operations.orders.index.items'),
421
428
  cellComponent: 'table/cell/base',
422
429
  valuePath: 'item_count',
423
430
  resizable: true,
@@ -425,7 +432,7 @@ export default class OperationsOrdersIndexController extends BaseController {
425
432
  width: '50px',
426
433
  },
427
434
  {
428
- label: 'Transaction Total',
435
+ label: this.intl.t('fleet-ops.operations.orders.index.transaction'),
429
436
  cellComponent: 'table/cell/base',
430
437
  valuePath: 'transaction_amount',
431
438
  width: '50px',
@@ -434,7 +441,7 @@ export default class OperationsOrdersIndexController extends BaseController {
434
441
  sortable: true,
435
442
  },
436
443
  {
437
- label: 'Tracking Number',
444
+ label: this.intl.t('fleet-ops.operations.orders.index.tracking'),
438
445
  cellComponent: 'table/cell/base',
439
446
  valuePath: 'tracking_number.tracking_number',
440
447
  width: '170px',
@@ -444,7 +451,7 @@ export default class OperationsOrdersIndexController extends BaseController {
444
451
  filterComponent: 'filter/string',
445
452
  },
446
453
  {
447
- label: 'Driver Assigned',
454
+ label: this.intl.t('fleet-ops.operations.orders.index.driver-assigned'),
448
455
  cellComponent: 'table/cell/driver-name',
449
456
  valuePath: 'driver_assigned',
450
457
  modelPath: 'driver_assigned',
@@ -458,7 +465,7 @@ export default class OperationsOrdersIndexController extends BaseController {
458
465
  model: 'driver',
459
466
  },
460
467
  {
461
- label: 'Type',
468
+ label: this.intl.t('fleet-ops.common.type'),
462
469
  valuePath: 'type',
463
470
  width: '100px',
464
471
  resizable: true,
@@ -472,7 +479,7 @@ export default class OperationsOrdersIndexController extends BaseController {
472
479
  filterComponentPlaceholder: 'Filter by order type',
473
480
  },
474
481
  {
475
- label: 'Status',
482
+ label: this.intl.t('fleet-ops.common.status'),
476
483
  valuePath: 'status',
477
484
  cellComponent: 'table/cell/status',
478
485
  width: '120px',
@@ -483,7 +490,7 @@ export default class OperationsOrdersIndexController extends BaseController {
483
490
  filterOptions: this.statusOptions,
484
491
  },
485
492
  {
486
- label: 'Created At',
493
+ label: this.intl.t('fleet-ops.common.created-at'),
487
494
  valuePath: 'createdAt',
488
495
  sortParam: 'created_at',
489
496
  filterParam: 'created_at',
@@ -494,7 +501,7 @@ export default class OperationsOrdersIndexController extends BaseController {
494
501
  filterComponent: 'filter/date',
495
502
  },
496
503
  {
497
- label: 'Updated At',
504
+ label: this.intl.t('fleet-ops.common.updated-at'),
498
505
  valuePath: 'updatedAt',
499
506
  sortParam: 'updated_at',
500
507
  filterParam: 'updated_at',
@@ -506,7 +513,7 @@ export default class OperationsOrdersIndexController extends BaseController {
506
513
  filterComponent: 'filter/date',
507
514
  },
508
515
  {
509
- label: 'Created By',
516
+ label: this.intl.t('fleet-ops.operations.orders.index.created-by'),
510
517
  valuePath: 'created_by_name',
511
518
  width: '125px',
512
519
  resizable: true,
@@ -518,7 +525,7 @@ export default class OperationsOrdersIndexController extends BaseController {
518
525
  model: 'user',
519
526
  },
520
527
  {
521
- label: 'Updated By',
528
+ label: this.intl.t('fleet-ops.operations.orders.index.updated-by'),
522
529
  valuePath: 'updated_by_name',
523
530
  width: '125px',
524
531
  resizable: true,
@@ -541,12 +548,12 @@ export default class OperationsOrdersIndexController extends BaseController {
541
548
  width: '12%',
542
549
  actions: [
543
550
  {
544
- label: 'View Order',
551
+ label: this.intl.t('fleet-ops.operations.orders.index.view-order'),
545
552
  icon: 'eye',
546
553
  fn: this.viewOrder,
547
554
  },
548
555
  {
549
- label: 'Cancel Order',
556
+ label: this.intl.t('fleet-ops.operations.orders.index.cancel-order'),
550
557
  icon: 'ban',
551
558
  fn: this.cancelOrder,
552
559
  },
@@ -554,7 +561,7 @@ export default class OperationsOrdersIndexController extends BaseController {
554
561
  separator: true,
555
562
  },
556
563
  {
557
- label: 'Delete Order',
564
+ label: this.intl.t('fleet-ops.operations.orders.index.delete-order'),
558
565
  icon: 'trash',
559
566
  fn: this.deleteOrder,
560
567
  },
@@ -814,15 +821,15 @@ export default class OperationsOrdersIndexController extends BaseController {
814
821
  */
815
822
  @action cancelOrder(order, options = {}) {
816
823
  this.modalsManager.confirm({
817
- title: `Are you sure you wish to cancel this order?`,
818
- body: `Once this order is canceled, the order record will still be visible but activity cannot be added to this order.`,
824
+ title: this.intl.t('fleet-ops.operations.orders.index.cancel-title'),
825
+ body: this.intl.t('fleet-ops.operations.orders.index.cancel-body'),
819
826
  order,
820
827
  confirm: (modal) => {
821
828
  modal.startLoading();
822
829
 
823
830
  return this.fetch.patch(`orders/cancel`, { order: order.id }).then(() => {
824
831
  order.set('status', 'canceled');
825
- this.notifications.success(`Order ${order.public_id} has been canceled.`);
832
+ this.notifications.success(this.intl.t('fleet-ops.operations.orders.index.cancel-success', { orderId: order.public_id }));
826
833
  });
827
834
  },
828
835
  ...options,
@@ -838,8 +845,8 @@ export default class OperationsOrdersIndexController extends BaseController {
838
845
  */
839
846
  @action dispatchOrder(order, options = {}) {
840
847
  this.modalsManager.confirm({
841
- title: `Are you sure you want to dispatch this order?`,
842
- body: `Once this order is dispatched the assigned driver will be notified.`,
848
+ title: this.intl.t('fleet-ops.operations.orders.index.dispatch-title'),
849
+ body: this.intl.t('fleet-ops.operations.orders.index.dispatch-body'),
843
850
  acceptButtonScheme: 'primary',
844
851
  acceptButtonText: 'Dispatch',
845
852
  acceptButtonIcon: 'paper-plane',
@@ -851,7 +858,7 @@ export default class OperationsOrdersIndexController extends BaseController {
851
858
  .patch(`orders/dispatch`, { order: order.id })
852
859
  .then(() => {
853
860
  order.set('status', 'dispatched');
854
- this.notifications.success(`Order ${order.public_id} has been dispatched.`);
861
+ this.notifications.success(this.intl.t('fleet-ops.operations.orders.index.dispatch-success', { orderId: order.public_id }));
855
862
  })
856
863
  .catch((error) => {
857
864
  modal.stopLoading();
@@ -9,6 +9,7 @@ export default class OperationsSchedulerIndexController extends BaseController {
9
9
  @service modalsManager;
10
10
  @service notifications;
11
11
  @service store;
12
+ @service intl;
12
13
  @service hostRouter;
13
14
  @tracked scheduledOrders = [];
14
15
  @tracked unscheduledOrders = [];
@@ -53,11 +54,11 @@ export default class OperationsSchedulerIndexController extends BaseController {
53
54
 
54
55
  if (order.scheduled_at) {
55
56
  // notify order has been scheduled
56
- this.notifications.success(`Order '${order.public_id}' has been scheduled at ${order.scheduledAt}.`);
57
+ this.notifications.success(this.intl.t('fleet-ops.operations.scheduler.index.info-message', { orderId: order.public_id, orderAt: order.scheduledAt }));
57
58
  // add event to calendar
58
59
  event = this.calendar.addEvent(createFullCalendarEventFromOrder(order));
59
60
  } else {
60
- this.notifications.info(`Order '${order.public_id}' has been unscheduled.`);
61
+ this.notifications.info(this.intl.t('fleet-ops.operations.scheduler.index.info-message', { orderId: order.public_id }));
61
62
  }
62
63
 
63
64
  // update event props
@@ -1,8 +1,16 @@
1
1
  import OperationsServiceRatesIndexNewController from './new';
2
2
  import { tracked } from '@glimmer/tracking';
3
3
  import { action } from '@ember/object';
4
+ import { inject as service } from '@ember/object';
4
5
 
5
6
  export default class OperationsServiceRatesIndexEditController extends OperationsServiceRatesIndexNewController {
7
+ /**
8
+ * Inject the `intl` service
9
+ *
10
+ * @var {Service}
11
+ */
12
+ @service intl;
13
+
6
14
  /**
7
15
  * True if updating service rate.
8
16
  *
@@ -40,7 +48,7 @@ export default class OperationsServiceRatesIndexEditController extends Operation
40
48
  .save()
41
49
  .then((serviceRate) => {
42
50
  return this.transitionToRoute('operations.service-rates.index').then(() => {
43
- this.notifications.success(`Service rate '${serviceRate.service_name}' updated`);
51
+ this.notifications.success(this.intl.t('fleet-ops.operations.service-rates.index.edit.success-message', { serviceName: serviceRate.service_name }));
44
52
  this.resetForm();
45
53
  });
46
54
  })
@@ -19,6 +19,13 @@ export default class OperationsServiceRatesIndexNewController extends BaseContro
19
19
  */
20
20
  @service notifications;
21
21
 
22
+ /**
23
+ * Inject the `intl` service
24
+ *
25
+ * @var {Service}
26
+ */
27
+ @service intl;
28
+
22
29
  /**
23
30
  * Inject the `loader` service
24
31
  *
@@ -300,8 +307,9 @@ export default class OperationsServiceRatesIndexNewController extends BaseContro
300
307
  .save()
301
308
  .then((serviceRate) => {
302
309
  return this.transitionToRoute('operations.service-rates.index').then(() => {
303
- this.notifications.success(`New Service Rate ${serviceRate.service_name} Created`);
310
+ this.notifications.success(this.intl.t('fleet-ops.operations.service-rates.index.new.success-message', { serviceName: serviceRate.service_name }));
304
311
  this.resetForm();
312
+ return this.hostRouter.refresh();
305
313
  });
306
314
  })
307
315
  .catch((error) => {
@@ -21,6 +21,13 @@ export default class OperationsServiceRatesIndexController extends BaseControlle
21
21
  */
22
22
  @service currentUser;
23
23
 
24
+ /**
25
+ * Inject the `intl` service
26
+ *
27
+ * @var {Service}
28
+ */
29
+ @service intl;
30
+
24
31
  /**
25
32
  * Inject the `fetch` service
26
33
  *
@@ -112,7 +119,7 @@ export default class OperationsServiceRatesIndexController extends BaseControlle
112
119
  */
113
120
  @tracked columns = [
114
121
  {
115
- label: 'ID',
122
+ label: this.intl.t('fleet-ops.common.id'),
116
123
  valuePath: 'public_id',
117
124
  width: '150px',
118
125
  cellComponent: 'table/cell/anchor',
@@ -123,7 +130,7 @@ export default class OperationsServiceRatesIndexController extends BaseControlle
123
130
  filterComponent: 'filter/string',
124
131
  },
125
132
  {
126
- label: 'Service',
133
+ label: this.intl.t('fleet-ops.common.service'),
127
134
  valuePath: 'service_name',
128
135
  cellComponent: 'table/cell/base',
129
136
  width: '125px',
@@ -132,7 +139,7 @@ export default class OperationsServiceRatesIndexController extends BaseControlle
132
139
  filterable: false,
133
140
  },
134
141
  {
135
- label: 'Service Area',
142
+ label: this.intl.t('fleet-ops.common.service-area'),
136
143
  valuePath: 'service_area.name',
137
144
  cellComponent: 'table/cell/base',
138
145
  width: '125px',
@@ -145,7 +152,7 @@ export default class OperationsServiceRatesIndexController extends BaseControlle
145
152
  model: 'service-area',
146
153
  },
147
154
  {
148
- label: 'Zone',
155
+ label: this.intl.t('fleet-ops.common.zone'),
149
156
  valuePath: 'zone.name',
150
157
  cellComponent: 'table/cell/base',
151
158
  width: '125px',
@@ -158,7 +165,7 @@ export default class OperationsServiceRatesIndexController extends BaseControlle
158
165
  model: 'zone',
159
166
  },
160
167
  {
161
- label: 'Created At',
168
+ label: this.intl.t('fleet-ops.common.created-at'),
162
169
  valuePath: 'createdAt',
163
170
  sortParam: 'created_at',
164
171
  width: '125px',
@@ -168,7 +175,7 @@ export default class OperationsServiceRatesIndexController extends BaseControlle
168
175
  filterComponent: 'filter/date',
169
176
  },
170
177
  {
171
- label: 'Updated At',
178
+ label: this.intl.t('fleet-ops.common.updated-at'),
172
179
  valuePath: 'updatedAt',
173
180
  sortParam: 'updated_at',
174
181
  width: '125px',
@@ -189,11 +196,11 @@ export default class OperationsServiceRatesIndexController extends BaseControlle
189
196
  width: '10%',
190
197
  actions: [
191
198
  {
192
- label: 'Edit Service Rate',
199
+ label: this.intl.t('fleet-ops.operations.service-rates.index.edit-service'),
193
200
  fn: this.editServiceRate,
194
201
  },
195
202
  {
196
- label: 'Delete Service Rate',
203
+ label: this.intl.t('fleet-ops.operations.service-rates.index.delete-service'),
197
204
  fn: this.deleteServiceRate,
198
205
  },
199
206
  ],
@@ -280,7 +287,7 @@ export default class OperationsServiceRatesIndexController extends BaseControlle
280
287
  @action bulkDeleteServiceRates(selected) {
281
288
  this.crud.bulkDelete(selected, {
282
289
  modelNamePath: `public_id`,
283
- acceptButtonText: "Delete Service's",
290
+ acceptButtonText: this.intl.t('fleet-ops.operations.service-rates.index.accept-button'),
284
291
  onSuccess: () => {
285
292
  return this.hostRouter.refresh();
286
293
  },
@@ -26,7 +26,7 @@ export default class ManagementPlacesIndexRoute extends Route {
26
26
 
27
27
  @action willTransition(transition) {
28
28
  if (isNestedRouteTransition(transition)) {
29
- set(this.queryParams, 'page.refreshModel', false);
29
+ // set(this.queryParams, 'page.refreshModel', false);
30
30
  set(this.queryParams, 'sort.refreshModel', false);
31
31
  }
32
32
  }
@@ -25,9 +25,7 @@ export default class OperationsOrdersIndexViewRoute extends Route {
25
25
  return this.transitionTo('operations.orders.index');
26
26
  }
27
27
 
28
- model(order) {
29
- const { public_id } = order;
30
-
28
+ model({ public_id }) {
31
29
  return this.store.queryRecord('order', {
32
30
  public_id,
33
31
  single: true,
@@ -80,16 +78,6 @@ export default class OperationsOrdersIndexViewRoute extends Route {
80
78
 
81
79
  async setupController(controller, model) {
82
80
  super.setupController(controller, model);
83
-
84
- controller.isLoadingAdditionalData = true;
85
-
86
- await model.loadPayload();
87
- await model.loadDriver();
88
- await model.loadTrackingNumber();
89
- await model.loadCustomer();
90
- await model.loadTrackingActivity();
91
- await model.loadOrderConfig();
92
-
93
- controller.isLoadingAdditionalData = false;
81
+ controller.loadOrderRelations.perform(model);
94
82
  }
95
83
  }
@@ -7,11 +7,12 @@ export default class DriverActionsService extends Service {
7
7
  @service modalsManager;
8
8
  @service universe;
9
9
  @service crud;
10
+ @service intl;
10
11
 
11
12
  assignOrder(driver, options = {}) {
12
13
  this.modalsManager.show('modals/driver-assign-order', {
13
- title: `Assign Order to this Driver`,
14
- acceptButtonText: 'Assign Order',
14
+ title: this.intl.t('fleet-ops.management.drivers.index.order-driver'),
15
+ acceptButtonText: this.intl.t('fleet-ops.management.drivers.index.assign-order'),
15
16
  acceptButtonIcon: 'check',
16
17
  acceptButtonIconPrefix: 'fas',
17
18
  acceptButtonDisabled: true,
@@ -25,7 +26,7 @@ export default class DriverActionsService extends Service {
25
26
  confirm: (modal) => {
26
27
  const selectedOrder = modal.getOption('selectedOrder');
27
28
  if (!selectedOrder) {
28
- this.notifications.warning('No order selected!');
29
+ this.notifications.warning(this.intl.t('fleet-ops.management.drivers.index.no-order-warning'));
29
30
  return;
30
31
  }
31
32
 
@@ -35,7 +36,7 @@ export default class DriverActionsService extends Service {
35
36
  return driver
36
37
  .save()
37
38
  .then(() => {
38
- this.notifications.success(`${driver.name} assigned to order.`);
39
+ this.notifications.success(this.intl.t('fleet-ops.management.drivers.index.assign-driver', { driverName: driver.name }));
39
40
  })
40
41
  .catch((error) => {
41
42
  driver.rollbackAttributes();
@@ -49,8 +50,8 @@ export default class DriverActionsService extends Service {
49
50
 
50
51
  assignVehicle(driver, options = {}) {
51
52
  this.modalsManager.show('modals/driver-assign-vehicle', {
52
- title: `Assign Vehicle to this Driver`,
53
- acceptButtonText: 'Confirm & Create',
53
+ title: this.intl.t('fleet-ops.management.drivers.index.title-vehicle'),
54
+ acceptButtonText: this.intl.t('fleet-ops.management.drivers.index.confirm-button'),
54
55
  acceptButtonIcon: 'check',
55
56
  acceptButtonIconPrefix: 'fas',
56
57
  hideDeclineButton: true,
@@ -61,7 +62,7 @@ export default class DriverActionsService extends Service {
61
62
  return driver
62
63
  .save()
63
64
  .then((driver) => {
64
- this.notifications.success(`${driver.name} assigned to vehicle.`);
65
+ this.notifications.success(this.intl.t('fleet-ops.management.drivers.index.assign-vehicle', { driverName: driver.name }));
65
66
  })
66
67
  .catch((error) => {
67
68
  driver.rollbackAttributes();
@@ -78,7 +79,7 @@ export default class DriverActionsService extends Service {
78
79
  const [latitude, longitude] = location.coordinates;
79
80
 
80
81
  this.modalsManager.show('modals/point-map', {
81
- title: `Current Location of ${driver.name}`,
82
+ title: this.intl.t('fleet-ops.management.drivers.index.locate-driver', { driverName: driver.name }),
82
83
  acceptButtonText: 'Done',
83
84
  acceptButtonIcon: 'check',
84
85
  acceptButtonIconPrefix: 'fas',
@@ -7,13 +7,14 @@ export default class VehicleActionsService extends Service {
7
7
  @service modalsManager;
8
8
  @service universe;
9
9
  @service crud;
10
+ @service intl;
10
11
 
11
12
  locate(vehicle, options = {}) {
12
13
  const { location } = vehicle;
13
14
  const [latitude, longitude] = location.coordinates;
14
15
 
15
16
  this.modalsManager.show('modals/point-map', {
16
- title: `Current Location of ${vehicle.displayName}`,
17
+ title: this.intl.t('fleet-ops.management.vehicles.index.locate-title', { vehicleName: vehicle.displayName }),
17
18
  acceptButtonText: 'Done',
18
19
  acceptButtonIcon: 'check',
19
20
  acceptButtonIconPrefix: 'fas',
@@ -1,5 +1,5 @@
1
- <Layout::Section::Header @title="Contacts" @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
- <Button @icon="refresh" @onClick={{this.reload}} @helpText="Reload data" class="mr-2" />
1
+ <Layout::Section::Header @title={{t "fleet-ops.management.contacts.index.title"}} @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
+ <Button @icon="refresh" @onClick={{this.reload}} @helpText={{t "fleet-ops.common.reload-data"}} class="mr-2" />
3
3
  <FiltersPicker
4
4
  @columns={{this.columns}}
5
5
  @onApply={{fn this.filters.apply this}}
@@ -10,18 +10,18 @@
10
10
  />
11
11
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
12
12
  {{#if (safe-has this.table "selectedRows")}}
13
- <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
13
+ <DropdownButton @icon="layer-group" @text={{t "fleet-ops.common.bulk-action"}} @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
14
14
  <div class="next-dd-menu mt-2 mx-0">
15
15
  <div class="px-1">
16
16
  <a href="#" class="text-red-500 next-dd-item" {{on "click" (dropdown-fn dd this.bulkDeleteContacts)}}>
17
- Delete Contacts
17
+ {{t "fleet-ops.management.contacts.index.delete-contacts"}}
18
18
  </a>
19
19
  </div>
20
20
  </div>
21
21
  </DropdownButton>
22
22
  {{/if}}
23
- <Button @icon="plus" @iconPrefix="fas" @type="primary" @text="New" class="mr-2" @onClick={{this.createContact}} />
24
- <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text="Export" @onClick={{this.exportContacts}} />
23
+ <Button @icon="plus" @iconPrefix="fas" @type="primary" @text={{t "fleet-ops.common.new"}} class="mr-2" @onClick={{this.createContact}} />
24
+ <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text={{t "fleet-ops.common.export"}} @onClick={{this.exportContacts}} />
25
25
  </Layout::Section::Header>
26
26
 
27
27
  <Layout::Section::Body>
@@ -1,10 +1,10 @@
1
1
  <Layout::Section::Header
2
2
  @title={{t "fleet-ops.management.drivers.index.title"}}
3
- @searchPlaceholder={{t "fleet-ops.management.drivers.index.fields.search.placeholder"}}
3
+ @searchPlaceholder={{t "fleet-ops.management.drivers.index.search-placeholder"}}
4
4
  @searchQuery={{this.query}}
5
5
  @onSearch={{perform this.search}}
6
6
  >
7
- <Button @icon="refresh" @onClick={{this.reload}} @helpText="Reload data" class="mr-2" />
7
+ <Button @icon="refresh" @onClick={{this.reload}} @helpText={{t "fleet-ops.common.reload-data"}} class="mr-2" />
8
8
  <Button @icon="grip-horizontal" @prefix="fas" @onClick={{this.reload}} @disabled={{this.isGridLayout}} class="mr-2" />
9
9
  <Button @icon="table" @prefix="fas" @onClick={{fn this.changeLayout "table"}} @disabled={{this.isTableLayout}} class="mr-2" />
10
10
  <FiltersPicker
@@ -17,18 +17,18 @@
17
17
  />
18
18
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
19
19
  {{#if (safe-has this.table "selectedRows")}}
20
- <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
20
+ <DropdownButton @icon="layer-group" @text={{t "fleet-ops.common.bulk-action"}} @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
21
21
  <div class="next-dd-menu mt-2 mx-0">
22
22
  <div class="px-1">
23
23
  <a href="#" class="text-red-500 next-dd-item" {{on "click" (dropdown-fn dd this.bulkDeleteDrivers)}}>
24
- Delete Drivers
24
+ {{t "fleet-ops.management.drivers.index.delete-drivers"}}
25
25
  </a>
26
26
  </div>
27
27
  </div>
28
28
  </DropdownButton>
29
29
  {{/if}}
30
- <Button @icon="plus" @iconPrefix="fas" @type="primary" @text="New" class="mr-2" @onClick={{this.createDriver}} />
31
- <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text="Export" @wrapperClass="hidden md:flex" @onClick={{this.exportDrivers}} />
30
+ <Button @icon="plus" @iconPrefix="fas" @type="primary" @text={{t "fleet-ops.common.new"}} class="mr-2" @onClick={{this.createDriver}} />
31
+ <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text={{t "fleet-ops.common.export"}} @wrapperClass="hidden md:flex" @onClick={{this.exportDrivers}} />
32
32
  </Layout::Section::Header>
33
33
 
34
34
  {{#if this.isTableLayout}}
@@ -1,5 +1,5 @@
1
- <Layout::Section::Header @title="Fleets" @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
- <Button @icon="refresh" @onClick={{this.reload}} @helpText="Reload data" class="mr-2" />
1
+ <Layout::Section::Header @title={{t "fleet-ops.management.fleets.index.title"}} @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
+ <Button @icon="refresh" @onClick={{this.reload}} @helpText={{t "fleet-ops.common.reload-data"}} class="mr-2" />
3
3
  <FiltersPicker
4
4
  @columns={{this.columns}}
5
5
  @onApply={{fn this.filters.apply this}}
@@ -10,18 +10,18 @@
10
10
  />
11
11
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
12
12
  {{#if (safe-has this.table "selectedRows")}}
13
- <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
13
+ <DropdownButton @icon="layer-group" @text={{t "fleet-ops.common.bulk-action"}} @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
14
14
  <div class="next-dd-menu mt-2 mx-0">
15
15
  <div class="px-1">
16
16
  <a href="#" class="text-red-500 next-dd-item" {{on "click" (dropdown-fn dd this.bulkDeleteFleets)}}>
17
- Delete Fleets
17
+ {{t "fleet-ops.management.fleets.index.delete-fleets"}}
18
18
  </a>
19
19
  </div>
20
20
  </div>
21
21
  </DropdownButton>
22
22
  {{/if}}
23
- <Button @icon="plus" @iconPrefix="fas" @type="primary" @text="New" class="mr-2" @onClick={{this.createFleet}} />
24
- <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text="Export" @onClick={{this.exportFleets}} />
23
+ <Button @icon="plus" @iconPrefix="fas" @type="primary" @text={{t "fleet-ops.common.new"}} class="mr-2" @onClick={{this.createFleet}} />
24
+ <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text={{t "fleet-ops.common.export"}} @onClick={{this.exportFleets}} />
25
25
  </Layout::Section::Header>
26
26
 
27
27
  <Layout::Section::Body>
@@ -1,5 +1,5 @@
1
- <Layout::Section::Header @title="Fuel Reports" @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
- <Button @icon="refresh" @onClick={{this.reload}} @helpText="Reload data" class="mr-2" />
1
+ <Layout::Section::Header @title={{t "fleet-ops.management.fuel-reports.index.title"}} @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
+ <Button @icon="refresh" @onClick={{this.reload}} @helpText={{t "fleet-ops.common.reload-data"}} class="mr-2" />
3
3
  <FiltersPicker
4
4
  @columns={{this.columns}}
5
5
  @onApply={{fn this.filters.apply this}}
@@ -10,18 +10,18 @@
10
10
  />
11
11
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
12
12
  {{#if (safe-has this.table "selectedRows")}}
13
- <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
13
+ <DropdownButton @icon="layer-group" @text={{t "fleet-ops.common.bulk-action"}} @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
14
14
  <div class="next-dd-menu mt-2 mx-0">
15
15
  <div class="px-1">
16
- <a href="#" class="text-red-500 next-dd-item" {{on "click" (dropdown-fn dd this.bulkDeleteFuelReports)}}>
17
- Delete Fuel Reports
16
+ <a href="#" class="text-red-500 next-dd-item" {{on "click" (dropdown-fn dd this.bulkDeleteFuelReports)}}>
17
+ {{t "fleet-ops.management.fuel-reports.index.delete-fuel-reports"}}
18
18
  </a>
19
19
  </div>
20
20
  </div>
21
21
  </DropdownButton>
22
22
  {{/if}}
23
- <Button @icon="plus" @iconPrefix="fas" @type="primary" @text="New" class="mr-2" @onClick={{this.createFuelReport}} />
24
- <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text="Export" @onClick={{this.exportFuelReports}} />
23
+ <Button @icon="plus" @iconPrefix="fas" @type="primary" @text={{t "fleet-ops.common.new"}} class="mr-2" @onClick={{this.createFuelReport}} />
24
+ <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text={{t "fleet-ops.common.export"}} @onClick={{this.exportFuelReports}} />
25
25
  </Layout::Section::Header>
26
26
 
27
27
  <Layout::Section::Body @pagination={{true}} @onToggleAll={{this.toggleAll}} @allToggled={{this.allToggled}}>