@fleetbase/fleetops-engine 0.3.1 → 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.
- package/addon/components/contact-form-panel.hbs +82 -0
- package/addon/components/contact-form-panel.js +195 -0
- package/addon/components/contact-panel/details.hbs +36 -0
- package/addon/components/contact-panel/details.js +3 -0
- package/addon/components/contact-panel.hbs +52 -0
- package/addon/components/contact-panel.js +161 -0
- package/addon/components/driver-form-panel.hbs +39 -55
- package/addon/components/driver-form-panel.js +41 -0
- package/addon/components/driver-panel/details.hbs +2 -2
- package/addon/components/driver-panel.hbs +12 -10
- package/addon/components/driver-panel.js +13 -0
- package/addon/components/fleet-form-panel.hbs +28 -28
- package/addon/components/fleet-form-panel.js +150 -1
- package/addon/components/fleet-listing-panel.hbs +8 -0
- package/addon/components/fleet-listing-panel.js +34 -0
- package/addon/components/fleet-panel/details.hbs +30 -0
- package/addon/components/fleet-panel/driver-listing.hbs +72 -0
- package/addon/components/fleet-panel/driver-listing.js +149 -0
- package/addon/components/fleet-panel/vehicle-listing.hbs +72 -0
- package/addon/components/fleet-panel/vehicle-listing.js +149 -0
- package/addon/components/fleet-panel.hbs +12 -58
- package/addon/components/fleet-panel.js +148 -26
- package/addon/components/fleet-vehicle-listing.hbs +0 -1
- package/addon/components/fuel-report-form-panel.hbs +41 -0
- package/addon/components/fuel-report-form-panel.js +122 -0
- package/addon/components/fuel-report-panel/details.hbs +38 -0
- package/addon/components/fuel-report-panel.hbs +30 -0
- package/addon/components/fuel-report-panel.js +161 -0
- package/addon/components/issue-form-panel.hbs +85 -0
- package/addon/components/issue-form-panel.js +211 -0
- package/addon/components/issue-panel/details.hbs +48 -0
- package/addon/components/issue-panel.hbs +30 -0
- package/addon/components/issue-panel.js +160 -0
- package/addon/components/layout/fleet-ops-sidebar.hbs +2 -2
- package/addon/components/live-map.js +2 -0
- package/addon/components/map-container/toolbar.hbs +9 -9
- package/addon/components/map-container/topbar.hbs +1 -1
- package/addon/components/modals/issue-details.hbs +38 -0
- package/addon/components/modals/issue-from.hbs +138 -0
- package/addon/components/place-form-panel.hbs +50 -0
- package/addon/components/place-form-panel.js +134 -0
- package/addon/components/place-panel/details.hbs +95 -0
- package/addon/components/place-panel.hbs +30 -0
- package/addon/components/place-panel.js +161 -0
- package/addon/components/vehicle-form-panel.hbs +35 -44
- package/addon/components/vehicle-form-panel.js +41 -0
- package/addon/components/vehicle-panel/details.hbs +8 -2
- package/addon/components/vehicle-panel.hbs +8 -6
- package/addon/components/vendor-form-panel/create-form.hbs +114 -0
- package/addon/components/vendor-form-panel/create-form.js +158 -0
- package/addon/components/vendor-form-panel/edit-form.hbs +98 -0
- package/addon/components/vendor-form-panel/edit-form.js +51 -0
- package/addon/components/vendor-form-panel.hbs +48 -0
- package/addon/components/vendor-form-panel.js +226 -0
- package/addon/components/vendor-panel/details.hbs +77 -0
- package/addon/components/vendor-panel/details.js +12 -0
- package/addon/components/vendor-panel.hbs +58 -0
- package/addon/components/vendor-panel.js +161 -0
- package/addon/controllers/management/contacts/index/details.js +55 -0
- package/addon/controllers/management/contacts/index/edit.js +111 -0
- package/addon/controllers/management/contacts/index/new.js +88 -0
- package/addon/controllers/management/contacts/index.js +23 -128
- package/addon/controllers/management/drivers/index/new.js +2 -2
- package/addon/controllers/management/drivers/index.js +18 -32
- package/addon/controllers/management/fleets/index/details.js +53 -0
- package/addon/controllers/management/fleets/index/edit.js +75 -41
- package/addon/controllers/management/fleets/index/new.js +42 -57
- package/addon/controllers/management/fleets/index.js +0 -1
- package/addon/controllers/management/fuel-reports/index/details.js +63 -0
- package/addon/controllers/management/fuel-reports/index/edit.js +111 -0
- package/addon/controllers/management/fuel-reports/index/new.js +95 -0
- package/addon/controllers/management/fuel-reports/index.js +57 -127
- package/addon/controllers/management/issues/index/details.js +54 -0
- package/addon/controllers/management/issues/index/edit.js +111 -0
- package/addon/controllers/management/issues/index/new.js +94 -0
- package/addon/controllers/management/issues/index.js +131 -26
- package/addon/controllers/management/places/index/details.js +55 -0
- package/addon/controllers/management/places/index/edit.js +111 -0
- package/addon/controllers/management/places/index/new.js +88 -0
- package/addon/controllers/management/places/index.js +21 -182
- package/addon/controllers/management/vehicles/index/new.js +2 -6
- package/addon/controllers/management/vendors/index/details.js +55 -0
- package/addon/controllers/management/vendors/index/edit.js +111 -0
- package/addon/controllers/management/vendors/index/new.js +88 -0
- package/addon/controllers/management/vendors/index.js +43 -247
- package/addon/routes/management/contacts/index/details.js +14 -0
- package/addon/routes/management/contacts/index/edit.js +10 -0
- package/addon/routes/management/contacts/index/new.js +3 -0
- package/addon/routes/management/contacts/index.js +1 -1
- package/addon/routes/management/fleets/index/details.js +1 -1
- package/addon/routes/management/fleets/index/edit.js +1 -1
- package/addon/routes/management/fleets/index.js +1 -1
- package/addon/routes/management/fuel-reports/index/details.js +14 -0
- package/addon/routes/management/fuel-reports/index/edit.js +10 -0
- package/addon/routes/management/fuel-reports/index/new.js +3 -0
- package/addon/routes/management/fuel-reports/index.js +3 -1
- package/addon/routes/management/issues/index/details.js +14 -0
- package/addon/routes/management/issues/index/edit.js +10 -0
- package/addon/routes/management/issues/index/new.js +3 -0
- package/addon/routes/management/issues/index.js +1 -1
- package/addon/routes/management/places/index/details.js +14 -0
- package/addon/routes/management/places/index/edit.js +10 -0
- package/addon/routes/management/places/index/new.js +3 -0
- package/addon/routes/management/places/index.js +6 -1
- package/addon/routes/management/vendors/index/details.js +15 -0
- package/addon/routes/management/vendors/index/edit.js +11 -0
- package/addon/routes/management/vendors/index/new.js +3 -0
- package/addon/routes/management/vendors/index.js +1 -0
- package/addon/routes.js +27 -7
- package/addon/services/context-panel.js +60 -0
- package/addon/templates/management/contacts/index/details.hbs +1 -0
- package/addon/templates/management/contacts/index/edit.hbs +1 -0
- package/addon/templates/management/contacts/index/new.hbs +1 -0
- package/addon/templates/management/contacts/index.hbs +22 -3
- package/addon/templates/management/drivers/index.hbs +29 -5
- package/addon/templates/management/fleets/index/details.hbs +1 -1
- package/addon/templates/management/fleets/index/edit.hbs +1 -1
- package/addon/templates/management/fleets/index/new.hbs +1 -1
- package/addon/templates/management/fuel-reports/index/details.hbs +1 -0
- package/addon/templates/management/fuel-reports/index/edit.hbs +1 -0
- package/addon/templates/management/fuel-reports/index/new.hbs +1 -0
- package/addon/templates/management/fuel-reports/index.hbs +25 -4
- package/addon/templates/management/issues/index/details.hbs +1 -0
- package/addon/templates/management/issues/index/edit.hbs +1 -0
- package/addon/templates/management/issues/index/new.hbs +1 -0
- package/addon/templates/management/issues/index.hbs +5 -3
- package/addon/templates/management/places/index/details.hbs +1 -0
- package/addon/templates/management/places/index/edit.hbs +1 -0
- package/addon/templates/management/places/index/new.hbs +1 -0
- package/addon/templates/management/vendors/index/details.hbs +1 -0
- package/addon/templates/management/vendors/index/edit.hbs +1 -0
- package/addon/templates/management/vendors/index/new.hbs +1 -0
- package/addon/templates/operations/orders/index.hbs +3 -3
- package/app/components/contact-form-panel.js +1 -0
- package/app/components/contact-panel/details.js +1 -0
- package/app/components/contact-panel.js +1 -0
- package/app/components/fleet-listing-panel.js +1 -0
- package/app/components/fleet-panel/details.js +1 -0
- package/app/components/fleet-panel/driver-listing.js +1 -0
- package/app/components/fleet-panel/vehicle-listing.js +1 -0
- package/app/components/fuel-report-form-panel.js +1 -0
- package/app/components/fuel-report-panel.js +1 -0
- package/app/components/issue-form-panel.js +1 -0
- package/app/components/issue-panel.js +1 -0
- package/app/components/place-form-panel.js +1 -0
- package/app/components/place-panel.js +1 -0
- package/app/components/vendor-form-panel/create-form.js +1 -0
- package/app/components/vendor-form-panel/edit-form.js +1 -0
- package/app/components/vendor-form-panel.js +1 -0
- package/app/components/vendor-panel/details.js +1 -0
- package/app/components/vendor-panel.js +1 -0
- package/app/controllers/management/contacts/index/details.js +1 -0
- package/app/controllers/management/contacts/index/edit.js +1 -0
- package/app/controllers/management/contacts/index/new.js +1 -0
- package/app/controllers/management/fuel-reports/index/details.js +1 -0
- package/app/controllers/management/fuel-reports/index/edit.js +1 -0
- package/app/controllers/management/fuel-reports/index/new.js +1 -0
- package/app/controllers/management/issues/index/details.js +1 -0
- package/app/controllers/management/issues/index/edit.js +1 -0
- package/app/controllers/management/issues/index/new.js +1 -0
- package/app/controllers/management/places/index/details.js +1 -0
- package/app/controllers/management/places/index/edit.js +1 -0
- package/app/controllers/management/places/index/new.js +1 -0
- package/app/controllers/management/vendors/index/edit.js +1 -0
- package/app/controllers/management/vendors/index/new.js +1 -0
- package/app/routes/addon/routes/management/places/index/new.js +1 -0
- package/app/routes/management/contacts/index/details.js +1 -0
- package/app/routes/management/contacts/index/edit.js +1 -0
- package/app/routes/management/contacts/index/new.js +1 -0
- package/app/routes/management/fuel-reports/index/details.js +1 -0
- package/app/routes/management/fuel-reports/index/edit.js +1 -0
- package/app/routes/management/fuel-reports/index/new.js +1 -0
- package/app/routes/management/issues/index/details.js +1 -0
- package/app/routes/management/issues/index/edit.js +1 -0
- package/app/routes/management/issues/index/new.js +1 -0
- package/app/routes/management/places/index/details.js +1 -0
- package/app/routes/management/places/index/edit.js +1 -0
- package/app/routes/management/places/index/new.js +1 -0
- package/app/routes/management/vendors/index/details.js +1 -0
- package/app/routes/management/vendors/index/edit.js +1 -0
- package/app/routes/management/vendors/index/new.js +1 -0
- package/app/templates/addon/routes/management/places/index/new.js +1 -0
- package/app/templates/management/contacts/index/details.js +1 -0
- package/app/templates/management/contacts/index/edit.js +1 -0
- package/app/templates/management/contacts/index/new.js +1 -0
- package/app/templates/management/fuel-reports/index/details.js +1 -0
- package/app/templates/management/fuel-reports/index/edit.js +1 -0
- package/app/templates/management/fuel-reports/index/new.js +1 -0
- package/app/templates/management/issues/index/details.js +1 -0
- package/app/templates/management/issues/index/edit.js +1 -0
- package/app/templates/management/issues/index/new.js +1 -0
- package/app/templates/management/places/index/details.js +1 -0
- package/app/templates/management/places/index/edit.js +1 -0
- package/app/templates/management/places/index/new.js +1 -0
- package/app/templates/management/vendors/index/details.js +1 -0
- package/app/templates/management/vendors/index/edit.js +1 -0
- package/app/templates/management/vendors/index/new.js +1 -0
- package/composer.json +1 -1
- package/config/environment.js +2 -1
- package/extension.json +1 -1
- package/package.json +4 -3
- package/server/migrations/2023_11_03_072503_refactor_issues_table_columns.php +42 -0
- package/server/migrations/2023_11_06_040645_refactor_fuel_reports_table.php +38 -0
- package/server/src/Casts/Point.php +15 -1
- package/server/src/Http/Controllers/Internal/v1/DriverController.php +33 -15
- package/server/src/Http/Filter/FleetFilter.php +7 -0
- package/server/src/Http/Filter/FuelReportFilter.php +58 -0
- package/server/src/Http/Filter/IssueFilter.php +69 -0
- package/server/src/Http/Filter/VehicleFilter.php +10 -0
- package/server/src/Http/Middleware/TransformLocationMiddleware.php +48 -0
- package/server/src/Http/Resources/v1/Driver.php +1 -0
- package/server/src/Http/Resources/v1/Fleet.php +20 -21
- package/server/src/Http/Resources/v1/FuelReport.php +37 -35
- package/server/src/Http/Resources/v1/Issue.php +77 -0
- package/server/src/Http/Resources/v1/ParentFleet.php +60 -0
- package/server/src/Http/Resources/v1/SubFleet.php +60 -0
- package/server/src/Http/Resources/v1/Vehicle.php +4 -2
- package/server/src/Integrations/Lalamove/Lalamove.php +6 -6
- package/server/src/Models/Contact.php +7 -0
- package/server/src/Models/Driver.php +1 -1
- package/server/src/Models/Fleet.php +35 -4
- package/server/src/Models/FuelReport.php +53 -3
- package/server/src/Models/Issue.php +106 -7
- package/server/src/Models/Vehicle.php +1 -1
- package/server/src/Models/VehicleDevice.php +3 -1
- package/server/src/Models/VehicleDeviceEvent.php +7 -3
- package/server/src/Notifications/OrderAssigned.php +0 -6
- package/server/src/Notifications/OrderCanceled.php +0 -6
- package/server/src/Notifications/OrderDispatchFailed.php +0 -6
- package/server/src/Notifications/OrderDispatched.php +0 -6
- package/server/src/Notifications/OrderPing.php +0 -6
- package/server/src/Notifications/OrderSplit.php +0 -6
- package/server/src/Providers/NotificationServiceProvider.php +1 -1
- package/server/src/routes.php +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Controller
|
|
1
|
+
import Controller from '@ember/controller';
|
|
2
2
|
import { inject as service } from '@ember/service';
|
|
3
3
|
import { tracked } from '@glimmer/tracking';
|
|
4
4
|
import { action } from '@ember/object';
|
|
@@ -7,20 +7,6 @@ import { timeout } from 'ember-concurrency';
|
|
|
7
7
|
import { task } from 'ember-concurrency-decorators';
|
|
8
8
|
|
|
9
9
|
export default class ManagementFuelReportsIndexController extends Controller {
|
|
10
|
-
/**
|
|
11
|
-
* Inject the `management.drivers.index` controller
|
|
12
|
-
*
|
|
13
|
-
* @var {Controller}
|
|
14
|
-
*/
|
|
15
|
-
@controller('management.drivers.index') drivers;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Inject the `management.vehicles.index` controller
|
|
19
|
-
*
|
|
20
|
-
* @var {Controller}
|
|
21
|
-
*/
|
|
22
|
-
@controller('management.vehicles.index') vehicles;
|
|
23
|
-
|
|
24
10
|
/**
|
|
25
11
|
* Inject the `notifications` service
|
|
26
12
|
*
|
|
@@ -56,6 +42,13 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
56
42
|
*/
|
|
57
43
|
@service hostRouter;
|
|
58
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Inject the `contextPanel` service
|
|
47
|
+
*
|
|
48
|
+
* @var {Service}
|
|
49
|
+
*/
|
|
50
|
+
@service contextPanel;
|
|
51
|
+
|
|
59
52
|
/**
|
|
60
53
|
* Inject the `filters` service
|
|
61
54
|
*
|
|
@@ -140,19 +133,28 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
140
133
|
*/
|
|
141
134
|
@tracked columns = [
|
|
142
135
|
{
|
|
143
|
-
label:
|
|
144
|
-
|
|
136
|
+
label: 'ID',
|
|
137
|
+
valuePath: 'public_id',
|
|
138
|
+
width: '120px',
|
|
145
139
|
cellComponent: 'table/cell/anchor',
|
|
146
|
-
anchorIcon: 'eye',
|
|
147
|
-
anchorSpanClass: 'hidden',
|
|
148
140
|
action: this.viewFuelReport,
|
|
141
|
+
resizable: true,
|
|
142
|
+
sortable: true,
|
|
143
|
+
filterable: true,
|
|
144
|
+
filterComponent: 'filter/string',
|
|
149
145
|
},
|
|
150
146
|
{
|
|
151
147
|
label: 'Driver',
|
|
152
148
|
valuePath: 'driver_name',
|
|
153
149
|
width: '120px',
|
|
154
150
|
cellComponent: 'table/cell/anchor',
|
|
155
|
-
|
|
151
|
+
onClick: async (fuelReport) => {
|
|
152
|
+
let driver = await fuelReport.loadDriver();
|
|
153
|
+
|
|
154
|
+
if (driver) {
|
|
155
|
+
this.contextPanel.focus(driver);
|
|
156
|
+
}
|
|
157
|
+
},
|
|
156
158
|
resizable: true,
|
|
157
159
|
sortable: true,
|
|
158
160
|
filterable: true,
|
|
@@ -166,7 +168,13 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
166
168
|
valuePath: 'vehicle_name',
|
|
167
169
|
width: '120px',
|
|
168
170
|
cellComponent: 'table/cell/anchor',
|
|
169
|
-
|
|
171
|
+
onClick: async (fuelReport) => {
|
|
172
|
+
let vehicle = await fuelReport.loadVehicle();
|
|
173
|
+
|
|
174
|
+
if (vehicle) {
|
|
175
|
+
this.contextPanel.focus(vehicle);
|
|
176
|
+
}
|
|
177
|
+
},
|
|
170
178
|
resizable: true,
|
|
171
179
|
sortable: true,
|
|
172
180
|
filterable: true,
|
|
@@ -175,17 +183,6 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
175
183
|
filterParam: 'vehicle',
|
|
176
184
|
model: 'vehicle',
|
|
177
185
|
},
|
|
178
|
-
{
|
|
179
|
-
label: 'ID',
|
|
180
|
-
valuePath: 'public_id',
|
|
181
|
-
width: '120px',
|
|
182
|
-
cellComponent: 'table/cell/anchor',
|
|
183
|
-
action: this.viewFuelReport,
|
|
184
|
-
resizable: true,
|
|
185
|
-
sortable: true,
|
|
186
|
-
filterable: true,
|
|
187
|
-
filterComponent: 'filter/string',
|
|
188
|
-
},
|
|
189
186
|
{
|
|
190
187
|
label: 'Country',
|
|
191
188
|
valuePath: 'country',
|
|
@@ -263,24 +260,6 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
263
260
|
},
|
|
264
261
|
];
|
|
265
262
|
|
|
266
|
-
/**
|
|
267
|
-
* Bulk deletes selected `driver` via confirm prompt
|
|
268
|
-
*
|
|
269
|
-
* @param {Array} selected an array of selected models
|
|
270
|
-
* @void
|
|
271
|
-
*/
|
|
272
|
-
@action bulkDeleteFuelReports() {
|
|
273
|
-
const selected = this.table.selectedRows;
|
|
274
|
-
|
|
275
|
-
this.crud.bulkFuelReports(selected, {
|
|
276
|
-
modelNamePath: `name`,
|
|
277
|
-
acceptButtonText: 'Delete Fuel Reports',
|
|
278
|
-
onSuccess: () => {
|
|
279
|
-
return this.hostRouter.refresh();
|
|
280
|
-
},
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
|
|
284
263
|
/**
|
|
285
264
|
* The search task.
|
|
286
265
|
*
|
|
@@ -306,7 +285,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
306
285
|
}
|
|
307
286
|
|
|
308
287
|
/**
|
|
309
|
-
* Toggles dialog to export
|
|
288
|
+
* Toggles dialog to export a fuel report
|
|
310
289
|
*
|
|
311
290
|
* @void
|
|
312
291
|
*/
|
|
@@ -314,105 +293,38 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
314
293
|
this.crud.export('fuel-report');
|
|
315
294
|
}
|
|
316
295
|
|
|
317
|
-
@action async viewDriver(fuelReport) {
|
|
318
|
-
if (!fuelReport.driver_uuid) {
|
|
319
|
-
return this.notifications.warning('No driver attributed to fuel report.');
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
this.loader.show({ loadingMessage: 'Loading...' });
|
|
323
|
-
const driver = await this.store.findRecord('driver', fuelReport.driver_uuid);
|
|
324
|
-
this.loader.removeLoader();
|
|
325
|
-
|
|
326
|
-
// display driver details
|
|
327
|
-
this.drivers.viewDriver(driver);
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
@action async viewVehicle(fuelReport) {
|
|
331
|
-
if (!fuelReport.vehicle_uuid) {
|
|
332
|
-
return this.notifications.warning('No vehicle attributed to fuel report.');
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
this.loader.show({ loadingMessage: 'Loading...' });
|
|
336
|
-
const vehicle = await this.store.findRecord('vehicle', fuelReport.vehicle_uuid);
|
|
337
|
-
this.loader.remove();
|
|
338
|
-
|
|
339
|
-
// display vehicle details
|
|
340
|
-
this.vehicles.viewVehicle(vehicle);
|
|
341
|
-
}
|
|
342
|
-
|
|
343
296
|
/**
|
|
344
|
-
* View
|
|
297
|
+
* View the selected fuel report
|
|
345
298
|
*
|
|
346
299
|
* @param {FuelReportModel} fuelReport
|
|
347
300
|
* @param {Object} options
|
|
348
301
|
* @void
|
|
349
302
|
*/
|
|
350
|
-
@action viewFuelReport(fuelReport
|
|
351
|
-
this.
|
|
352
|
-
title: `Fuel Report - ${fuelReport.createdAt}`,
|
|
353
|
-
hideDeclineButton: true,
|
|
354
|
-
confirmButtonText: 'Done',
|
|
355
|
-
fuelReport,
|
|
356
|
-
...options,
|
|
357
|
-
});
|
|
303
|
+
@action viewFuelReport(fuelReport) {
|
|
304
|
+
this.transitionToRoute('management.fuel-reports.index.details', fuelReport);
|
|
358
305
|
}
|
|
359
306
|
|
|
360
307
|
/**
|
|
361
|
-
* Create a new
|
|
308
|
+
* Create a new fuel report
|
|
362
309
|
*
|
|
363
310
|
* @void
|
|
364
311
|
*/
|
|
365
312
|
@action createFuelReport() {
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
return this.editFuelReport(fuelReport, {
|
|
369
|
-
title: 'New Fuel Report',
|
|
370
|
-
acceptButtonText: 'Confirm & Create',
|
|
371
|
-
acceptButtonIcon: 'check',
|
|
372
|
-
acceptButtonIconPrefix: 'fas',
|
|
373
|
-
successNotification: 'New fuel report created.',
|
|
374
|
-
onConfirm: () => {
|
|
375
|
-
this.hostRouter.refresh();
|
|
376
|
-
},
|
|
377
|
-
});
|
|
313
|
+
this.transitionToRoute('management.fuel-reports.index.new');
|
|
378
314
|
}
|
|
379
315
|
|
|
380
316
|
/**
|
|
381
|
-
* Edit a
|
|
317
|
+
* Edit a fuel report
|
|
382
318
|
*
|
|
383
319
|
* @param {FuelReportModel} fuelReport
|
|
384
|
-
* @param {Object} options
|
|
385
320
|
* @void
|
|
386
321
|
*/
|
|
387
|
-
@action editFuelReport(fuelReport
|
|
388
|
-
this.
|
|
389
|
-
title: 'Edit FuelReport',
|
|
390
|
-
acceptButtonIcon: 'save',
|
|
391
|
-
fuelReport,
|
|
392
|
-
confirm: (modal, done) => {
|
|
393
|
-
modal.startLoading();
|
|
394
|
-
|
|
395
|
-
return fuelReport
|
|
396
|
-
.save()
|
|
397
|
-
.then((fuelReport) => {
|
|
398
|
-
if (typeof options.successNotification === 'function') {
|
|
399
|
-
this.notifications.success(options.successNotification(fuelReport));
|
|
400
|
-
} else {
|
|
401
|
-
this.notifications.success(options.successNotification ?? `Fuel report details updated.`);
|
|
402
|
-
}
|
|
403
|
-
return done();
|
|
404
|
-
})
|
|
405
|
-
.catch((error) => {
|
|
406
|
-
this.notifications.serverError(error);
|
|
407
|
-
modal.stopLoading();
|
|
408
|
-
});
|
|
409
|
-
},
|
|
410
|
-
...options,
|
|
411
|
-
});
|
|
322
|
+
@action editFuelReport(fuelReport) {
|
|
323
|
+
this.transitionToRoute('management.fuel-reports.index.edit', fuelReport);
|
|
412
324
|
}
|
|
413
325
|
|
|
414
326
|
/**
|
|
415
|
-
*
|
|
327
|
+
* Prompt to delete a fuel report
|
|
416
328
|
*
|
|
417
329
|
* @param {FuelReportModel} fuelReport
|
|
418
330
|
* @param {Object} options
|
|
@@ -426,4 +338,22 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
426
338
|
...options,
|
|
427
339
|
});
|
|
428
340
|
}
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Bulk deletes selected fuel report's via confirm prompt
|
|
344
|
+
*
|
|
345
|
+
* @param {Array} selected an array of selected models
|
|
346
|
+
* @void
|
|
347
|
+
*/
|
|
348
|
+
@action bulkDeleteFuelReports() {
|
|
349
|
+
const selected = this.table.selectedRows;
|
|
350
|
+
|
|
351
|
+
this.crud.bulkFuelReports(selected, {
|
|
352
|
+
modelNamePath: `name`,
|
|
353
|
+
acceptButtonText: 'Delete Fuel Reports',
|
|
354
|
+
onSuccess: () => {
|
|
355
|
+
return this.hostRouter.refresh();
|
|
356
|
+
},
|
|
357
|
+
});
|
|
358
|
+
}
|
|
429
359
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import Controller from '@ember/controller';
|
|
2
|
+
import { tracked } from '@glimmer/tracking';
|
|
3
|
+
import { action } from '@ember/object';
|
|
4
|
+
export default class ManagementIssuesIndexDetailsController extends Controller {
|
|
5
|
+
/**
|
|
6
|
+
* The currently active view tab ('details' by default).
|
|
7
|
+
*
|
|
8
|
+
* @type {String}
|
|
9
|
+
* @tracked
|
|
10
|
+
*/
|
|
11
|
+
@tracked view = 'details';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* An array of query parameters to be serialized in the URL.
|
|
15
|
+
*
|
|
16
|
+
* @type {String[]}
|
|
17
|
+
* @tracked
|
|
18
|
+
*/
|
|
19
|
+
@tracked queryParams = ['view'];
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Transitions back to the "management.issues.index" route.
|
|
23
|
+
*
|
|
24
|
+
* @method
|
|
25
|
+
* @action
|
|
26
|
+
* @returns {Transition} The transition object representing the route change.
|
|
27
|
+
*/
|
|
28
|
+
@action transitionBack() {
|
|
29
|
+
return this.transitionToRoute('management.issues.index');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Transitions to the edit view for a specific issue.
|
|
34
|
+
*
|
|
35
|
+
* @method
|
|
36
|
+
* @param {issueModel} issue - The issue to be edited.
|
|
37
|
+
* @action
|
|
38
|
+
* @returns {Transition} The transition object representing the route change.
|
|
39
|
+
*/
|
|
40
|
+
@action onEdit(issue) {
|
|
41
|
+
return this.transitionToRoute('management.issues.index.edit', issue);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Updates the active view tab.
|
|
46
|
+
*
|
|
47
|
+
* @method
|
|
48
|
+
* @param {String} tab - The name of the tab to activate.
|
|
49
|
+
* @action
|
|
50
|
+
*/
|
|
51
|
+
@action onTabChanged(tab) {
|
|
52
|
+
this.view = tab;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -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 ManagementIssuesIndexEditController extends Controller {
|
|
7
|
+
/**
|
|
8
|
+
* Inject the `hostRouter` service
|
|
9
|
+
*
|
|
10
|
+
* @memberof ManagementissuesIndexEditController
|
|
11
|
+
*/
|
|
12
|
+
@service hostRouter;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Inject the `hostRouter` service
|
|
16
|
+
*
|
|
17
|
+
* @memberof ManagementissuesIndexEditController
|
|
18
|
+
*/
|
|
19
|
+
@service modalsManager;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The overlay component context.
|
|
23
|
+
*
|
|
24
|
+
* @memberof ManagementissuesIndexEditController
|
|
25
|
+
*/
|
|
26
|
+
@tracked overlay;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* When exiting the overlay.
|
|
30
|
+
*
|
|
31
|
+
* @return {Transition}
|
|
32
|
+
* @memberof ManagementissuesIndexEditController
|
|
33
|
+
*/
|
|
34
|
+
@action transitionBack(issue) {
|
|
35
|
+
// check if issue record has been edited and prompt for confirmation
|
|
36
|
+
if (issue.hasDirtyAttributes) {
|
|
37
|
+
return this.confirmContinueWithUnsavedChanges(issue, {
|
|
38
|
+
confirm: () => {
|
|
39
|
+
issue.rollbackAttributes();
|
|
40
|
+
return this.transitionToRoute('management.issues.index');
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return this.transitionToRoute('management.issues.index');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Set the overlay component context object.
|
|
50
|
+
*
|
|
51
|
+
* @param {OverlayContext} overlay
|
|
52
|
+
* @memberof ManagementissuesIndexEditController
|
|
53
|
+
*/
|
|
54
|
+
@action setOverlayContext(overlay) {
|
|
55
|
+
this.overlay = overlay;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* When issue details button is clicked in overlay.
|
|
60
|
+
*
|
|
61
|
+
* @param {IssueModel} issue
|
|
62
|
+
* @return {Promise}
|
|
63
|
+
* @memberof ManagementissuesIndexEditController
|
|
64
|
+
*/
|
|
65
|
+
@action onViewDetails(issue) {
|
|
66
|
+
// check if issue record has been edited and prompt for confirmation
|
|
67
|
+
if (issue.hasDirtyAttributes) {
|
|
68
|
+
return this.confirmContinueWithUnsavedChanges(issue);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return this.transitionToRoute('management.issues.index.details', issue);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Trigger a route refresh and focus the new issue created.
|
|
76
|
+
*
|
|
77
|
+
* @param {IssueModel} issue
|
|
78
|
+
* @return {Promise}
|
|
79
|
+
* @memberof ManagementissuesIndexEditController
|
|
80
|
+
*/
|
|
81
|
+
@action onAfterSave(issue) {
|
|
82
|
+
if (this.overlay) {
|
|
83
|
+
this.overlay.close();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
this.hostRouter.refresh();
|
|
87
|
+
return this.transitionToRoute('management.issues.index.details', issue);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Prompts the user to confirm if they wish to continue with unsaved changes.
|
|
92
|
+
*
|
|
93
|
+
* @method
|
|
94
|
+
* @param {IssueModel} issue - The issue 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 ManagementissuesIndexEditController
|
|
98
|
+
*/
|
|
99
|
+
confirmContinueWithUnsavedChanges(issue, options = {}) {
|
|
100
|
+
return this.modalsManager.confirm({
|
|
101
|
+
title: 'Continue Without Saving?',
|
|
102
|
+
body: 'Unsaved changes to this issue will be lost. Click continue to proceed.',
|
|
103
|
+
acceptButtonText: 'Continue without saving',
|
|
104
|
+
confirm: () => {
|
|
105
|
+
issue.rollbackAttributes();
|
|
106
|
+
return this.transitionToRoute('management.issues.index.details', issue);
|
|
107
|
+
},
|
|
108
|
+
...options,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
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
|
+
export default class ManagementIssuesIndexNewController extends Controller {
|
|
6
|
+
/**
|
|
7
|
+
* Inject the `store` service
|
|
8
|
+
*
|
|
9
|
+
* @memberof ManagementissuesIndexNewController
|
|
10
|
+
*/
|
|
11
|
+
@service store;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Inject the `hostRouter` service
|
|
15
|
+
*
|
|
16
|
+
* @memberof ManagementissuesIndexNewController
|
|
17
|
+
*/
|
|
18
|
+
@service hostRouter;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Inject the `currentUser` service
|
|
22
|
+
*
|
|
23
|
+
* @memberof ManagementissuesIndexNewController
|
|
24
|
+
*/
|
|
25
|
+
@service currentUser;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Inject the `hostRouter` service
|
|
29
|
+
*
|
|
30
|
+
* @memberof ManagementissuesIndexNewController
|
|
31
|
+
*/
|
|
32
|
+
@service modalsManager;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The overlay component context.
|
|
36
|
+
*
|
|
37
|
+
* @memberof ManagementissuesIndexNewController
|
|
38
|
+
*/
|
|
39
|
+
@tracked overlay;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The issue being created.
|
|
43
|
+
*
|
|
44
|
+
* @var {issueModel}
|
|
45
|
+
*/
|
|
46
|
+
@tracked issue = this.store.createRecord('issue', { reporter: this.currentUser.user, status: 'pending', priority: 'low' });
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Set the overlay component context object.
|
|
50
|
+
*
|
|
51
|
+
* @param {OverlayContext} overlay
|
|
52
|
+
* @memberof ManagementissuesIndexNewController
|
|
53
|
+
*/
|
|
54
|
+
@action setOverlayContext(overlay) {
|
|
55
|
+
this.overlay = overlay;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* When exiting the overlay.
|
|
60
|
+
*
|
|
61
|
+
* @return {Transition}
|
|
62
|
+
* @memberof ManagementissuesIndexNewController
|
|
63
|
+
*/
|
|
64
|
+
@action transitionBack() {
|
|
65
|
+
return this.transitionToRoute('management.issues.index');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Trigger a route refresh and focus the new issue created.
|
|
70
|
+
*
|
|
71
|
+
* @param {issueModel} issue
|
|
72
|
+
* @return {Promise}
|
|
73
|
+
* @memberof ManagementissuesIndexNewController
|
|
74
|
+
*/
|
|
75
|
+
@action onAfterSave(issue) {
|
|
76
|
+
if (this.overlay) {
|
|
77
|
+
this.overlay.close();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
this.hostRouter.refresh();
|
|
81
|
+
return this.transitionToRoute('management.issues.index.details', issue).then(() => {
|
|
82
|
+
this.resetForm();
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Resets the form with a new issue record
|
|
88
|
+
*
|
|
89
|
+
* @memberof ManagementissuesIndexNewController
|
|
90
|
+
*/
|
|
91
|
+
resetForm() {
|
|
92
|
+
this.issue = this.store.createRecord('issue', { reporter: this.currentUser.user, status: 'pending', priority: 'low' });
|
|
93
|
+
}
|
|
94
|
+
}
|