@fleetbase/fleetops-engine 0.3.0 → 0.3.2

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 (235) hide show
  1. package/addon/components/contact-form-panel.hbs +82 -0
  2. package/addon/components/contact-form-panel.js +195 -0
  3. package/addon/components/contact-panel/details.hbs +36 -0
  4. package/addon/components/contact-panel/details.js +3 -0
  5. package/addon/components/contact-panel.hbs +52 -0
  6. package/addon/components/contact-panel.js +161 -0
  7. package/addon/components/driver-form-panel.hbs +39 -55
  8. package/addon/components/driver-form-panel.js +41 -0
  9. package/addon/components/driver-panel/details.hbs +2 -2
  10. package/addon/components/driver-panel.hbs +12 -10
  11. package/addon/components/driver-panel.js +13 -0
  12. package/addon/components/fleet-form-panel.hbs +28 -28
  13. package/addon/components/fleet-form-panel.js +150 -1
  14. package/addon/components/fleet-listing-panel.hbs +8 -0
  15. package/addon/components/fleet-listing-panel.js +34 -0
  16. package/addon/components/fleet-panel/details.hbs +30 -0
  17. package/addon/components/fleet-panel/driver-listing.hbs +72 -0
  18. package/addon/components/fleet-panel/driver-listing.js +149 -0
  19. package/addon/components/fleet-panel/vehicle-listing.hbs +72 -0
  20. package/addon/components/fleet-panel/vehicle-listing.js +149 -0
  21. package/addon/components/fleet-panel.hbs +12 -58
  22. package/addon/components/fleet-panel.js +148 -26
  23. package/addon/components/fleet-vehicle-listing.hbs +0 -1
  24. package/addon/components/fuel-report-form-panel.hbs +41 -0
  25. package/addon/components/fuel-report-form-panel.js +122 -0
  26. package/addon/components/fuel-report-panel/details.hbs +38 -0
  27. package/addon/components/fuel-report-panel.hbs +30 -0
  28. package/addon/components/fuel-report-panel.js +161 -0
  29. package/addon/components/issue-form-panel.hbs +85 -0
  30. package/addon/components/issue-form-panel.js +211 -0
  31. package/addon/components/issue-panel/details.hbs +48 -0
  32. package/addon/components/issue-panel.hbs +30 -0
  33. package/addon/components/issue-panel.js +160 -0
  34. package/addon/components/layout/fleet-ops-sidebar.hbs +2 -2
  35. package/addon/components/live-map.js +2 -0
  36. package/addon/components/map-container/toolbar.hbs +9 -9
  37. package/addon/components/map-container/topbar.hbs +1 -1
  38. package/addon/components/modals/issue-details.hbs +38 -0
  39. package/addon/components/modals/issue-from.hbs +138 -0
  40. package/addon/components/place-form-panel.hbs +50 -0
  41. package/addon/components/place-form-panel.js +134 -0
  42. package/addon/components/place-panel/details.hbs +95 -0
  43. package/addon/components/place-panel.hbs +30 -0
  44. package/addon/components/place-panel.js +161 -0
  45. package/addon/components/vehicle-form-panel.hbs +35 -44
  46. package/addon/components/vehicle-form-panel.js +41 -0
  47. package/addon/components/vehicle-panel/details.hbs +8 -2
  48. package/addon/components/vehicle-panel.hbs +8 -6
  49. package/addon/components/vendor-form-panel/create-form.hbs +114 -0
  50. package/addon/components/vendor-form-panel/create-form.js +158 -0
  51. package/addon/components/vendor-form-panel/edit-form.hbs +98 -0
  52. package/addon/components/vendor-form-panel/edit-form.js +51 -0
  53. package/addon/components/vendor-form-panel.hbs +48 -0
  54. package/addon/components/vendor-form-panel.js +226 -0
  55. package/addon/components/vendor-panel/details.hbs +77 -0
  56. package/addon/components/vendor-panel/details.js +12 -0
  57. package/addon/components/vendor-panel.hbs +58 -0
  58. package/addon/components/vendor-panel.js +161 -0
  59. package/addon/controllers/management/contacts/index/details.js +55 -0
  60. package/addon/controllers/management/contacts/index/edit.js +111 -0
  61. package/addon/controllers/management/contacts/index/new.js +88 -0
  62. package/addon/controllers/management/contacts/index.js +23 -128
  63. package/addon/controllers/management/drivers/index/new.js +2 -2
  64. package/addon/controllers/management/drivers/index.js +18 -32
  65. package/addon/controllers/management/fleets/index/details.js +53 -0
  66. package/addon/controllers/management/fleets/index/edit.js +75 -41
  67. package/addon/controllers/management/fleets/index/new.js +42 -57
  68. package/addon/controllers/management/fleets/index.js +0 -1
  69. package/addon/controllers/management/fuel-reports/index/details.js +63 -0
  70. package/addon/controllers/management/fuel-reports/index/edit.js +111 -0
  71. package/addon/controllers/management/fuel-reports/index/new.js +95 -0
  72. package/addon/controllers/management/fuel-reports/index.js +57 -127
  73. package/addon/controllers/management/issues/index/details.js +54 -0
  74. package/addon/controllers/management/issues/index/edit.js +111 -0
  75. package/addon/controllers/management/issues/index/new.js +94 -0
  76. package/addon/controllers/management/issues/index.js +131 -26
  77. package/addon/controllers/management/places/index/details.js +55 -0
  78. package/addon/controllers/management/places/index/edit.js +111 -0
  79. package/addon/controllers/management/places/index/new.js +88 -0
  80. package/addon/controllers/management/places/index.js +21 -182
  81. package/addon/controllers/management/vehicles/index/new.js +2 -6
  82. package/addon/controllers/management/vendors/index/details.js +55 -0
  83. package/addon/controllers/management/vendors/index/edit.js +111 -0
  84. package/addon/controllers/management/vendors/index/new.js +88 -0
  85. package/addon/controllers/management/vendors/index.js +43 -247
  86. package/addon/routes/management/contacts/index/details.js +14 -0
  87. package/addon/routes/management/contacts/index/edit.js +10 -0
  88. package/addon/routes/management/contacts/index/new.js +3 -0
  89. package/addon/routes/management/contacts/index.js +1 -1
  90. package/addon/routes/management/fleets/index/details.js +1 -1
  91. package/addon/routes/management/fleets/index/edit.js +1 -1
  92. package/addon/routes/management/fleets/index.js +1 -1
  93. package/addon/routes/management/fuel-reports/index/details.js +14 -0
  94. package/addon/routes/management/fuel-reports/index/edit.js +10 -0
  95. package/addon/routes/management/fuel-reports/index/new.js +3 -0
  96. package/addon/routes/management/fuel-reports/index.js +3 -1
  97. package/addon/routes/management/issues/index/details.js +14 -0
  98. package/addon/routes/management/issues/index/edit.js +10 -0
  99. package/addon/routes/management/issues/index/new.js +3 -0
  100. package/addon/routes/management/issues/index.js +1 -1
  101. package/addon/routes/management/places/index/details.js +14 -0
  102. package/addon/routes/management/places/index/edit.js +10 -0
  103. package/addon/routes/management/places/index/new.js +3 -0
  104. package/addon/routes/management/places/index.js +6 -1
  105. package/addon/routes/management/vendors/index/details.js +15 -0
  106. package/addon/routes/management/vendors/index/edit.js +11 -0
  107. package/addon/routes/management/vendors/index/new.js +3 -0
  108. package/addon/routes/management/vendors/index.js +1 -0
  109. package/addon/routes.js +27 -7
  110. package/addon/services/context-panel.js +60 -0
  111. package/addon/templates/management/contacts/index/details.hbs +1 -0
  112. package/addon/templates/management/contacts/index/edit.hbs +1 -0
  113. package/addon/templates/management/contacts/index/new.hbs +1 -0
  114. package/addon/templates/management/contacts/index.hbs +22 -3
  115. package/addon/templates/management/drivers/index.hbs +29 -5
  116. package/addon/templates/management/fleets/index/details.hbs +1 -1
  117. package/addon/templates/management/fleets/index/edit.hbs +1 -1
  118. package/addon/templates/management/fleets/index/new.hbs +1 -1
  119. package/addon/templates/management/fuel-reports/index/details.hbs +1 -0
  120. package/addon/templates/management/fuel-reports/index/edit.hbs +1 -0
  121. package/addon/templates/management/fuel-reports/index/new.hbs +1 -0
  122. package/addon/templates/management/fuel-reports/index.hbs +25 -4
  123. package/addon/templates/management/issues/index/details.hbs +1 -0
  124. package/addon/templates/management/issues/index/edit.hbs +1 -0
  125. package/addon/templates/management/issues/index/new.hbs +1 -0
  126. package/addon/templates/management/issues/index.hbs +5 -3
  127. package/addon/templates/management/places/index/details.hbs +1 -0
  128. package/addon/templates/management/places/index/edit.hbs +1 -0
  129. package/addon/templates/management/places/index/new.hbs +1 -0
  130. package/addon/templates/management/vendors/index/details.hbs +1 -0
  131. package/addon/templates/management/vendors/index/edit.hbs +1 -0
  132. package/addon/templates/management/vendors/index/new.hbs +1 -0
  133. package/addon/templates/operations/orders/index.hbs +3 -3
  134. package/app/components/contact-form-panel.js +1 -0
  135. package/app/components/contact-panel/details.js +1 -0
  136. package/app/components/contact-panel.js +1 -0
  137. package/app/components/fleet-listing-panel.js +1 -0
  138. package/app/components/fleet-panel/details.js +1 -0
  139. package/app/components/fleet-panel/driver-listing.js +1 -0
  140. package/app/components/fleet-panel/vehicle-listing.js +1 -0
  141. package/app/components/fuel-report-form-panel.js +1 -0
  142. package/app/components/fuel-report-panel.js +1 -0
  143. package/app/components/issue-form-panel.js +1 -0
  144. package/app/components/issue-panel.js +1 -0
  145. package/app/components/place-form-panel.js +1 -0
  146. package/app/components/place-panel.js +1 -0
  147. package/app/components/vendor-form-panel/create-form.js +1 -0
  148. package/app/components/vendor-form-panel/edit-form.js +1 -0
  149. package/app/components/vendor-form-panel.js +1 -0
  150. package/app/components/vendor-panel/details.js +1 -0
  151. package/app/components/vendor-panel.js +1 -0
  152. package/app/controllers/management/contacts/index/details.js +1 -0
  153. package/app/controllers/management/contacts/index/edit.js +1 -0
  154. package/app/controllers/management/contacts/index/new.js +1 -0
  155. package/app/controllers/management/fuel-reports/index/details.js +1 -0
  156. package/app/controllers/management/fuel-reports/index/edit.js +1 -0
  157. package/app/controllers/management/fuel-reports/index/new.js +1 -0
  158. package/app/controllers/management/issues/index/details.js +1 -0
  159. package/app/controllers/management/issues/index/edit.js +1 -0
  160. package/app/controllers/management/issues/index/new.js +1 -0
  161. package/app/controllers/management/places/index/details.js +1 -0
  162. package/app/controllers/management/places/index/edit.js +1 -0
  163. package/app/controllers/management/places/index/new.js +1 -0
  164. package/app/controllers/management/vendors/index/edit.js +1 -0
  165. package/app/controllers/management/vendors/index/new.js +1 -0
  166. package/app/routes/addon/routes/management/places/index/new.js +1 -0
  167. package/app/routes/management/contacts/index/details.js +1 -0
  168. package/app/routes/management/contacts/index/edit.js +1 -0
  169. package/app/routes/management/contacts/index/new.js +1 -0
  170. package/app/routes/management/fuel-reports/index/details.js +1 -0
  171. package/app/routes/management/fuel-reports/index/edit.js +1 -0
  172. package/app/routes/management/fuel-reports/index/new.js +1 -0
  173. package/app/routes/management/issues/index/details.js +1 -0
  174. package/app/routes/management/issues/index/edit.js +1 -0
  175. package/app/routes/management/issues/index/new.js +1 -0
  176. package/app/routes/management/places/index/details.js +1 -0
  177. package/app/routes/management/places/index/edit.js +1 -0
  178. package/app/routes/management/places/index/new.js +1 -0
  179. package/app/routes/management/vendors/index/details.js +1 -0
  180. package/app/routes/management/vendors/index/edit.js +1 -0
  181. package/app/routes/management/vendors/index/new.js +1 -0
  182. package/app/templates/addon/routes/management/places/index/new.js +1 -0
  183. package/app/templates/management/contacts/index/details.js +1 -0
  184. package/app/templates/management/contacts/index/edit.js +1 -0
  185. package/app/templates/management/contacts/index/new.js +1 -0
  186. package/app/templates/management/fuel-reports/index/details.js +1 -0
  187. package/app/templates/management/fuel-reports/index/edit.js +1 -0
  188. package/app/templates/management/fuel-reports/index/new.js +1 -0
  189. package/app/templates/management/issues/index/details.js +1 -0
  190. package/app/templates/management/issues/index/edit.js +1 -0
  191. package/app/templates/management/issues/index/new.js +1 -0
  192. package/app/templates/management/places/index/details.js +1 -0
  193. package/app/templates/management/places/index/edit.js +1 -0
  194. package/app/templates/management/places/index/new.js +1 -0
  195. package/app/templates/management/vendors/index/details.js +1 -0
  196. package/app/templates/management/vendors/index/edit.js +1 -0
  197. package/app/templates/management/vendors/index/new.js +1 -0
  198. package/composer.json +2 -2
  199. package/config/environment.js +2 -1
  200. package/extension.json +1 -1
  201. package/package.json +4 -3
  202. package/server/migrations/2023_11_03_072503_refactor_issues_table_columns.php +42 -0
  203. package/server/migrations/2023_11_06_040645_refactor_fuel_reports_table.php +38 -0
  204. package/server/src/Casts/Point.php +15 -1
  205. package/server/src/Http/Controllers/Internal/v1/DriverController.php +33 -15
  206. package/server/src/Http/Filter/FleetFilter.php +7 -0
  207. package/server/src/Http/Filter/FuelReportFilter.php +58 -0
  208. package/server/src/Http/Filter/IssueFilter.php +69 -0
  209. package/server/src/Http/Filter/VehicleFilter.php +10 -0
  210. package/server/src/Http/Middleware/TransformLocationMiddleware.php +48 -0
  211. package/server/src/Http/Resources/v1/Driver.php +1 -0
  212. package/server/src/Http/Resources/v1/Fleet.php +20 -21
  213. package/server/src/Http/Resources/v1/FuelReport.php +37 -35
  214. package/server/src/Http/Resources/v1/Issue.php +77 -0
  215. package/server/src/Http/Resources/v1/ParentFleet.php +60 -0
  216. package/server/src/Http/Resources/v1/SubFleet.php +60 -0
  217. package/server/src/Http/Resources/v1/Vehicle.php +4 -2
  218. package/server/src/Integrations/Lalamove/Lalamove.php +6 -6
  219. package/server/src/Models/Contact.php +7 -0
  220. package/server/src/Models/Driver.php +1 -1
  221. package/server/src/Models/Fleet.php +37 -4
  222. package/server/src/Models/FuelReport.php +53 -3
  223. package/server/src/Models/Issue.php +106 -7
  224. package/server/src/Models/Vehicle.php +1 -1
  225. package/server/src/Models/VehicleDevice.php +3 -1
  226. package/server/src/Models/VehicleDeviceEvent.php +7 -3
  227. package/server/src/Notifications/OrderAssigned.php +15 -0
  228. package/server/src/Notifications/OrderCanceled.php +15 -0
  229. package/server/src/Notifications/OrderDispatchFailed.php +15 -0
  230. package/server/src/Notifications/OrderDispatched.php +15 -0
  231. package/server/src/Notifications/OrderPing.php +15 -0
  232. package/server/src/Notifications/OrderSplit.php +26 -5
  233. package/server/src/Providers/FleetOpsServiceProvider.php +22 -0
  234. package/server/src/Providers/NotificationServiceProvider.php +43 -0
  235. package/server/src/routes.php +2 -2
@@ -5,73 +5,107 @@ import { action } from '@ember/object';
5
5
 
6
6
  export default class ManagementFleetsIndexEditController extends Controller {
7
7
  /**
8
- * True if updating service rate.
8
+ * Inject the `hostRouter` service
9
9
  *
10
- * @var {Boolean}
10
+ * @memberof ManagementFleetsIndexEditController
11
11
  */
12
- @tracked isUpdatingFleet = false;
12
+ @service hostRouter;
13
13
 
14
14
  /**
15
- * Inject the `loader` service
15
+ * Inject the `hostRouter` service
16
16
  *
17
- * @var {Service}
17
+ * @memberof ManagementFleetsIndexEditController
18
18
  */
19
- @service loader;
19
+ @service modalsManager;
20
20
 
21
21
  /**
22
- * Inject the `notifications` service
22
+ * The overlay component context.
23
23
  *
24
- * @var {Service}
24
+ * @memberof ManagementFleetsIndexEditController
25
25
  */
26
- @service notifications;
26
+ @tracked overlay;
27
27
 
28
28
  /**
29
- * Inject the `hostRouter` service
29
+ * When exiting the overlay.
30
30
  *
31
- * @var {Service}
31
+ * @return {Transition}
32
+ * @memberof ManagementFleetsIndexEditController
32
33
  */
33
- @service hostRouter;
34
+ @action transitionBack(fleet) {
35
+ // check if fleet record has been edited and prompt for confirmation
36
+ if (fleet.hasDirtyAttributes) {
37
+ return this.confirmContinueWithUnsavedChanges(fleet, {
38
+ confirm: () => {
39
+ fleet.rollbackAttributes();
40
+ return this.transitionToRoute('management.fleets.index');
41
+ },
42
+ });
43
+ }
44
+
45
+ return this.transitionToRoute('management.fleets.index');
46
+ }
34
47
 
35
48
  /**
36
- * Inject the `currentUser` service
49
+ * Set the overlay component context object.
37
50
  *
38
- * @var {Service}
51
+ * @param {OverlayContext} overlay
52
+ * @memberof ManagementFleetsIndexEditController
39
53
  */
40
- @service store;
54
+ @action setOverlayContext(overlay) {
55
+ this.overlay = overlay;
56
+ }
41
57
 
42
58
  /**
43
- * Updates the fleets to server
59
+ * When fleet details button is clicked in overlay.
44
60
  *
45
- * @void
61
+ * @param {VehicleModel} fleet
62
+ * @return {Promise}
63
+ * @memberof ManagementFleetsIndexEditController
46
64
  */
47
- @action updateFleet() {
48
- const { model } = this;
65
+ @action onViewDetails(fleet) {
66
+ // check if fleet record has been edited and prompt for confirmation
67
+ if (fleet.hasDirtyAttributes) {
68
+ return this.confirmContinueWithUnsavedChanges(fleet);
69
+ }
49
70
 
50
- console.log(model, model);
51
- this.isUpdatingFleet = true;
52
- this.loader.showLoader('.overlay-inner-content', { loadingMessage: 'Updating fleet...' });
71
+ return this.transitionToRoute('management.fleets.index.details', fleet);
72
+ }
53
73
 
54
- try {
55
- return model
56
- .save()
57
- .then((model) => {
58
- return this.transitionToRoute('management.fleets.index').then(() => {
59
- this.notifications.success(`Fleet '${model.name}' updated`);
60
- this.hostRouter.refresh();
61
- });
62
- })
63
- .catch(this.notifications.serverError)
64
- .finally(() => {
65
- this.isUpdatingFleet = false;
66
- this.loader.removeLoader();
67
- });
68
- } catch (error) {
69
- this.isUpdatingFleet = false;
70
- this.loader.removeLoader();
74
+ /**
75
+ * Trigger a route refresh and focus the new fleet created.
76
+ *
77
+ * @param {VehicleModel} fleet
78
+ * @return {Promise}
79
+ * @memberof ManagementFleetsIndexEditController
80
+ */
81
+ @action onAfterSave(fleet) {
82
+ if (this.overlay) {
83
+ this.overlay.close();
71
84
  }
85
+
86
+ this.hostRouter.refresh();
87
+ return this.transitionToRoute('management.fleets.index.details', fleet);
72
88
  }
73
89
 
74
- @action transitionBack() {
75
- return this.transitionToRoute('management.fleets.index');
90
+ /**
91
+ * Prompts the user to confirm if they wish to continue with unsaved changes.
92
+ *
93
+ * @method
94
+ * @param {VehicleModel} fleet - The fleet object with unsaved changes.
95
+ * @param {Object} [options={}] - Additional options for configuring the modal.
96
+ * @returns {Promise} A promise that resolves when the user confirms, and transitions to a new route.
97
+ * @memberof ManagementFleetsIndexEditController
98
+ */
99
+ confirmContinueWithUnsavedChanges(fleet, options = {}) {
100
+ return this.modalsManager.confirm({
101
+ title: 'Continue Without Saving?',
102
+ body: 'Unsaved changes to this fleet will be lost. Click continue to proceed.',
103
+ acceptButtonText: 'Continue without saving',
104
+ confirm: () => {
105
+ fleet.rollbackAttributes();
106
+ return this.transitionToRoute('management.fleets.index.details', fleet);
107
+ },
108
+ ...options,
109
+ });
76
110
  }
77
111
  }
@@ -1,43 +1,36 @@
1
- import Controller, { inject as controller } from '@ember/controller';
2
- import { inject as service } from '@ember/service';
1
+ import Controller from '@ember/controller';
3
2
  import { tracked } from '@glimmer/tracking';
3
+ import { inject as service } from '@ember/service';
4
4
  import { action } from '@ember/object';
5
5
 
6
6
  export default class ManagementFleetsIndexNewController extends Controller {
7
7
  /**
8
- * Inject the `management.fleets.index` controller
9
- *
10
- * @var {Controller}
11
- */
12
- @controller('management.fleets.index') index;
13
-
14
- /**
15
- * Inject the `currentUser` service
8
+ * Inject the `store` service
16
9
  *
17
- * @var {Service}
10
+ * @memberof ManagementFleetsIndexNewController
18
11
  */
19
12
  @service store;
20
13
 
21
14
  /**
22
15
  * Inject the `hostRouter` service
23
16
  *
24
- * @var {Service}
17
+ * @memberof ManagementFleetsIndexNewController
25
18
  */
26
19
  @service hostRouter;
27
20
 
28
21
  /**
29
- * Inject the `notifications` service
22
+ * Inject the `hostRouter` service
30
23
  *
31
- * @var {Service}
24
+ * @memberof ManagementFleetsIndexNewController
32
25
  */
33
- @service notifications;
26
+ @service modalsManager;
34
27
 
35
28
  /**
36
- * Inject the `loader` service
29
+ * The overlay component context.
37
30
  *
38
- * @var {Service}
31
+ * @memberof ManagementFleetsIndexNewController
39
32
  */
40
- @service loader;
33
+ @tracked overlay;
41
34
 
42
35
  /**
43
36
  * The fleet being created.
@@ -47,57 +40,49 @@ export default class ManagementFleetsIndexNewController extends Controller {
47
40
  @tracked fleet = this.store.createRecord('fleet', { status: 'active' });
48
41
 
49
42
  /**
50
- * True if creating fleet.
43
+ * Set the overlay component context object.
51
44
  *
52
- * @var {Boolean}
45
+ * @param {OverlayContext} overlay
46
+ * @memberof ManagementFleetsIndexNewController
53
47
  */
54
- @tracked isCreatingFleet = false;
48
+ @action setOverlayContext(overlay) {
49
+ this.overlay = overlay;
50
+ }
55
51
 
56
52
  /**
57
- * Saves the fleet to server
53
+ * When exiting the overlay.
58
54
  *
59
- * @void
55
+ * @return {Transition}
56
+ * @memberof ManagementFleetsIndexNewController
60
57
  */
61
- @action createFleet() {
62
- const { fleet } = this;
63
-
64
- this.isCreatingFleet = true;
65
- this.loader.showLoader('.overlay-inner-content', { loadingMessage: 'Creating fleet...' });
66
-
67
- try {
68
- return fleet
69
- .save()
70
- .then((fleet) => {
71
- return this.transitionToRoute('management.fleets.index').then(() => {
72
- this.notifications.success(`New fleet (${fleet.name}) created.`);
73
- this.resetForm();
74
- this.hostRouter.refresh();
75
- });
76
- })
77
- .catch((error) => {
78
- console.log(error);
79
- this.notifications.serverError(error);
80
- })
81
- .finally(() => {
82
- this.isCreatingFleet = false;
83
- this.loader.removeLoader();
84
- });
85
- } catch (error) {
86
- this.isCreatingFleet = false;
87
- this.loader.removeLoader();
88
- }
58
+ @action transitionBack() {
59
+ return this.transitionToRoute('management.fleets.index');
89
60
  }
90
61
 
91
62
  /**
92
- * Resets the driver form
63
+ * Trigger a route refresh and focus the new fleet created.
93
64
  *
94
- * @void
65
+ * @param {FleetModel} fleet
66
+ * @return {Promise}
67
+ * @memberof ManagementFleetsIndexNewController
95
68
  */
96
- @action resetForm() {
97
- this.fleet = this.store.createRecord('fleet');
69
+ @action onAfterSave(fleet) {
70
+ if (this.overlay) {
71
+ this.overlay.close();
72
+ }
73
+
74
+ this.hostRouter.refresh();
75
+ return this.transitionToRoute('management.fleets.index.details', fleet).then(() => {
76
+ this.resetForm();
77
+ });
98
78
  }
99
79
 
100
- @action transitionBack() {
101
- return this.transitionToRoute('management.fleets.index');
80
+ /**
81
+ * Resets the form with a new fleet record
82
+ *
83
+ * @memberof ManagementFleetsIndexNewController
84
+ */
85
+ resetForm() {
86
+ this.fleet = this.store.createRecord('fleet', { status: 'active' });
102
87
  }
103
88
  }
@@ -434,7 +434,6 @@ export default class ManagementFleetsIndexController extends Controller {
434
434
  * @void
435
435
  */
436
436
  @action editFleet(fleet) {
437
- console.log('xxx', fleet);
438
437
  return this.transitionToRoute('management.fleets.index.edit', fleet);
439
438
  }
440
439
 
@@ -0,0 +1,63 @@
1
+ import Controller from '@ember/controller';
2
+ import { tracked } from '@glimmer/tracking';
3
+ import { action } from '@ember/object';
4
+ import { inject as service } from '@ember/service';
5
+ /**
6
+ * Controller for managing the details view within the "Management -> Fuel-Report -> Index" route.
7
+ *
8
+ * @class ManagementFuelReportsIndexDetailsController
9
+ * @extends Controller
10
+ */
11
+ export default class ManagementFuelReportsIndexDetailsController extends Controller {
12
+ @service hostRouter;
13
+
14
+ /**
15
+ * The currently active view tab ('details' by default).
16
+ *
17
+ * @type {String}
18
+ * @tracked
19
+ */
20
+ @tracked view = 'details';
21
+
22
+ /**
23
+ * An array of query parameters to be serialized in the URL.
24
+ *
25
+ * @type {String[]}
26
+ * @tracked
27
+ */
28
+ @tracked queryParams = ['view'];
29
+
30
+ /**
31
+ * Transitions back to the "management.fuelReport.index" route.
32
+ *
33
+ * @method
34
+ * @action
35
+ * @returns {Transition} The transition object representing the route change.
36
+ */
37
+ @action transitionBack() {
38
+ return this.transitionToRoute('management.fuel-reports.index');
39
+ }
40
+
41
+ /**
42
+ * Transitions to the edit view for a specific vehicle.
43
+ *
44
+ * @param {FuelReportModel} fuelReport
45
+ * @method
46
+ * @action
47
+ * @returns {Transition} The transition object representing the route change.
48
+ */
49
+ @action onEdit(fuelReport) {
50
+ return this.transitionToRoute('management.fuel-reports.index.edit', fuelReport);
51
+ }
52
+
53
+ /**
54
+ * Updates the active view tab.
55
+ *
56
+ * @method
57
+ * @param {String} tab - The name of the tab to activate.
58
+ * @action
59
+ */
60
+ @action onTabChanged(tab) {
61
+ this.view = tab;
62
+ }
63
+ }
@@ -0,0 +1,111 @@
1
+ import Controller from '@ember/controller';
2
+ import { inject as service } from '@ember/service';
3
+ import { tracked } from '@glimmer/tracking';
4
+ import { action } from '@ember/object';
5
+
6
+ export default class ManagementFuelReportsIndexEditController extends Controller {
7
+ /**
8
+ * Inject the `hostRouter` service
9
+ *
10
+ * @memberof ManagementFuelReportsIndexEditController
11
+ */
12
+ @service hostRouter;
13
+
14
+ /**
15
+ * Inject the `hostRouter` service
16
+ *
17
+ * @memberof ManagementFuelReportsIndexEditController
18
+ */
19
+ @service modalsManager;
20
+
21
+ /**
22
+ * The overlay component context.
23
+ *
24
+ * @memberof ManagementFuelReportsIndexEditController
25
+ */
26
+ @tracked overlay;
27
+
28
+ /**
29
+ * When exiting the overlay.
30
+ *
31
+ * @return {Transition}
32
+ * @memberof ManagementFuelReportsIndexEditController
33
+ */
34
+ @action transitionBack(fuelReport) {
35
+ // check if fuel-report record has been edited and prompt for confirmation
36
+ if (fuelReport.hasDirtyAttributes) {
37
+ return this.confirmContinueWithUnsavedChanges(fuelReport, {
38
+ confirm: () => {
39
+ fuelReport.rollbackAttributes();
40
+ return this.transitionToRoute('management.fuel-reports.index');
41
+ },
42
+ });
43
+ }
44
+
45
+ return this.transitionToRoute('management.fuel-reports.index');
46
+ }
47
+
48
+ /**
49
+ * Set the overlay component context object.
50
+ *
51
+ * @param {OverlayContext} overlay
52
+ * @memberof ManagementFuelReportsIndexEditController
53
+ */
54
+ @action setOverlayContext(overlay) {
55
+ this.overlay = overlay;
56
+ }
57
+
58
+ /**
59
+ * When fuel-report details button is clicked in overlay.
60
+ *
61
+ * @param {FuelReportModel} fuelReport
62
+ * @return {Promise}
63
+ * @memberof ManagementFuelReportsIndexEditController
64
+ */
65
+ @action onViewDetails(fuelReport) {
66
+ // check if fuel-report record has been edited and prompt for confirmation
67
+ if (fuelReport.hasDirtyAttributes) {
68
+ return this.confirmContinueWithUnsavedChanges(fuelReport);
69
+ }
70
+
71
+ return this.transitionToRoute('management.fuel-reports.index.details', fuelReport);
72
+ }
73
+
74
+ /**
75
+ * Trigger a route refresh and focus the new fuel-report created.
76
+ *
77
+ * @param {FuelReportModel} fuel-report
78
+ * @return {Promise}
79
+ * @memberof ManagementFuelReportsIndexEditController
80
+ */
81
+ @action onAfterSave(fuelReport) {
82
+ if (this.overlay) {
83
+ this.overlay.close();
84
+ }
85
+
86
+ this.hostRouter.refresh();
87
+ return this.transitionToRoute('management.fuel-reports.index.details', fuelReport);
88
+ }
89
+
90
+ /**
91
+ * Prompts the user to confirm if they wish to continue with unsaved changes.
92
+ *
93
+ * @method
94
+ * @param {FuelReportModel} fuel-report - The fuel-report object with unsaved changes.
95
+ * @param {Object} [options={}] - Additional options for configuring the modal.
96
+ * @returns {Promise} A promise that resolves when the user confirms, and transitions to a new route.
97
+ * @memberof ManagementFuelReportsIndexEditController
98
+ */
99
+ confirmContinueWithUnsavedChanges(fuelReport, options = {}) {
100
+ return this.modalsManager.confirm({
101
+ title: 'Continue Without Saving?',
102
+ body: 'Unsaved changes to this fuel-report will be lost. Click continue to proceed.',
103
+ acceptButtonText: 'Continue without saving',
104
+ confirm: () => {
105
+ fuelReport.rollbackAttributes();
106
+ return this.transitionToRoute('management.fuel-reports.index.details', fuelReport);
107
+ },
108
+ ...options,
109
+ });
110
+ }
111
+ }
@@ -0,0 +1,95 @@
1
+ import Controller from '@ember/controller';
2
+ import { tracked } from '@glimmer/tracking';
3
+ import { inject as service } from '@ember/service';
4
+ import { action } from '@ember/object';
5
+
6
+ export default class ManagementFuelReportsIndexNewController extends Controller {
7
+ /**
8
+ * Inject the `store` service
9
+ *
10
+ * @memberof ManagementFuelReportsIndexNewController
11
+ */
12
+ @service store;
13
+
14
+ /**
15
+ * Inject the `currentUser` service
16
+ *
17
+ * @memberof ManagementFuelReportsIndexNewController
18
+ */
19
+ @service currentUser;
20
+
21
+ /**
22
+ * Inject the `hostRouter` service
23
+ *
24
+ * @memberof ManagementFuelReportsIndexNewController
25
+ */
26
+ @service hostRouter;
27
+
28
+ /**
29
+ * Inject the `hostRouter` service
30
+ *
31
+ * @memberof ManagementFuelReportsIndexNewController
32
+ */
33
+ @service modalsManager;
34
+
35
+ /**
36
+ * The overlay component context.
37
+ *
38
+ * @memberof ManagementFuelReportsIndexNewController
39
+ */
40
+ @tracked overlay;
41
+
42
+ /**
43
+ * The fuel report being created.
44
+ *
45
+ * @var {FuelReportModel}
46
+ */
47
+ @tracked fuelReport = this.store.createRecord('fuelReport', { reporter: this.currentUser.user });
48
+
49
+ /**
50
+ * Set the overlay component context object.
51
+ *
52
+ * @param {OverlayContext} overlay
53
+ * @memberof ManagementFuelReportsIndexNewController
54
+ */
55
+ @action setOverlayContext(overlay) {
56
+ this.overlay = overlay;
57
+ }
58
+
59
+ /**
60
+ * When exiting the overlay.
61
+ *
62
+ * @return {Transition}
63
+ * @memberof ManagementFuelReportsIndexNewController
64
+ */
65
+ @action transitionBack() {
66
+ return this.hostRouter.transitionTo('console.fleet-ops.management.fuel-reports.index');
67
+ }
68
+
69
+ /**
70
+ * Trigger a route refresh and focus the new fuel report created.
71
+ *
72
+ * @param {FuelReportModel} fuelReport
73
+ * @return {Promise}
74
+ * @memberof ManagementFuelReportsIndexNewController
75
+ */
76
+ @action onAfterSave(fuelReport) {
77
+ if (this.overlay) {
78
+ this.overlay.close();
79
+ }
80
+
81
+ this.hostRouter.refresh();
82
+ return this.hostRouter.transitionTo('console.fleet-ops.management.fuel-reports.index.details', fuelReport).then(() => {
83
+ this.resetForm();
84
+ });
85
+ }
86
+
87
+ /**
88
+ * Resets the form with a new fuel report record
89
+ *
90
+ * @memberof ManagementFuelReportsIndexNewController
91
+ */
92
+ resetForm() {
93
+ this.fuelReport = this.store.createRecord('fuelReport', { reporter: this.currentUser.user });
94
+ }
95
+ }