@fleetbase/fleetops-engine 0.3.5 → 0.3.6

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 (122) hide show
  1. package/README.md +4 -4
  2. package/addon/components/admin/navigator-app.hbs +5 -0
  3. package/addon/components/admin/navigator-app.js +27 -0
  4. package/addon/components/driver-form-panel.js +13 -19
  5. package/addon/components/leaflet-draw-control.js +2 -3
  6. package/addon/components/live-map.js +7 -4
  7. package/addon/components/modals/driver-assign-order.hbs +2 -2
  8. package/addon/components/modals/order-import.hbs +5 -5
  9. package/addon/components/modals/order-new-activity.hbs +1 -1
  10. package/addon/components/order-config/entities-editor.js +3 -5
  11. package/addon/components/route-list.hbs +2 -2
  12. package/addon/components/vendor-form-panel.js +1 -1
  13. package/addon/controllers/application.js +2 -2
  14. package/addon/controllers/base-controller.js +31 -0
  15. package/addon/controllers/management/contacts/index/details.js +2 -2
  16. package/addon/controllers/management/contacts/index/edit.js +2 -2
  17. package/addon/controllers/management/contacts/index/new.js +2 -2
  18. package/addon/controllers/management/contacts/index.js +2 -2
  19. package/addon/controllers/management/drivers/index/details.js +2 -2
  20. package/addon/controllers/management/drivers/index/edit.js +28 -2
  21. package/addon/controllers/management/drivers/index/new.js +2 -2
  22. package/addon/controllers/management/drivers/index.js +11 -24
  23. package/addon/controllers/management/fleets/index/details.js +2 -2
  24. package/addon/controllers/management/fleets/index/edit.js +2 -2
  25. package/addon/controllers/management/fleets/index/new.js +2 -2
  26. package/addon/controllers/management/fleets/index.js +9 -9
  27. package/addon/controllers/management/fuel-reports/index/details.js +2 -2
  28. package/addon/controllers/management/fuel-reports/index/edit.js +2 -2
  29. package/addon/controllers/management/fuel-reports/index/new.js +2 -2
  30. package/addon/controllers/management/fuel-reports/index.js +2 -2
  31. package/addon/controllers/management/issues/index/details.js +2 -2
  32. package/addon/controllers/management/issues/index/edit.js +2 -2
  33. package/addon/controllers/management/issues/index/new.js +2 -2
  34. package/addon/controllers/management/issues/index.js +2 -9
  35. package/addon/controllers/management/places/index/details.js +2 -2
  36. package/addon/controllers/management/places/index/edit.js +2 -2
  37. package/addon/controllers/management/places/index/new.js +2 -2
  38. package/addon/controllers/management/places/index.js +2 -2
  39. package/addon/controllers/management/vehicles/index/details.js +2 -2
  40. package/addon/controllers/management/vehicles/index/edit.js +2 -2
  41. package/addon/controllers/management/vehicles/index/new.js +2 -2
  42. package/addon/controllers/management/vehicles/index.js +11 -12
  43. package/addon/controllers/management/vendors/index/details.js +2 -2
  44. package/addon/controllers/management/vendors/index/edit.js +2 -2
  45. package/addon/controllers/management/vendors/index/new.js +2 -2
  46. package/addon/controllers/management/vendors/index.js +2 -8
  47. package/addon/controllers/management.js +2 -2
  48. package/addon/controllers/operations/orders/index/config/types.js +2 -2
  49. package/addon/controllers/operations/orders/index/config.js +2 -2
  50. package/addon/controllers/operations/orders/index/new.js +64 -44
  51. package/addon/controllers/operations/orders/index/view.js +11 -4
  52. package/addon/controllers/operations/orders/index.js +2 -2
  53. package/addon/controllers/operations/scheduler/index.js +2 -2
  54. package/addon/controllers/operations/service-rates/index/edit.js +12 -18
  55. package/addon/controllers/operations/service-rates/index/new.js +16 -22
  56. package/addon/controllers/operations/service-rates/index.js +2 -2
  57. package/addon/engine.js +6 -0
  58. package/addon/helpers/waypoint-label.js +6 -1
  59. package/addon/routes/application.js +4 -15
  60. package/addon/routes/management/contacts/index.js +9 -5
  61. package/addon/routes/management/drivers/index.js +7 -3
  62. package/addon/routes/management/fleets/index.js +9 -5
  63. package/addon/routes/management/fuel-reports/index.js +9 -5
  64. package/addon/routes/management/issues/index.js +9 -5
  65. package/addon/routes/management/places/index.js +9 -5
  66. package/addon/routes/management/vehicles/index/details.js +2 -2
  67. package/addon/routes/management/vehicles/index.js +9 -0
  68. package/addon/routes/management/vendors/index.js +9 -6
  69. package/addon/routes/operations/orders/index/view.js +6 -2
  70. package/addon/routes/operations/orders/index.js +7 -1
  71. package/addon/routes/operations/orders.js +0 -1
  72. package/addon/routes/operations/service-rates/index.js +9 -27
  73. package/addon/routes/operations/service-rates.js +1 -8
  74. package/addon/styles/fleetops-engine.css +14 -7
  75. package/addon/templates/operations/orders/index/new.hbs +7 -7
  76. package/addon/templates/operations/orders/index/view.hbs +17 -16
  77. package/addon/utils/waypoint-label.js +3 -0
  78. package/app/controllers/{operations/zones/index.js → base-controller.js} +1 -1
  79. package/app/utils/waypoint-label.js +1 -0
  80. package/composer.json +1 -1
  81. package/config/environment.js +11 -1
  82. package/extension.json +1 -1
  83. package/index.js +1 -0
  84. package/package.json +47 -41
  85. package/server/migrations/2023_11_28_074244_add_supplier_uuid_column_to_entities_table.php +33 -0
  86. package/server/migrations/2023_12_14_100209_add_meta_column_on_driver_table.php +30 -0
  87. package/server/src/Http/Controllers/Api/v1/DriverController.php +7 -4
  88. package/server/src/Http/Controllers/Api/v1/OrderController.php +118 -42
  89. package/server/src/Http/Controllers/Api/v1/PayloadController.php +41 -43
  90. package/server/src/Http/Controllers/Api/v1/TrackingStatusController.php +43 -2
  91. package/server/src/Http/Controllers/Internal/v1/MorphController.php +48 -16
  92. package/server/src/Http/Controllers/Internal/v1/NavigatorController.php +41 -0
  93. package/server/src/Http/Controllers/Internal/v1/OrderController.php +3 -2
  94. package/server/src/Http/Controllers/Internal/v1/PlaceController.php +2 -2
  95. package/server/src/Http/Requests/CreateDriverRequest.php +2 -0
  96. package/server/src/Http/Requests/CreateOrderRequest.php +18 -4
  97. package/server/src/Http/Requests/CreatePayloadRequest.php +23 -7
  98. package/server/src/Http/Requests/CreatePlaceRequest.php +9 -5
  99. package/server/src/Http/Requests/CreateTrackingStatusRequest.php +69 -12
  100. package/server/src/Http/Requests/CreateVehicleRequest.php +5 -3
  101. package/server/src/Http/Resources/v1/Entity.php +3 -0
  102. package/server/src/Http/Resources/v1/Order.php +3 -2
  103. package/server/src/Models/Driver.php +5 -2
  104. package/server/src/Models/Entity.php +1 -1
  105. package/server/src/Models/Order.php +2 -2
  106. package/server/src/Models/Payload.php +27 -9
  107. package/server/src/Models/Place.php +28 -5
  108. package/server/src/Models/TrackingStatus.php +9 -3
  109. package/server/src/Models/VehicleDevice.php +28 -0
  110. package/server/src/Models/Vendor.php +16 -0
  111. package/server/src/Observers/DriverObserver.php +1 -1
  112. package/server/src/routes.php +8 -0
  113. package/tsconfig.declarations.json +10 -0
  114. package/addon/components/file-icon.js +0 -1
  115. package/addon/controllers/operations/zones/index.js +0 -475
  116. package/addon/routes/operations/dispatch.js +0 -3
  117. package/addon/routes/operations/zones/index.js +0 -25
  118. package/addon/routes/operations/zones.js +0 -7
  119. package/addon/templates/operations/dispatch.hbs +0 -1
  120. package/addon/templates/operations/zones/index.hbs +0 -72
  121. package/addon/templates/operations/zones.hbs +0 -1
  122. package/app/components/file-icon.js +0 -1
@@ -36,24 +36,18 @@ export default class OperationsServiceRatesIndexEditController extends Operation
36
36
  this.isUpdatingServiceRate = true;
37
37
  this.loader.showLoader('.overlay-inner-content', { loadingMessage: 'Updating service rate...' });
38
38
 
39
- try {
40
- return serviceRate
41
- .save()
42
- .then((serviceRate) => {
43
- return this.transitionToRoute('operations.service-rates.index').then(() => {
44
- this.notifications.success(`Service rate '${serviceRate.service_name}' updated`);
45
- this.resetForm();
46
- this.hostRouter.refresh();
47
- });
48
- })
49
- .catch(this.notifications.serverError)
50
- .finally(() => {
51
- this.isUpdatingServiceRate = false;
52
- this.loader.removeLoader();
39
+ return serviceRate
40
+ .save()
41
+ .then((serviceRate) => {
42
+ return this.transitionToRoute('operations.service-rates.index').then(() => {
43
+ this.notifications.success(`Service rate '${serviceRate.service_name}' updated`);
44
+ this.resetForm();
53
45
  });
54
- } catch (error) {
55
- this.isUpdatingServiceRate = false;
56
- this.loader.removeLoader();
57
- }
46
+ })
47
+ .catch(this.notifications.serverError)
48
+ .finally(() => {
49
+ this.isUpdatingServiceRate = false;
50
+ this.loader.removeLoader();
51
+ });
58
52
  }
59
53
  }
@@ -1,10 +1,10 @@
1
- import Controller from '@ember/controller';
1
+ import BaseController from '@fleetbase/fleetops-engine/controllers/base-controller';
2
2
  import { inject as service } from '@ember/service';
3
3
  import { tracked } from '@glimmer/tracking';
4
4
  import { action, computed } from '@ember/object';
5
5
  import { isBlank } from '@ember/utils';
6
6
 
7
- export default class OperationsServiceRatesIndexNewController extends Controller {
7
+ export default class OperationsServiceRatesIndexNewController extends BaseController {
8
8
  /**
9
9
  * Inject the `currentUser` service
10
10
  *
@@ -296,27 +296,21 @@ export default class OperationsServiceRatesIndexNewController extends Controller
296
296
  this.isCreatingServiceRate = true;
297
297
  this.loader.showLoader('.overlay-inner-content', { loadingMessage: 'Creating service rate...' });
298
298
 
299
- try {
300
- return serviceRate
301
- .save()
302
- .then((serviceRate) => {
303
- return this.transitionToRoute('operations.service-rates.index').then(() => {
304
- this.notifications.success(`New Service Rate ${serviceRate.service_name} Created`);
305
- this.resetForm();
306
- this.hostRouter.refresh();
307
- });
308
- })
309
- .catch((error) => {
310
- this.notifications.serverError(error);
311
- })
312
- .finally(() => {
313
- this.isCreatingServiceRate = false;
314
- this.loader.removeLoader();
299
+ return serviceRate
300
+ .save()
301
+ .then((serviceRate) => {
302
+ return this.transitionToRoute('operations.service-rates.index').then(() => {
303
+ this.notifications.success(`New Service Rate ${serviceRate.service_name} Created`);
304
+ this.resetForm();
315
305
  });
316
- } catch (error) {
317
- this.isCreatingServiceRate = false;
318
- this.loader.removeLoader();
319
- }
306
+ })
307
+ .catch((error) => {
308
+ this.notifications.serverError(error);
309
+ })
310
+ .finally(() => {
311
+ this.isCreatingServiceRate = false;
312
+ this.loader.removeLoader();
313
+ });
320
314
  }
321
315
 
322
316
  /**
@@ -1,4 +1,4 @@
1
- import Controller from '@ember/controller';
1
+ import BaseController from '@fleetbase/fleetops-engine/controllers/base-controller';
2
2
  import { inject as service } from '@ember/service';
3
3
  import { tracked } from '@glimmer/tracking';
4
4
  import { action } from '@ember/object';
@@ -6,7 +6,7 @@ import { isBlank } from '@ember/utils';
6
6
  import { timeout } from 'ember-concurrency';
7
7
  import { task } from 'ember-concurrency-decorators';
8
8
 
9
- export default class OperationsServiceRatesIndexController extends Controller {
9
+ export default class OperationsServiceRatesIndexController extends BaseController {
10
10
  /**
11
11
  * Inject the `currentUser` service
12
12
  *
package/addon/engine.js CHANGED
@@ -4,6 +4,7 @@ import Resolver from 'ember-resolver';
4
4
  import config from './config/environment';
5
5
  import services from '@fleetbase/ember-core/exports/services';
6
6
  import AdminVisibilityControlsComponent from './components/admin/visibility-controls';
7
+ import NavigatorAppControlsComponent from './components/admin/navigator-app';
7
8
 
8
9
  const { modulePrefix } = config;
9
10
  const externalRoutes = ['console', 'extensions'];
@@ -28,6 +29,11 @@ export default class FleetOpsEngine extends Engine {
28
29
  icon: 'eye',
29
30
  component: AdminVisibilityControlsComponent,
30
31
  },
32
+ {
33
+ title: 'Navigator Apps',
34
+ icon: 'key',
35
+ component: NavigatorAppControlsComponent,
36
+ },
31
37
  ],
32
38
  {
33
39
  slug: 'fleet-ops',
@@ -1 +1,6 @@
1
- export { default, waypointLabel } from '@fleetbase/console/helpers/waypoint-label';
1
+ import { helper } from '@ember/component/helper';
2
+ import waypointLabelUtil from '../utils/waypoint-label';
3
+
4
+ export default helper(function waypointLabel([index]) {
5
+ return waypointLabelUtil(index);
6
+ });
@@ -1,29 +1,18 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
+ import { action } from '@ember/object';
4
+ import getResourceNameFromTransition from '@fleetbase/ember-core/utils/get-resource-name-from-transition';
3
5
 
4
6
  export default class ApplicationRoute extends Route {
5
7
  @service loader;
6
8
  @service fetch;
7
9
 
8
- loading(transition) {
9
- const resourceName = this.getResouceName(transition);
10
+ @action loading(transition) {
11
+ const resourceName = getResourceNameFromTransition(transition);
10
12
  this.loader.showOnInitialTransition(transition, 'section.next-view-section', { loadingMessage: resourceName ? `Loading ${resourceName}...` : `Loading...` });
11
13
  }
12
14
 
13
15
  model() {
14
16
  return this.fetch.get('fleet-ops/settings/visibility');
15
17
  }
16
-
17
- getResouceName(transition) {
18
- const { to } = transition;
19
-
20
- if (typeof to.name === 'string') {
21
- let routePathSegments = to.name.split('.');
22
- let resourceName = routePathSegments[3];
23
-
24
- return resourceName;
25
- }
26
-
27
- return null;
28
- }
29
18
  }
@@ -1,14 +1,11 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
+ import { action, set } from '@ember/object';
4
+ import isNestedRouteTransition from '@fleetbase/ember-core/utils/is-nested-route-transition';
3
5
 
4
6
  export default class ManagementContactsIndexRoute extends Route {
5
7
  @service store;
6
8
 
7
- /**
8
- * Queryable parameters
9
- *
10
- * @var {Object}
11
- */
12
9
  queryParams = {
13
10
  page: { refreshModel: true },
14
11
  limit: { refreshModel: true },
@@ -25,6 +22,13 @@ export default class ManagementContactsIndexRoute extends Route {
25
22
  updatedAt: { refreshModel: true },
26
23
  };
27
24
 
25
+ @action willTransition(transition) {
26
+ if (isNestedRouteTransition(transition)) {
27
+ set(this.queryParams, 'page.refreshModel', false);
28
+ set(this.queryParams, 'sort.refreshModel', false);
29
+ }
30
+ }
31
+
28
32
  model(params) {
29
33
  return this.store.query('contact', params);
30
34
  }
@@ -1,9 +1,10 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
+ import { action, set } from '@ember/object';
4
+ import isNestedRouteTransition from '@fleetbase/ember-core/utils/is-nested-route-transition';
3
5
 
4
6
  export default class ManagementDriversIndexRoute extends Route {
5
7
  @service store;
6
- @service intl;
7
8
 
8
9
  queryParams = {
9
10
  page: { refreshModel: true },
@@ -28,8 +29,11 @@ export default class ManagementDriversIndexRoute extends Route {
28
29
  'within[where]': { refreshModel: true, replace: true },
29
30
  };
30
31
 
31
- beforeModel() {
32
- this.intl.setLocale(['en-us']);
32
+ @action willTransition(transition) {
33
+ if (isNestedRouteTransition(transition)) {
34
+ set(this.queryParams, 'page.refreshModel', false);
35
+ set(this.queryParams, 'sort.refreshModel', false);
36
+ }
33
37
  }
34
38
 
35
39
  model(params) {
@@ -1,14 +1,11 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
+ import { action, set } from '@ember/object';
4
+ import isNestedRouteTransition from '@fleetbase/ember-core/utils/is-nested-route-transition';
3
5
 
4
6
  export default class ManagementFleetsIndexRoute extends Route {
5
7
  @service store;
6
8
 
7
- /**
8
- * Queryable parameters
9
- *
10
- * @var {Object}
11
- */
12
9
  queryParams = {
13
10
  page: { refreshModel: true },
14
11
  limit: { refreshModel: true },
@@ -28,6 +25,13 @@ export default class ManagementFleetsIndexRoute extends Route {
28
25
  updatedAt: { refreshModel: true },
29
26
  };
30
27
 
28
+ @action willTransition(transition) {
29
+ if (isNestedRouteTransition(transition)) {
30
+ set(this.queryParams, 'page.refreshModel', false);
31
+ set(this.queryParams, 'sort.refreshModel', false);
32
+ }
33
+ }
34
+
31
35
  model(params) {
32
36
  return this.store.query('fleet', { ...params, with: ['parent_fleet', 'service_area', 'zone'] });
33
37
  }
@@ -1,14 +1,11 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
+ import { action, set } from '@ember/object';
4
+ import isNestedRouteTransition from '@fleetbase/ember-core/utils/is-nested-route-transition';
3
5
 
4
6
  export default class ManagementFuelReportsIndexRoute extends Route {
5
7
  @service store;
6
8
 
7
- /**
8
- * Queryable parameters
9
- *
10
- * @var {Object}
11
- */
12
9
  queryParams = {
13
10
  page: { refreshModel: true },
14
11
  limit: { refreshModel: true },
@@ -25,6 +22,13 @@ export default class ManagementFuelReportsIndexRoute extends Route {
25
22
  odometer: { refreshModel: true },
26
23
  };
27
24
 
25
+ @action willTransition(transition) {
26
+ if (isNestedRouteTransition(transition)) {
27
+ set(this.queryParams, 'page.refreshModel', false);
28
+ set(this.queryParams, 'sort.refreshModel', false);
29
+ }
30
+ }
31
+
28
32
  model(params) {
29
33
  return this.store.query('fuel-report', { ...params, with: ['driver', 'vehicle', 'reporter'] });
30
34
  }
@@ -1,14 +1,11 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
+ import { action, set } from '@ember/object';
4
+ import isNestedRouteTransition from '@fleetbase/ember-core/utils/is-nested-route-transition';
3
5
 
4
6
  export default class ManagementIssuesIndexRoute extends Route {
5
7
  @service store;
6
8
 
7
- /**
8
- * Queryable parameters
9
- *
10
- * @var {Object}
11
- */
12
9
  queryParams = {
13
10
  page: { refreshModel: true },
14
11
  limit: { refreshModel: true },
@@ -26,6 +23,13 @@ export default class ManagementIssuesIndexRoute extends Route {
26
23
  createdAt: { refreshModel: true },
27
24
  };
28
25
 
26
+ @action willTransition(transition) {
27
+ if (isNestedRouteTransition(transition)) {
28
+ set(this.queryParams, 'page.refreshModel', false);
29
+ set(this.queryParams, 'sort.refreshModel', false);
30
+ }
31
+ }
32
+
29
33
  model(params) {
30
34
  return this.store.query('issue', { ...params, with: ['driver', 'vehicle', 'assignee', 'reporter'] });
31
35
  }
@@ -1,14 +1,11 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
+ import { action, set } from '@ember/object';
4
+ import isNestedRouteTransition from '@fleetbase/ember-core/utils/is-nested-route-transition';
3
5
 
4
6
  export default class ManagementPlacesIndexRoute extends Route {
5
7
  @service store;
6
8
 
7
- /**
8
- * Queryable parameters
9
- *
10
- * @var {Object}
11
- */
12
9
  queryParams = {
13
10
  page: { refreshModel: true },
14
11
  limit: { refreshModel: true },
@@ -27,6 +24,13 @@ export default class ManagementPlacesIndexRoute extends Route {
27
24
  updatedAt: { refreshModel: true },
28
25
  };
29
26
 
27
+ @action willTransition(transition) {
28
+ if (isNestedRouteTransition(transition)) {
29
+ set(this.queryParams, 'page.refreshModel', false);
30
+ set(this.queryParams, 'sort.refreshModel', false);
31
+ }
32
+ }
33
+
30
34
  model(params) {
31
35
  return this.store.query('place', { ...params });
32
36
  }
@@ -8,8 +8,8 @@ export default class ManagementVehiclesIndexDetailsRoute extends Route {
8
8
  view: { refreshModel: false },
9
9
  };
10
10
 
11
- model({ public_id }) {
12
- return this.store.findRecord('vehicle', public_id);
11
+ model(params) {
12
+ return this.store.findRecord('vehicle', params.public_id);
13
13
  }
14
14
 
15
15
  afterModel(model) {
@@ -1,5 +1,7 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
+ import { action, set } from '@ember/object';
4
+ import isNestedRouteTransition from '@fleetbase/ember-core/utils/is-nested-route-transition';
3
5
 
4
6
  export default class ManagementVehiclesIndexRoute extends Route {
5
7
  @service store;
@@ -29,6 +31,13 @@ export default class ManagementVehiclesIndexRoute extends Route {
29
31
  'within[where]': { refreshModel: true, replace: true },
30
32
  };
31
33
 
34
+ @action willTransition(transition) {
35
+ if (isNestedRouteTransition(transition)) {
36
+ set(this.queryParams, 'page.refreshModel', false);
37
+ set(this.queryParams, 'sort.refreshModel', false);
38
+ }
39
+ }
40
+
32
41
  model(params) {
33
42
  return this.store.query('vehicle', { ...params });
34
43
  }
@@ -1,14 +1,11 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
+ import { action, set } from '@ember/object';
4
+ import isNestedRouteTransition from '@fleetbase/ember-core/utils/is-nested-route-transition';
3
5
 
4
6
  export default class ManagementVendorsIndexRoute extends Route {
5
7
  @service store;
6
8
 
7
- /**
8
- * Queryable parameters
9
- *
10
- * @var {Object}
11
- */
12
9
  queryParams = {
13
10
  page: { refreshModel: true },
14
11
  limit: { refreshModel: true },
@@ -26,12 +23,18 @@ export default class ManagementVendorsIndexRoute extends Route {
26
23
  website_url: { refreshModel: true },
27
24
  };
28
25
 
26
+ @action willTransition(transition) {
27
+ if (isNestedRouteTransition(transition)) {
28
+ set(this.queryParams, 'page.refreshModel', false);
29
+ set(this.queryParams, 'sort.refreshModel', false);
30
+ }
31
+ }
32
+
29
33
  model(params) {
30
34
  return this.store.query('vendor', { ...params });
31
35
  }
32
36
 
33
37
  async setupController(controller, model) {
34
- console.log('setupController action called');
35
38
  super.setupController(...arguments);
36
39
 
37
40
  // load integrated vendors
@@ -11,8 +11,12 @@ export default class OperationsOrdersIndexViewRoute extends Route {
11
11
  @action willTransition(transition) {
12
12
  const shouldReset = typeof transition.to.name === 'string' && !transition.to.name.includes('operations.orders');
13
13
 
14
- if (this.controller && shouldReset) {
15
- this.controller.resetView();
14
+ if (this.controller) {
15
+ this.controller.removeRoutingControlPreview();
16
+
17
+ if (shouldReset) {
18
+ this.controller.resetView();
19
+ }
16
20
  }
17
21
  }
18
22
 
@@ -1,7 +1,8 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { tracked } from '@glimmer/tracking';
3
3
  import { inject as service } from '@ember/service';
4
- import { action } from '@ember/object';
4
+ import { action, set } from '@ember/object';
5
+ import isNestedRouteTransition from '@fleetbase/ember-core/utils/is-nested-route-transition';
5
6
 
6
7
  export default class OperationsOrdersIndexRoute extends Route {
7
8
  @service store;
@@ -33,6 +34,11 @@ export default class OperationsOrdersIndexRoute extends Route {
33
34
  if (this.controller && shouldReset) {
34
35
  this.controller.resetView(transition);
35
36
  }
37
+
38
+ if (isNestedRouteTransition(transition)) {
39
+ set(this.queryParams, 'page.refreshModel', false);
40
+ set(this.queryParams, 'sort.refreshModel', false);
41
+ }
36
42
  }
37
43
 
38
44
  @action model(params) {
@@ -1,4 +1,3 @@
1
1
  import Route from '@ember/routing/route';
2
- // import '@fleetbase/leaflet-routing-machine';
3
2
 
4
3
  export default class OperationsOrdersRoute extends Route {}
@@ -1,36 +1,11 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
- import { action } from '@ember/object';
3
+ import { action, set } from '@ember/object';
4
+ import isNestedRouteTransition from '@fleetbase/ember-core/utils/is-nested-route-transition';
4
5
 
5
6
  export default class OperationsServiceRatesIndexRoute extends Route {
6
- /**
7
- * Inject the `store` service.
8
- *
9
- * @var {Store}
10
- */
11
7
  @service store;
12
8
 
13
- /**
14
- * Inject the `loader` service.
15
- *
16
- * @var {Service}
17
- */
18
- @service loader;
19
-
20
- /**
21
- * Loading event handler for route.
22
- *
23
- * @param {Transition} transition
24
- */
25
- @action loading(transition) {
26
- this.loader.showOnInitialTransition(transition, 'section.next-view-section', { loadingMessage: 'Loading service rates...' });
27
- }
28
-
29
- /**
30
- * Queryable parameters
31
- *
32
- * @var {Object}
33
- */
34
9
  queryParams = {
35
10
  page: { refreshModel: true },
36
11
  limit: { refreshModel: true },
@@ -40,6 +15,13 @@ export default class OperationsServiceRatesIndexRoute extends Route {
40
15
  zone: { refreshModel: true },
41
16
  };
42
17
 
18
+ @action willTransition(transition) {
19
+ if (isNestedRouteTransition(transition)) {
20
+ set(this.queryParams, 'page.refreshModel', false);
21
+ set(this.queryParams, 'sort.refreshModel', false);
22
+ }
23
+ }
24
+
43
25
  model(params) {
44
26
  return this.store.query('service-rate', {
45
27
  ...params,
@@ -1,10 +1,3 @@
1
1
  import Route from '@ember/routing/route';
2
- import { inject as service } from '@ember/service';
3
2
 
4
- export default class OperationsServiceRatesRoute extends Route {
5
- @service store;
6
-
7
- model() {
8
- return this.store.findAll('service-rate');
9
- }
10
- }
3
+ export default class OperationsServiceRatesRoute extends Route {}
@@ -1,18 +1,19 @@
1
1
  .scheduler-left-sidebar {
2
- border-right: 1px rgba(229, 231, 235, 1) solid;
2
+ border-right: 1px rgb(229 231 235 / 100%) solid;
3
3
  height: 100vh;
4
4
  overflow-y: scroll;
5
5
  }
6
6
 
7
- body[data-theme="dark"] .scheduler-left-sidebar {
8
- border-right: 1px rgba(55, 65, 81, 1) solid;
7
+ body[data-theme='dark'] .scheduler-left-sidebar {
8
+ border-right: 1px rgb(55 65 81 / 100%) solid;
9
9
  }
10
10
 
11
- .scheduler-left-sidebar > .next-content-panel-wrapper > .next-content-panel-container > .next-content-panel > .next-content-panel-header.next-content-panel-is-closed {
11
+ .scheduler-left-sidebar > .next-content-panel-wrapper > .next-content-panel-container > .next-content-panel > .next-content-panel-header.next-content-panel-is-closed {
12
12
  border-bottom-left-radius: 0;
13
13
  border-bottom-right-radius: 0;
14
14
  }
15
- .scheduler-left-sidebar > .next-content-panel-wrapper > .next-content-panel-container > .next-content-panel > .next-content-panel-header {
15
+
16
+ .scheduler-left-sidebar > .next-content-panel-wrapper > .next-content-panel-container > .next-content-panel > .next-content-panel-header {
16
17
  border-top-left-radius: 0;
17
18
  border-top-right-radius: 0;
18
19
  border-top: 0;
@@ -20,9 +21,15 @@ body[data-theme="dark"] .scheduler-left-sidebar {
20
21
  border-right: 0;
21
22
  }
22
23
 
23
- .scheduler-left-sidebar > .next-content-panel-wrapper > .next-content-panel-container > .next-content-panel > .next-content-panel-body {
24
+ .scheduler-left-sidebar > .next-content-panel-wrapper > .next-content-panel-container > .next-content-panel > .next-content-panel-body {
24
25
  border-left: 0;
25
26
  border-right: 0;
26
27
  border-bottom-left-radius: 0;
27
28
  border-bottom-right-radius: 0;
28
- }
29
+ }
30
+
31
+ .fleetbase-console.console-fleet-ops-operations-orders-index-new,
32
+ .fleetbase-console.console-fleet-ops-operations-orders-index-view,
33
+ .fleetbase-console .dragSortList {
34
+ overflow: visible !important;
35
+ }
@@ -1,7 +1,7 @@
1
- <Overlay @position="right" @noBackdrop={{true}} @isResizable={{true}} @isMaximizable={{true}} @isMinimizable={{true}} @width="700px" @fullHeight={{true}} @onLoad={{this.setupInterface}} as |overlay|>
1
+ <Overlay @position="right" @noBackdrop={{true}} @isResizable={{true}} @width="570px" @fullHeight={{true}} @onLoad={{this.setupInterface}} as |overlay|>
2
2
  <Overlay::Header @overlay={{overlay}} @title="New Order" @onPressCancel={{this.transitionBack}}>
3
3
  <DropdownButton @icon="ellipsis-h" @size="sm" @iconPrefix="fas" @triggerClass="mr-2 hidden md:flex" as |dd|>
4
- <div class="next-dd-menu mt-1 mx-0" aria-orientation="vertical" aria-labelledby="user-menu">
4
+ <div class="next-dd-menu mt-1 mx-0" aria-labelledby="user-menu">
5
5
  <div class="p-1">
6
6
  <a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.newCustomer)}}>
7
7
  <div class="w-6">
@@ -15,7 +15,7 @@
15
15
  </div>
16
16
  <span>Create new facilitator</span>
17
17
  </a>
18
- <a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.newPlace)}}>
18
+ <a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.createPlace)}}>
19
19
  <div class="w-6">
20
20
  <FaIcon @icon="map-pin" />
21
21
  </div>
@@ -162,7 +162,7 @@
162
162
  {{#each group.items as |metaField|}}
163
163
  <div class="input-group {{if (eq metaField.type "boolean") "col-span-2 items-center" ""}}">
164
164
  <div class="flex items-center justify-between">
165
- {{#if (not (eq metaField.type "boolean"))}}
165
+ {{#if (not-eq metaField.type "boolean")}}
166
166
  <InputLabel @labelText={{metaField.label}} @required={{metaField.required}} />
167
167
  {{/if}}
168
168
 
@@ -223,8 +223,8 @@
223
223
  </label>
224
224
  </div>
225
225
 
226
- <div class="flex-1 px-4">
227
- <ModelSelect @modelName="place" @selectedModel={{waypoint.place}} @placeholder={{concat "Select Waypoint " (add index 1)}} @triggerClass="form-select form-input truncate" @wrapperClass="w-96" @infiniteScroll={{false}} @customSearchEndpoint="places/search" @query={{hash geo=true latitude=this.userLatitude longitude=this.userLongitude}} @renderInPlace={{true}} @onChange={{fn this.setWaypointPlace index}} as |model|>
226
+ <div class="flex-1 px-3">
227
+ <ModelSelect @modelName="place" @selectedModel={{waypoint.place}} @placeholder={{concat "Select Waypoint " (add index 1)}} @triggerClass="form-select form-input truncate max-w-300px" @infiniteScroll={{false}} @customSearchEndpoint="places/search" @query={{hash geo=true latitude=this.userLatitude longitude=this.userLongitude}} @renderInPlace={{true}} @onChange={{fn this.setWaypointPlace index}} as |model|>
228
228
  {{model.address}}
229
229
  </ModelSelect>
230
230
 
@@ -241,7 +241,7 @@
241
241
 
242
242
  <div class="flex items-center">
243
243
  {{#if waypoint.place}}
244
- <Button class="mr-2" @icon="edit" @size="sm" @onClick={{fn this.placesController.editPlace waypoint.place}} />
244
+ <Button class="mr-2" @icon="edit" @size="sm" @onClick={{fn this.editPlace waypoint.place}} />
245
245
  {{/if}}
246
246
  <Button @type="danger" @icon="trash" @size="sm" @onClick={{fn this.removeWaypoint waypoint}} />
247
247
  </div>