@fleetbase/fleetops-engine 0.3.3 → 0.3.5

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 (154) hide show
  1. package/addon/components/contact-form-panel.hbs +28 -6
  2. package/addon/components/driver-form-panel.hbs +10 -0
  3. package/addon/components/driver-form-panel.js +51 -0
  4. package/addon/components/driver-panel/details.hbs +1 -5
  5. package/addon/components/driver-panel.hbs +21 -3
  6. package/addon/components/fleet-form-panel.hbs +60 -6
  7. package/addon/components/fleet-listing-panel.hbs +2 -2
  8. package/addon/components/fleet-panel/details.hbs +1 -1
  9. package/addon/components/fuel-report-form-panel.hbs +84 -8
  10. package/addon/components/fuel-report-form-panel.js +6 -0
  11. package/addon/components/fuel-report-panel/details.hbs +4 -0
  12. package/addon/components/issue-form-panel.hbs +99 -11
  13. package/addon/components/issue-form-panel.js +5 -13
  14. package/addon/components/layout/fleet-ops-sidebar/fleet-listing.hbs +1 -0
  15. package/addon/components/layout/fleet-ops-sidebar/fleet-listing.js +3 -0
  16. package/addon/components/layout/fleet-ops-sidebar.hbs +4 -4
  17. package/addon/components/layout/fleet-ops-sidebar.js +10 -0
  18. package/addon/components/live-map-drawer.hbs +1 -1
  19. package/addon/components/live-map.hbs +1 -1
  20. package/addon/components/modals/driver-assign-vehicle.hbs +2 -11
  21. package/addon/components/modals/driver-assign-vendor.hbs +1 -9
  22. package/addon/components/modals/fuel-report-details.hbs +4 -0
  23. package/addon/components/order/schedule-card.hbs +32 -4
  24. package/addon/components/order/schedule-card.js +155 -5
  25. package/addon/components/place-form-panel.hbs +14 -7
  26. package/addon/components/place-form-panel.js +71 -0
  27. package/addon/components/place-panel/details.hbs +9 -19
  28. package/addon/components/vehicle-form-panel.hbs +67 -7
  29. package/addon/components/vehicle-form-panel.js +37 -0
  30. package/addon/components/vehicle-panel/details.hbs +9 -5
  31. package/addon/components/vehicle-panel.hbs +18 -4
  32. package/addon/components/vendor-form-panel/create-form.hbs +72 -11
  33. package/addon/components/vendor-form-panel/edit-form.hbs +1 -1
  34. package/addon/components/vendor-form-panel.hbs +70 -30
  35. package/addon/components/vendor-form-panel.js +4 -40
  36. package/addon/components/vendor-panel/details.hbs +2 -2
  37. package/addon/components/vendor-panel.hbs +16 -2
  38. package/addon/controllers/management/contacts/index.js +49 -3
  39. package/addon/controllers/management/drivers/index.js +7 -0
  40. package/addon/controllers/management/fleets/index.js +19 -23
  41. package/addon/controllers/management/fuel-reports/index/new.js +1 -1
  42. package/addon/controllers/management/fuel-reports/index.js +80 -20
  43. package/addon/controllers/management/issues/index/new.js +2 -2
  44. package/addon/controllers/management/issues/index.js +72 -45
  45. package/addon/controllers/management/places/index.js +65 -18
  46. package/addon/controllers/management/vehicles/index.js +56 -4
  47. package/addon/controllers/management/vendors/index.js +70 -8
  48. package/addon/controllers/operations/orders/index.js +42 -1
  49. package/addon/controllers/operations/service-rates/index.js +7 -0
  50. package/addon/routes/management/contacts/index.js +8 -0
  51. package/addon/routes/management/fleets/index.js +8 -2
  52. package/addon/routes/management/fuel-reports/index.js +6 -0
  53. package/addon/routes/management/issues/index.js +9 -1
  54. package/addon/routes/management/places/index.js +11 -1
  55. package/addon/routes/management/vehicles/index.js +1 -1
  56. package/addon/routes/management/vendors/index.js +8 -0
  57. package/addon/routes/operations/scheduler/index.js +1 -1
  58. package/addon/templates/management/contacts/index.hbs +1 -0
  59. package/addon/templates/management/drivers/index.hbs +2 -1
  60. package/addon/templates/management/fleets/index.hbs +23 -3
  61. package/addon/templates/management/fuel-reports/index.hbs +1 -0
  62. package/addon/templates/management/issues/index.hbs +22 -2
  63. package/addon/templates/management/places/index.hbs +9 -1
  64. package/addon/templates/management/vehicles/index.hbs +22 -2
  65. package/addon/templates/management/vendors/index.hbs +22 -2
  66. package/addon/templates/operations/orders/index.hbs +1 -1
  67. package/addon/templates/operations/service-rates/index.hbs +11 -3
  68. package/addon/utils/get-issue-categories.js +30 -0
  69. package/addon/utils/get-issue-types.js +3 -0
  70. package/addon/utils/get-vendor-status-options.js +3 -0
  71. package/addon/utils/get-vendor-type-options.js +41 -0
  72. package/app/components/layout/fleet-ops-sidebar/fleet-listing.js +1 -0
  73. package/app/utils/get-issue-categories.js +1 -0
  74. package/app/utils/get-issue-types.js +1 -0
  75. package/app/utils/get-vendor-categories.js +1 -0
  76. package/app/utils/get-vendor-status-options.js +1 -0
  77. package/app/utils/get-vendor-type-options.js +1 -0
  78. package/app/utils/get-vendor-types.js +1 -0
  79. package/composer.json +1 -1
  80. package/extension.json +1 -1
  81. package/package.json +4 -4
  82. package/server/migrations/2023_04_27_053456_create_contacts_table.php +2 -2
  83. package/server/migrations/2023_04_27_053456_create_drivers_table.php +5 -5
  84. package/server/migrations/2023_04_27_053456_create_entities_table.php +5 -5
  85. package/server/migrations/2023_04_27_053456_create_fleet_drivers_table.php +2 -2
  86. package/server/migrations/2023_04_27_053456_create_fleets_table.php +3 -3
  87. package/server/migrations/2023_04_27_053456_create_fuel_reports_table.php +3 -3
  88. package/server/migrations/2023_04_27_053456_create_issues_table.php +4 -4
  89. package/server/migrations/2023_04_27_053456_create_orders_table.php +8 -8
  90. package/server/migrations/2023_04_27_053456_create_payloads_table.php +5 -5
  91. package/server/migrations/2023_04_27_053456_create_places_table.php +1 -1
  92. package/server/migrations/2023_04_27_053456_create_purchase_rates_table.php +4 -4
  93. package/server/migrations/2023_04_27_053456_create_service_areas_table.php +2 -2
  94. package/server/migrations/2023_04_27_053456_create_service_quote_items_table.php +1 -1
  95. package/server/migrations/2023_04_27_053456_create_service_quotes_table.php +3 -3
  96. package/server/migrations/2023_04_27_053456_create_service_rate_fees_table.php +1 -1
  97. package/server/migrations/2023_04_27_053456_create_service_rate_parcel_fees_table.php +1 -1
  98. package/server/migrations/2023_04_27_053456_create_service_rates_table.php +3 -3
  99. package/server/migrations/2023_04_27_053456_create_tracking_numbers_table.php +3 -3
  100. package/server/migrations/2023_04_27_053456_create_tracking_statuses_table.php +2 -2
  101. package/server/migrations/2023_04_27_053456_create_vehicles_table.php +3 -3
  102. package/server/migrations/2023_04_27_053456_create_vendors_table.php +5 -5
  103. package/server/migrations/2023_04_27_053456_create_waypoints_table.php +4 -4
  104. package/server/migrations/2023_04_27_053456_create_zones_table.php +2 -2
  105. package/server/migrations/2023_11_09_041807_add_status_column_to_fuel_reports_table.php +32 -0
  106. package/server/migrations/2023_11_15_062814_add_comments_column_and_resolved_at_column_to_vehicle_device_events_table.php +33 -0
  107. package/server/migrations/2023_11_17_053001_add_category_uuid_to_entities_table.php +33 -0
  108. package/server/src/Http/Controllers/Api/v1/DriverController.php +2 -2
  109. package/server/src/Http/Controllers/Api/v1/EntityController.php +2 -0
  110. package/server/src/Http/Controllers/Api/v1/VehicleController.php +2 -2
  111. package/server/src/Http/Controllers/Internal/v1/DriverController.php +5 -14
  112. package/server/src/Http/Controllers/Internal/v1/OrderController.php +1 -3
  113. package/server/src/Http/Filter/ContactFilter.php +10 -0
  114. package/server/src/Http/Filter/FleetFilter.php +8 -6
  115. package/server/src/Http/Filter/FuelReportFilter.php +51 -0
  116. package/server/src/Http/Filter/IssueFilter.php +61 -5
  117. package/server/src/Http/Filter/PlaceFilter.php +48 -6
  118. package/server/src/Http/Filter/VehicleFilter.php +21 -6
  119. package/server/src/Http/Filter/VendorFilter.php +11 -8
  120. package/server/src/Http/Middleware/TransformLocationMiddleware.php +1 -1
  121. package/server/src/Http/Resources/Internal/v1/IntegratedVendorFacilitator.php +17 -18
  122. package/server/src/Http/Resources/v1/Contact.php +16 -19
  123. package/server/src/Http/Resources/v1/CurrentJob.php +13 -16
  124. package/server/src/Http/Resources/v1/Driver.php +59 -57
  125. package/server/src/Http/Resources/v1/Entity.php +30 -33
  126. package/server/src/Http/Resources/v1/Fleet.php +19 -17
  127. package/server/src/Http/Resources/v1/FuelReport.php +16 -14
  128. package/server/src/Http/Resources/v1/Order.php +1 -1
  129. package/server/src/Http/Resources/v1/Payload.php +21 -24
  130. package/server/src/Http/Resources/v1/Place.php +27 -30
  131. package/server/src/Http/Resources/v1/Proof.php +13 -16
  132. package/server/src/Http/Resources/v1/PurchaseRate.php +14 -17
  133. package/server/src/Http/Resources/v1/ServiceArea.php +13 -16
  134. package/server/src/Http/Resources/v1/ServiceQuote.php +15 -18
  135. package/server/src/Http/Resources/v1/ServiceRate.php +33 -36
  136. package/server/src/Http/Resources/v1/ServiceRateFee.php +14 -17
  137. package/server/src/Http/Resources/v1/ServiceRateParcelFee.php +9 -12
  138. package/server/src/Http/Resources/v1/TrackingNumber.php +18 -21
  139. package/server/src/Http/Resources/v1/TrackingStatus.php +18 -21
  140. package/server/src/Http/Resources/v1/Vehicle.php +31 -34
  141. package/server/src/Http/Resources/v1/VehicleDevice.php +23 -25
  142. package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +38 -32
  143. package/server/src/Http/Resources/v1/Vendor.php +31 -26
  144. package/server/src/Http/Resources/v1/Zone.php +14 -17
  145. package/server/src/Models/Driver.php +23 -1
  146. package/server/src/Models/Entity.php +18 -23
  147. package/server/src/Models/FuelReport.php +1 -0
  148. package/server/src/Models/IntegratedVendor.php +6 -1
  149. package/server/src/Models/Order.php +2 -2
  150. package/server/src/Models/Place.php +2 -2
  151. package/server/src/Models/Vehicle.php +4 -2
  152. package/server/src/Models/VehicleDeviceEvent.php +1 -0
  153. package/server/src/Models/Vendor.php +1 -1
  154. package/server/src/Observers/DriverObserver.php +15 -0
@@ -61,7 +61,7 @@ export default class ManagementContactsIndexController extends Controller {
61
61
  *
62
62
  * @var {Array}
63
63
  */
64
- queryParams = ['page', 'limit', 'sort', 'query', 'public_id', 'internal_id', 'created_by', 'updated_by', 'status'];
64
+ queryParams = ['page', 'limit', 'sort', 'query', 'public_id', 'internal_id', 'created_by', 'updated_by', 'status', 'title', 'email', 'phone', 'type'];
65
65
 
66
66
  /**
67
67
  * The current page of data being viewed
@@ -98,6 +98,34 @@ export default class ManagementContactsIndexController extends Controller {
98
98
  */
99
99
  @tracked internal_id;
100
100
 
101
+ /**
102
+ * The filterable param `title`
103
+ *
104
+ * @var {String}
105
+ */
106
+ @tracked title;
107
+
108
+ /**
109
+ * The filterable param `email`
110
+ *
111
+ * @var {String}
112
+ */
113
+ @tracked email;
114
+
115
+ /**
116
+ * The filterable param `phone`
117
+ *
118
+ * @var {String}
119
+ */
120
+ @tracked phone;
121
+
122
+ /**
123
+ * The filterable param `email`
124
+ *
125
+ * @var {Array|String}
126
+ */
127
+ @tracked type;
128
+
101
129
  /**
102
130
  * The filterable param `status`
103
131
  *
@@ -149,6 +177,16 @@ export default class ManagementContactsIndexController extends Controller {
149
177
  filterable: true,
150
178
  filterComponent: 'filter/string',
151
179
  },
180
+ {
181
+ label: 'Title',
182
+ valuePath: 'title',
183
+ cellComponent: 'click-to-copy',
184
+ width: '160px',
185
+ resizable: true,
186
+ sortable: true,
187
+ filterable: true,
188
+ filterComponent: 'filter/string',
189
+ },
152
190
  {
153
191
  label: 'Email',
154
192
  valuePath: 'email',
@@ -173,11 +211,12 @@ export default class ManagementContactsIndexController extends Controller {
173
211
  label: 'Type',
174
212
  valuePath: 'type',
175
213
  cellComponent: 'table/cell/status',
176
- width: '140px',
214
+ width: '100px',
177
215
  resizable: true,
178
216
  sortable: true,
179
217
  filterable: true,
180
- filterComponent: 'filter/string',
218
+ filterComponent: 'filter/multi-option',
219
+ filterOptions: ['contact', 'customer'],
181
220
  },
182
221
  {
183
222
  label: 'Created At',
@@ -258,6 +297,13 @@ export default class ManagementContactsIndexController extends Controller {
258
297
  this.query = value;
259
298
  }
260
299
 
300
+ /**
301
+ * Reload layout view.
302
+ */
303
+ @action reload() {
304
+ return this.hostRouter.refresh();
305
+ }
306
+
261
307
  /**
262
308
  * Toggles dialog to export `contact`
263
309
  *
@@ -464,6 +464,13 @@ export default class ManagementDriversIndexController extends Controller {
464
464
  this.layout = layout;
465
465
  }
466
466
 
467
+ /**
468
+ * Reload layout view.
469
+ */
470
+ @action reload() {
471
+ return this.hostRouter.refresh();
472
+ }
473
+
467
474
  /**
468
475
  * Bulk deletes selected `driver` via confirm prompt
469
476
  *
@@ -75,7 +75,7 @@ export default class ManagementFleetsIndexController extends Controller {
75
75
  *
76
76
  * @var {Array}
77
77
  */
78
- queryParams = ['page', 'limit', 'sort', 'query', 'public_id', 'internal_id', 'zone', 'service_area', 'parent_fleet', 'vendor', 'created_by', 'updated_by', 'status'];
78
+ queryParams = ['page', 'limit', 'sort', 'query', 'public_id', 'zone', 'service_area', 'parent_fleet', 'vendor', 'created_by', 'updated_by', 'status', 'task', 'name'];
79
79
 
80
80
  /**
81
81
  * The current page of data being viewed
@@ -105,13 +105,6 @@ export default class ManagementFleetsIndexController extends Controller {
105
105
  */
106
106
  @tracked public_id;
107
107
 
108
- /**
109
- * The filterable param `internal_id`
110
- *
111
- * @var {String}
112
- */
113
- @tracked internal_id;
114
-
115
108
  /**
116
109
  * The filterable param `service_area`
117
110
  *
@@ -145,6 +138,13 @@ export default class ManagementFleetsIndexController extends Controller {
145
138
  */
146
139
  @tracked task;
147
140
 
141
+ /**
142
+ * The filterable param `task`
143
+ *
144
+ * @var {String}
145
+ */
146
+ @tracked name;
147
+
148
148
  /**
149
149
  * The filterable param `status`
150
150
  *
@@ -181,6 +181,7 @@ export default class ManagementFleetsIndexController extends Controller {
181
181
  resizable: true,
182
182
  sortable: true,
183
183
  filterable: true,
184
+ filterParam: 'name',
184
185
  filterComponent: 'filter/string',
185
186
  },
186
187
  {
@@ -206,7 +207,7 @@ export default class ManagementFleetsIndexController extends Controller {
206
207
  filterable: true,
207
208
  filterComponent: 'filter/model',
208
209
  filterComponentPlaceholder: 'Select fleet',
209
- filterParam: 'parent_fleet',
210
+ filterParam: 'parent_fleet_uuid',
210
211
  model: 'fleet',
211
212
  },
212
213
  {
@@ -246,18 +247,6 @@ export default class ManagementFleetsIndexController extends Controller {
246
247
  filterable: true,
247
248
  filterComponent: 'filter/string',
248
249
  },
249
- {
250
- label: 'Internal ID',
251
- valuePath: 'internal_id',
252
- cellComponent: 'table/cell/anchor',
253
- action: this.viewFleet,
254
- width: '120px',
255
- resizable: true,
256
- sortable: true,
257
- filterable: true,
258
- hidden: true,
259
- filterComponent: 'filter/string',
260
- },
261
250
  {
262
251
  label: 'Manpower',
263
252
  valuePath: 'drivers_count',
@@ -297,7 +286,7 @@ export default class ManagementFleetsIndexController extends Controller {
297
286
  },
298
287
  {
299
288
  label: 'Created At',
300
- valuePath: 'createdAtShort',
289
+ valuePath: 'createdAt',
301
290
  sortParam: 'created_at',
302
291
  width: '120px',
303
292
  resizable: true,
@@ -307,7 +296,7 @@ export default class ManagementFleetsIndexController extends Controller {
307
296
  },
308
297
  {
309
298
  label: 'Updated At',
310
- valuePath: 'updatedAtShort',
299
+ valuePath: 'updatedAt',
311
300
  sortParam: 'updated_at',
312
301
  width: '120px',
313
302
  resizable: true,
@@ -396,6 +385,13 @@ export default class ManagementFleetsIndexController extends Controller {
396
385
  });
397
386
  }
398
387
 
388
+ /**
389
+ * Reload layout view.
390
+ */
391
+ @action reload() {
392
+ return this.hostRouter.refresh();
393
+ }
394
+
399
395
  /**
400
396
  * Toggles dialog to export `fleet`
401
397
  *
@@ -79,7 +79,7 @@ export default class ManagementFuelReportsIndexNewController extends Controller
79
79
  }
80
80
 
81
81
  this.hostRouter.refresh();
82
- return this.hostRouter.transitionTo('console.fleet-ops.management.fuel-reports.index.details', fuelReport).then(() => {
82
+ return this.hostRouter.transitionTo('console.fleet-ops.management.fuel-reports.index.details', fuelReport.public_id).then(() => {
83
83
  this.resetForm();
84
84
  });
85
85
  }
@@ -68,7 +68,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
68
68
  *
69
69
  * @var {Array}
70
70
  */
71
- queryParams = ['page', 'limit', 'sort', 'query', 'public_id', 'internal_id', 'vehicle', 'driver', 'created_by', 'updated_by', 'status'];
71
+ queryParams = ['page', 'limit', 'sort', 'query', 'public_id', 'internal_id', 'vehicle', 'driver', 'created_by', 'updated_by', 'status', 'country', 'volume', 'odometer'];
72
72
 
73
73
  /**
74
74
  * The current page of data being viewed
@@ -119,6 +119,27 @@ export default class ManagementFuelReportsIndexController extends Controller {
119
119
  */
120
120
  @tracked vehicle;
121
121
 
122
+ /**
123
+ * The filterable param `vehicle`
124
+ *
125
+ * @var {String}
126
+ */
127
+ @tracked reporter;
128
+
129
+ /**
130
+ * The filterable param `vehicle`
131
+ *
132
+ * @var {String}
133
+ */
134
+ @tracked volume;
135
+
136
+ /**
137
+ * The filterable param `vehicle`
138
+ *
139
+ * @var {String}
140
+ */
141
+ @tracked odometer;
142
+
122
143
  /**
123
144
  * The filterable param `status`
124
145
  *
@@ -135,14 +156,34 @@ export default class ManagementFuelReportsIndexController extends Controller {
135
156
  {
136
157
  label: 'ID',
137
158
  valuePath: 'public_id',
138
- width: '120px',
139
- cellComponent: 'table/cell/anchor',
140
- action: this.viewFuelReport,
159
+ width: '130px',
160
+ cellComponent: 'click-to-copy',
141
161
  resizable: true,
142
162
  sortable: true,
143
163
  filterable: true,
164
+ hidden: false,
144
165
  filterComponent: 'filter/string',
145
166
  },
167
+ {
168
+ label: 'Reporter',
169
+ valuePath: 'reporter_name',
170
+ width: '100px',
171
+ cellComponent: 'table/cell/anchor',
172
+ onClick: async (issue) => {
173
+ let reporter = await issue.loadDReporter();
174
+
175
+ if (reporter) {
176
+ this.contextPanel.focus(reporter);
177
+ }
178
+ },
179
+ resizable: true,
180
+ sortable: true,
181
+ filterable: true,
182
+ filterComponent: 'filter/model',
183
+ filterComponentPlaceholder: 'Select reporter',
184
+ filterParam: 'reporter',
185
+ model: 'user',
186
+ },
146
187
  {
147
188
  label: 'Driver',
148
189
  valuePath: 'driver_name',
@@ -166,10 +207,10 @@ export default class ManagementFuelReportsIndexController extends Controller {
166
207
  {
167
208
  label: 'Vehicle',
168
209
  valuePath: 'vehicle_name',
169
- width: '120px',
210
+ width: '100px',
170
211
  cellComponent: 'table/cell/anchor',
171
- onClick: async (fuelReport) => {
172
- let vehicle = await fuelReport.loadVehicle();
212
+ onClick: async (issue) => {
213
+ let vehicle = await issue.loadVehicle();
173
214
 
174
215
  if (vehicle) {
175
216
  this.contextPanel.focus(vehicle);
@@ -182,34 +223,46 @@ export default class ManagementFuelReportsIndexController extends Controller {
182
223
  filterComponentPlaceholder: 'Select vehicle',
183
224
  filterParam: 'vehicle',
184
225
  model: 'vehicle',
226
+ modelNamePath: 'displayName',
185
227
  },
186
228
  {
187
- label: 'Country',
188
- valuePath: 'country',
189
- cellComponent: 'table/cell/base',
229
+ label: 'Status',
230
+ valuePath: 'status',
231
+ cellComponent: 'table/cell/status',
190
232
  width: '100px',
191
233
  resizable: true,
192
234
  sortable: true,
193
- hidden: true,
194
235
  filterable: true,
236
+ filterComponent: 'filter/multi-option',
237
+ filterOptions: ['draft', 'pending-approval', 'approved', 'rejected', 'revised', 'submitted', 'in-review', 'confirmed', 'processed', 'archived', 'cancelled'],
238
+ },
239
+ {
240
+ label: 'volume',
241
+ valuePath: 'volume',
242
+ width: '130px',
243
+ cellComponent: 'click-to-copy',
244
+ resizable: true,
245
+ sortable: true,
246
+ filterable: true,
247
+ hidden: false,
195
248
  filterComponent: 'filter/string',
196
249
  },
197
250
  {
198
- label: 'Status',
199
- valuePath: 'status',
200
- cellComponent: 'table/cell/status',
201
- width: '100px',
251
+ label: 'odometer',
252
+ valuePath: 'odometer',
253
+ width: '130px',
254
+ cellComponent: 'click-to-copy',
202
255
  resizable: true,
203
256
  sortable: true,
204
257
  filterable: true,
205
- filterComponent: 'filter/multi-option',
206
- filterOptions: this.statusOptions,
258
+ hidden: false,
259
+ filterComponent: 'filter/string',
207
260
  },
208
261
  {
209
262
  label: 'Created At',
210
263
  valuePath: 'createdAt',
211
264
  sortParam: 'created_at',
212
- width: '150px',
265
+ width: '120px',
213
266
  resizable: true,
214
267
  sortable: true,
215
268
  filterable: true,
@@ -219,7 +272,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
219
272
  label: 'Updated At',
220
273
  valuePath: 'updatedAt',
221
274
  sortParam: 'updated_at',
222
- width: '150px',
275
+ width: '120px',
223
276
  resizable: true,
224
277
  sortable: true,
225
278
  hidden: true,
@@ -304,6 +357,13 @@ export default class ManagementFuelReportsIndexController extends Controller {
304
357
  this.transitionToRoute('management.fuel-reports.index.details', fuelReport);
305
358
  }
306
359
 
360
+ /**
361
+ * Reload layout view.
362
+ */
363
+ @action reload() {
364
+ return this.hostRouter.refresh();
365
+ }
366
+
307
367
  /**
308
368
  * Create a new fuel report
309
369
  *
@@ -348,7 +408,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
348
408
  @action bulkDeleteFuelReports() {
349
409
  const selected = this.table.selectedRows;
350
410
 
351
- this.crud.bulkFuelReports(selected, {
411
+ this.crud.bulkDelete(selected, {
352
412
  modelNamePath: `name`,
353
413
  acceptButtonText: 'Delete Fuel Reports',
354
414
  onSuccess: () => {
@@ -43,7 +43,7 @@ export default class ManagementIssuesIndexNewController extends Controller {
43
43
  *
44
44
  * @var {issueModel}
45
45
  */
46
- @tracked issue = this.store.createRecord('issue', { reporter: this.currentUser.user, status: 'pending', priority: 'low' });
46
+ @tracked issue = this.store.createRecord('issue', { reporter: this.currentUser.user, status: 'pending', priority: 'low', type: 'operational' });
47
47
 
48
48
  /**
49
49
  * Set the overlay component context object.
@@ -89,6 +89,6 @@ export default class ManagementIssuesIndexNewController extends Controller {
89
89
  * @memberof ManagementissuesIndexNewController
90
90
  */
91
91
  resetForm() {
92
- this.issue = this.store.createRecord('issue', { reporter: this.currentUser.user, status: 'pending', priority: 'low' });
92
+ this.issue = this.store.createRecord('issue', { reporter: this.currentUser.user, status: 'pending', priority: 'low', type: 'operational' });
93
93
  }
94
94
  }
@@ -5,6 +5,8 @@ import { action } from '@ember/object';
5
5
  import { isBlank } from '@ember/object';
6
6
  import { timeout } from 'ember-concurrency';
7
7
  import { task } from 'ember-concurrency-decorators';
8
+ import getIssueTypes from '../../../utils/get-issue-types';
9
+ import getIssueCategories from '../../../utils/get-issue-categories';
8
10
 
9
11
  export default class ManagementIssuesIndexController extends Controller {
10
12
  /**
@@ -59,19 +61,18 @@ export default class ManagementIssuesIndexController extends Controller {
59
61
  'limit',
60
62
  'sort',
61
63
  'query',
62
- 'status',
63
64
  'public_id',
64
- 'internal_id',
65
- 'payload',
66
- 'tracking_number',
67
- 'facilitator',
68
- 'customer',
65
+ 'issue_id',
69
66
  'driver',
70
- 'pickup',
71
- 'dropoff',
67
+ 'vehicle',
68
+ 'assignee',
69
+ 'reporter',
72
70
  'created_by',
73
71
  'updated_by',
74
72
  'status',
73
+ 'priority',
74
+ 'cateogry',
75
+ 'type',
75
76
  ];
76
77
 
77
78
  /**
@@ -103,81 +104,67 @@ export default class ManagementIssuesIndexController extends Controller {
103
104
  @tracked public_id;
104
105
 
105
106
  /**
106
- * The filterable param `internal_id`
107
- *
108
- * @var {String}
109
- */
110
- @tracked internal_id;
111
-
112
- /**
113
- * The filterable param `tracking` for `tracking_number`
107
+ * The filterable param `status`
114
108
  *
115
109
  * @var {String}
116
110
  */
117
- @tracked tracking;
111
+ @tracked status;
118
112
 
119
113
  /**
120
- * The filterable param `facilitator`
114
+ * The filterable param `priority`
121
115
  *
122
- * @var {String}
116
+ * @var {Array|String}
123
117
  */
124
- @tracked facilitator;
118
+ @tracked priority;
125
119
 
126
120
  /**
127
- * The filterable param `customer`
121
+ * The filterable param `priority`
128
122
  *
129
- * @var {String}
123
+ * @var {Array|String}
130
124
  */
131
- @tracked customer;
125
+ @tracked status;
132
126
 
133
127
  /**
134
- * The filterable param `driver`
128
+ * The filterable param `type`
135
129
  *
136
130
  * @var {String}
137
131
  */
138
- @tracked driver;
132
+ @tracked type;
139
133
 
140
134
  /**
141
- * The filterable param `payload`
135
+ * The filterable param `category`
142
136
  *
143
137
  * @var {String}
144
138
  */
145
- @tracked payload;
139
+ @tracked category;
146
140
 
147
141
  /**
148
- * The filterable param `pickup`
142
+ * The filterable param `vehicle`
149
143
  *
150
144
  * @var {String}
151
145
  */
152
- @tracked pickup;
146
+ @tracked vehicle;
153
147
 
154
148
  /**
155
- * The filterable param `dropoff`
149
+ * The filterable param `driver`
156
150
  *
157
151
  * @var {String}
158
152
  */
159
- @tracked dropoff;
153
+ @tracked driver;
160
154
 
161
155
  /**
162
- * The filterable param `updated_by`
156
+ * The filterable param `assignee`
163
157
  *
164
158
  * @var {String}
165
159
  */
166
- @tracked updated_by;
160
+ @tracked assignee;
167
161
 
168
162
  /**
169
- * The filterable param `created_by`
163
+ * The filterable param `reporter`
170
164
  *
171
165
  * @var {String}
172
166
  */
173
- @tracked created_by;
174
-
175
- /**
176
- * The filterable param `status`
177
- *
178
- * @var {Array}
179
- */
180
- @tracked status;
167
+ @tracked reporter;
181
168
 
182
169
  /**
183
170
  * All columns applicable for orders
@@ -212,7 +199,9 @@ export default class ManagementIssuesIndexController extends Controller {
212
199
  resizable: true,
213
200
  sortable: true,
214
201
  filterable: true,
215
- filterComponent: 'filter/string',
202
+ filterComponent: 'filter/select',
203
+ filterOptions: getIssueTypes(),
204
+ placeholder: 'Select issue type',
216
205
  },
217
206
  {
218
207
  label: 'Category',
@@ -221,21 +210,49 @@ export default class ManagementIssuesIndexController extends Controller {
221
210
  resizable: true,
222
211
  sortable: true,
223
212
  filterable: true,
224
- filterComponent: 'filter/string',
213
+ filterComponent: 'filter/select',
214
+ filterOptions: getIssueCategories(),
215
+ placeholder: 'Select issue category',
225
216
  },
226
217
  {
227
218
  label: 'Reporter',
228
219
  valuePath: 'reporter_name',
229
- width: '110px',
220
+ width: '100px',
221
+ cellComponent: 'table/cell/anchor',
222
+ onClick: async (issue) => {
223
+ let reporter = await issue.loadDReporter();
224
+
225
+ if (reporter) {
226
+ this.contextPanel.focus(reporter);
227
+ }
228
+ },
230
229
  resizable: true,
231
230
  sortable: true,
231
+ filterable: true,
232
+ filterComponent: 'filter/model',
233
+ filterComponentPlaceholder: 'Select reporter',
234
+ filterParam: 'reporter',
235
+ model: 'user',
232
236
  },
233
237
  {
234
238
  label: 'Assignee',
235
239
  valuePath: 'assignee_name',
236
240
  width: '100px',
241
+ cellComponent: 'table/cell/anchor',
242
+ onClick: async (issue) => {
243
+ let assignee = await issue.loadDAssignee();
244
+
245
+ if (assignee) {
246
+ this.contextPanel.focus(assignee);
247
+ }
248
+ },
237
249
  resizable: true,
238
250
  sortable: true,
251
+ filterable: true,
252
+ filterComponent: 'filter/model',
253
+ filterComponentPlaceholder: 'Select assignee',
254
+ filterParam: 'assignee',
255
+ model: 'user',
239
256
  },
240
257
  {
241
258
  label: 'Driver',
@@ -276,6 +293,7 @@ export default class ManagementIssuesIndexController extends Controller {
276
293
  filterComponentPlaceholder: 'Select vehicle',
277
294
  filterParam: 'vehicle',
278
295
  model: 'vehicle',
296
+ modelNamePath: 'displayName',
279
297
  },
280
298
  {
281
299
  label: 'Status',
@@ -285,6 +303,8 @@ export default class ManagementIssuesIndexController extends Controller {
285
303
  resizable: true,
286
304
  sortable: true,
287
305
  filterable: true,
306
+ filterComponent: 'filter/multi-option',
307
+ filterOptions: ['pending', 'in-progress', 'backlogged', 'requires-update', 'in-review', 're-opened', 'duplicate', 'pending-review', 'escalated', 'completed', 'canceled'],
288
308
  },
289
309
  {
290
310
  label: 'Created At',
@@ -374,6 +394,13 @@ export default class ManagementIssuesIndexController extends Controller {
374
394
  this.crud.export('issue');
375
395
  }
376
396
 
397
+ /**
398
+ * Reload layout view.
399
+ */
400
+ @action reload() {
401
+ return this.hostRouter.refresh();
402
+ }
403
+
377
404
  /**
378
405
  * View the selected issue
379
406
  *