@fleetbase/fleetops-engine 0.2.3 → 0.2.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.
- package/addon/components/driver-form-panel.hbs +131 -0
- package/addon/components/driver-form-panel.js +39 -0
- package/addon/components/driver-panel/details.hbs +48 -0
- package/addon/components/driver-panel.hbs +60 -0
- package/addon/components/driver-panel.js +57 -0
- package/addon/components/fleet-form-panel.hbs +46 -0
- package/addon/components/fleet-form-panel.js +3 -0
- package/addon/components/fleet-panel.hbs +70 -0
- package/addon/components/fleet-panel.js +43 -0
- package/addon/components/fleet-vehicle-listing.hbs +73 -0
- package/addon/components/fleet-vehicle-listing.js +117 -0
- package/addon/components/live-map.js +13 -10
- package/addon/components/modals/fleet-details.hbs +1 -0
- package/addon/components/settings-window.hbs +1 -1
- package/addon/components/vehicle-form-panel.hbs +131 -0
- package/addon/components/vehicle-form-panel.js +39 -0
- package/addon/components/vehicle-panel/details.hbs +34 -0
- package/addon/components/vehicle-panel/tracking.hbs +1 -0
- package/addon/components/vehicle-panel.hbs +60 -0
- package/addon/components/vehicle-panel.js +57 -0
- package/addon/controllers/management/drivers/index/details.js +8 -0
- package/addon/controllers/management/drivers/index/edit.js +80 -0
- package/addon/controllers/management/drivers/index/new.js +128 -0
- package/addon/controllers/management/drivers/index.js +212 -202
- package/addon/controllers/management/fleets/index/details.js +8 -0
- package/addon/controllers/management/fleets/index/edit.js +77 -0
- package/addon/controllers/management/fleets/index/new.js +103 -0
- package/addon/controllers/management/fleets/index.js +49 -77
- package/addon/controllers/management/vehicles/index/details.js +12 -0
- package/addon/controllers/management/vehicles/index/edit.js +8 -0
- package/addon/controllers/management/vehicles/index/new.js +21 -0
- package/addon/controllers/management/vehicles/index.js +6 -129
- package/addon/controllers/operations/service-rates/index.js +0 -1
- package/addon/engine.js +6 -0
- package/addon/routes/management/drivers/index/details.js +9 -0
- package/addon/routes/management/drivers/index/edit.js +13 -0
- package/addon/routes/management/drivers/index/new.js +3 -0
- package/addon/routes/management/fleets/index/details.js +9 -0
- package/addon/routes/management/fleets/index/edit.js +9 -0
- package/addon/routes/management/fleets/index/new.js +3 -0
- package/addon/routes/management/fleets/index.js +1 -0
- package/addon/routes/management/vehicles/index/details.js +18 -0
- package/addon/routes/management/vehicles/index/edit.js +14 -0
- package/addon/routes/management/vehicles/index/new.js +3 -0
- package/addon/routes/operations/orders/index/view.js +5 -1
- package/addon/routes/operations/service-rates/index/edit.js +1 -1
- package/addon/routes.js +15 -3
- package/addon/templates/management/drivers/index/details.hbs +1 -0
- package/addon/templates/management/drivers/index/edit.hbs +1 -0
- package/addon/templates/management/drivers/index/new.hbs +1 -0
- package/addon/templates/management/drivers/index.hbs +3 -1
- package/addon/templates/management/fleets/index/details.hbs +1 -0
- package/addon/templates/management/fleets/index/edit.hbs +1 -0
- package/addon/templates/management/fleets/index/new.hbs +1 -0
- package/addon/templates/management/vehicles/index/details.hbs +1 -0
- package/addon/templates/management/vehicles/index/edit.hbs +1 -0
- package/addon/templates/management/vehicles/index/new.hbs +1 -0
- package/addon/templates/operations/orders/index/new.hbs +1 -1
- package/addon/templates/operations/service-rates/index/new.hbs +2 -2
- package/app/components/driver-form-panel.js +1 -0
- package/app/components/driver-panel/details.js +1 -0
- package/app/components/driver-panel.js +1 -0
- package/app/components/fleet-form-panel.js +1 -0
- package/app/components/fleet-panel.js +1 -0
- package/app/components/fleet-vehicle-listing.js +1 -0
- package/app/components/vehicle-form-panel.js +1 -0
- package/app/components/vehicle-panel/details.js +1 -0
- package/app/components/vehicle-panel/tracking.js +1 -0
- package/app/components/vehicle-panel.js +1 -0
- package/app/controllers/management/drivers/index/new.js +1 -0
- package/app/controllers/management/vehicles/index/details.js +1 -0
- package/app/controllers/management/vehicles/index/new.js +1 -0
- package/app/routes/management/drivers/index/details.js +1 -0
- package/app/routes/management/drivers/index/edit.js +1 -0
- package/app/routes/management/drivers/index/new.js +1 -0
- package/app/routes/management/vehicles/index/details.js +1 -0
- package/app/routes/management/vehicles/index/edit.js +1 -0
- package/app/routes/management/vehicles/index/new.js +1 -0
- package/app/templates/management/drivers/index/details.js +1 -0
- package/app/templates/management/drivers/index/edit.js +1 -0
- package/app/templates/management/drivers/index/new.js +1 -0
- package/app/templates/management/vehicles/index/details.js +1 -0
- package/app/templates/management/vehicles/index/edit.js +1 -0
- package/app/templates/management/vehicles/index/new.js +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import Controller, { inject as 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 ManagementFleetsIndexNewController extends Controller {
|
|
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
|
|
16
|
+
*
|
|
17
|
+
* @var {Service}
|
|
18
|
+
*/
|
|
19
|
+
@service store;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Inject the `hostRouter` service
|
|
23
|
+
*
|
|
24
|
+
* @var {Service}
|
|
25
|
+
*/
|
|
26
|
+
@service hostRouter;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Inject the `notifications` service
|
|
30
|
+
*
|
|
31
|
+
* @var {Service}
|
|
32
|
+
*/
|
|
33
|
+
@service notifications;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Inject the `loader` service
|
|
37
|
+
*
|
|
38
|
+
* @var {Service}
|
|
39
|
+
*/
|
|
40
|
+
@service loader;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The fleet being created.
|
|
44
|
+
*
|
|
45
|
+
* @var {FleetModel}
|
|
46
|
+
*/
|
|
47
|
+
@tracked fleet = this.store.createRecord('fleet', { status: 'active' });
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* True if creating fleet.
|
|
51
|
+
*
|
|
52
|
+
* @var {Boolean}
|
|
53
|
+
*/
|
|
54
|
+
@tracked isCreatingFleet = false;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Saves the fleet to server
|
|
58
|
+
*
|
|
59
|
+
* @void
|
|
60
|
+
*/
|
|
61
|
+
@action createFleet() {
|
|
62
|
+
const { fleet } = this;
|
|
63
|
+
|
|
64
|
+
this.isCreatingFleet = true;
|
|
65
|
+
this.loader.showLoader('.overlay-inner-content', '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
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Resets the driver form
|
|
93
|
+
*
|
|
94
|
+
* @void
|
|
95
|
+
*/
|
|
96
|
+
@action resetForm() {
|
|
97
|
+
this.fleet = this.store.createRecord('fleet');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@action transitionBack() {
|
|
101
|
+
return this.transitionToRoute('management.fleets.index');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -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', 'created_by', 'updated_by', 'status'];
|
|
78
|
+
queryParams = ['page', 'limit', 'sort', 'query', 'public_id', 'internal_id', 'zone', 'service_area', 'parent_fleet', 'vendor', 'created_by', 'updated_by', 'status'];
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
81
|
* The current page of data being viewed
|
|
@@ -118,6 +118,18 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
118
118
|
* @var {String}
|
|
119
119
|
*/
|
|
120
120
|
@tracked service_area;
|
|
121
|
+
/**
|
|
122
|
+
* The filterable param `parent_fleet`
|
|
123
|
+
*
|
|
124
|
+
* @var {String}
|
|
125
|
+
*/
|
|
126
|
+
@tracked parent_fleet;
|
|
127
|
+
/**
|
|
128
|
+
* The filterable param `vendor`
|
|
129
|
+
*
|
|
130
|
+
* @var {String}
|
|
131
|
+
*/
|
|
132
|
+
@tracked vendor;
|
|
121
133
|
|
|
122
134
|
/**
|
|
123
135
|
* The filterable param `zone`
|
|
@@ -184,6 +196,32 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
184
196
|
filterParam: 'service_area',
|
|
185
197
|
model: 'service-area',
|
|
186
198
|
},
|
|
199
|
+
{
|
|
200
|
+
label: 'Parent Fleet',
|
|
201
|
+
cellComponent: 'table/cell/anchor',
|
|
202
|
+
// action: this.viewServiceArea.bind(this),
|
|
203
|
+
valuePath: 'parent_fleet.name',
|
|
204
|
+
resizable: true,
|
|
205
|
+
width: '130px',
|
|
206
|
+
filterable: true,
|
|
207
|
+
filterComponent: 'filter/model',
|
|
208
|
+
filterComponentPlaceholder: 'Select fleet',
|
|
209
|
+
filterParam: 'parent_fleet',
|
|
210
|
+
model: 'fleet',
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
label: 'Vendor',
|
|
214
|
+
cellComponent: 'table/cell/anchor',
|
|
215
|
+
action: this.viewServiceArea.bind(this),
|
|
216
|
+
valuePath: 'vendor.name',
|
|
217
|
+
resizable: true,
|
|
218
|
+
width: '130px',
|
|
219
|
+
filterable: true,
|
|
220
|
+
filterComponent: 'filter/model',
|
|
221
|
+
filterComponentPlaceholder: 'Select vendor',
|
|
222
|
+
filterParam: 'vendor',
|
|
223
|
+
model: 'vendor',
|
|
224
|
+
},
|
|
187
225
|
{
|
|
188
226
|
label: 'Zone',
|
|
189
227
|
cellComponent: 'table/cell/anchor',
|
|
@@ -293,6 +331,10 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
293
331
|
label: 'View fleet details...',
|
|
294
332
|
fn: this.viewFleet,
|
|
295
333
|
},
|
|
334
|
+
{
|
|
335
|
+
label: 'Edit fleet details...',
|
|
336
|
+
fn: this.editFleet,
|
|
337
|
+
},
|
|
296
338
|
{
|
|
297
339
|
label: 'Assign driver to fleet...',
|
|
298
340
|
fn: () => {},
|
|
@@ -370,47 +412,8 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
370
412
|
* @param {Object} options
|
|
371
413
|
* @void
|
|
372
414
|
*/
|
|
373
|
-
@action viewFleet(fleet
|
|
374
|
-
this.
|
|
375
|
-
title: fleet.name,
|
|
376
|
-
titleComponent: 'modal/title-with-buttons',
|
|
377
|
-
headerStatus: fleet.status,
|
|
378
|
-
headerButtons: [
|
|
379
|
-
{
|
|
380
|
-
icon: 'cog',
|
|
381
|
-
iconPrefix: 'fas',
|
|
382
|
-
type: 'link',
|
|
383
|
-
size: 'xs',
|
|
384
|
-
ddMenuLabel: 'Fleet Actions',
|
|
385
|
-
options: [
|
|
386
|
-
{
|
|
387
|
-
title: 'Edit fleet details...',
|
|
388
|
-
action: () => {
|
|
389
|
-
this.modalsManager.done().then(() => {
|
|
390
|
-
return this.editFleet(fleet, {
|
|
391
|
-
onFinish: () => {
|
|
392
|
-
this.viewFleet(fleet);
|
|
393
|
-
},
|
|
394
|
-
});
|
|
395
|
-
});
|
|
396
|
-
},
|
|
397
|
-
},
|
|
398
|
-
],
|
|
399
|
-
},
|
|
400
|
-
],
|
|
401
|
-
acceptButtonText: 'Done',
|
|
402
|
-
acceptButtonIcon: 'check',
|
|
403
|
-
acceptButtonIconPrefix: 'fas',
|
|
404
|
-
hideDeclineButton: true,
|
|
405
|
-
fleet,
|
|
406
|
-
addDriver: (driver) => {
|
|
407
|
-
this.fetch.post('fleets/add', { driver: driver.id, fleet: fleet.id });
|
|
408
|
-
},
|
|
409
|
-
removeDriver: (driver) => {
|
|
410
|
-
this.fetch.post('fleets/remove', { driver: driver.id, fleet: fleet.id });
|
|
411
|
-
},
|
|
412
|
-
...options,
|
|
413
|
-
});
|
|
415
|
+
@action viewFleet(fleet) {
|
|
416
|
+
return this.transitionToRoute('management.fleets.index.details', fleet);
|
|
414
417
|
}
|
|
415
418
|
|
|
416
419
|
/**
|
|
@@ -420,15 +423,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
420
423
|
* @void
|
|
421
424
|
*/
|
|
422
425
|
@action createFleet() {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
return this.editFleet(fleet, {
|
|
426
|
-
title: 'New Fleet',
|
|
427
|
-
acceptButtonText: 'Confirm & Create',
|
|
428
|
-
acceptButtonIcon: 'check',
|
|
429
|
-
acceptButtonIconPrefix: 'fas',
|
|
430
|
-
successNotification: (fleet) => `New fleet (${fleet.name}) created.`,
|
|
431
|
-
});
|
|
426
|
+
return this.transitionToRoute('management.fleets.index.new');
|
|
432
427
|
}
|
|
433
428
|
|
|
434
429
|
/**
|
|
@@ -438,32 +433,9 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
438
433
|
* @param {Object} options
|
|
439
434
|
* @void
|
|
440
435
|
*/
|
|
441
|
-
@action editFleet(fleet
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
acceptButtonText: 'Save Changes',
|
|
445
|
-
acceptButtonIcon: 'save',
|
|
446
|
-
declineButtonIcon: 'times',
|
|
447
|
-
declineButtonIconPrefix: 'fas',
|
|
448
|
-
statusOptions: this.statusOptions,
|
|
449
|
-
fleet,
|
|
450
|
-
confirm: (modal) => {
|
|
451
|
-
modal.startLoading();
|
|
452
|
-
|
|
453
|
-
return fleet
|
|
454
|
-
.save()
|
|
455
|
-
.then((fleet) => {
|
|
456
|
-
this.notifications.invoke('success', options.successNotification ?? `${fleet.name} details updated.`, fleet);
|
|
457
|
-
|
|
458
|
-
return this.hostRouter.refresh();
|
|
459
|
-
})
|
|
460
|
-
.catch((error) => {
|
|
461
|
-
modal.stopLoading();
|
|
462
|
-
this.notifications.serverError(error);
|
|
463
|
-
});
|
|
464
|
-
},
|
|
465
|
-
...options,
|
|
466
|
-
});
|
|
436
|
+
@action editFleet(fleet) {
|
|
437
|
+
console.log('xxx', fleet);
|
|
438
|
+
return this.transitionToRoute('management.fleets.index.edit', fleet);
|
|
467
439
|
}
|
|
468
440
|
|
|
469
441
|
/**
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Controller from '@ember/controller';
|
|
2
|
+
import { tracked } from '@glimmer/tracking';
|
|
3
|
+
import { action } from '@ember/object';
|
|
4
|
+
|
|
5
|
+
export default class ManagementVehiclesIndexDetailsController extends Controller {
|
|
6
|
+
@tracked view = 'details';
|
|
7
|
+
@tracked queryParams = ['view'];
|
|
8
|
+
|
|
9
|
+
@action transitionBack() {
|
|
10
|
+
return this.transitionToRoute('management.vehicles.index');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import Controller from '@ember/controller';
|
|
2
|
+
import { action } from '@ember/object';
|
|
3
|
+
|
|
4
|
+
export default class ManagementVehiclesIndexEditController extends Controller {
|
|
5
|
+
@action transitionBack() {
|
|
6
|
+
return this.transitionToRoute('management.vehicles.index');
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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 ManagementVehiclesIndexNewController extends Controller {
|
|
7
|
+
@service store;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The vehicle being created.
|
|
11
|
+
*
|
|
12
|
+
* @var {VehicleModel}
|
|
13
|
+
*/
|
|
14
|
+
@tracked vehicle = this.store.createRecord('vehicle', {
|
|
15
|
+
status: `active`,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
@action transitionBack() {
|
|
19
|
+
return this.transitionToRoute('management.vehicles.index');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -6,8 +6,6 @@ import { action } from '@ember/object';
|
|
|
6
6
|
import { isBlank } from '@ember/utils';
|
|
7
7
|
import { timeout } from 'ember-concurrency';
|
|
8
8
|
import { task } from 'ember-concurrency-decorators';
|
|
9
|
-
import withDefaultValue from '@fleetbase/ember-core/utils/with-default-value';
|
|
10
|
-
import generateSlug from '@fleetbase/ember-core/utils/generate-slug';
|
|
11
9
|
|
|
12
10
|
export default class ManagementVehiclesIndexController extends ManagementController {
|
|
13
11
|
/**
|
|
@@ -217,6 +215,7 @@ export default class ManagementVehiclesIndexController extends ManagementControl
|
|
|
217
215
|
filterable: true,
|
|
218
216
|
filterComponent: 'filter/string',
|
|
219
217
|
filterParam: 'name',
|
|
218
|
+
showOnlineIndicator: true,
|
|
220
219
|
},
|
|
221
220
|
{
|
|
222
221
|
label: 'Plate Number',
|
|
@@ -441,73 +440,8 @@ export default class ManagementVehiclesIndexController extends ManagementControl
|
|
|
441
440
|
* @param {Object} options
|
|
442
441
|
* @void
|
|
443
442
|
*/
|
|
444
|
-
@action
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
this.modalsManager.show('modals/vehicle-details', {
|
|
448
|
-
title: withDefaultValue(vehicle.display_name),
|
|
449
|
-
titleComponent: 'modal/title-with-buttons',
|
|
450
|
-
modalClass: 'modal-lg',
|
|
451
|
-
acceptButtonText: 'Done',
|
|
452
|
-
headerButtons: [
|
|
453
|
-
{
|
|
454
|
-
icon: 'cog',
|
|
455
|
-
iconPrefix: 'fas',
|
|
456
|
-
type: 'link',
|
|
457
|
-
size: 'xs',
|
|
458
|
-
ddMenuLabel: 'Vehicle Actions',
|
|
459
|
-
options: [
|
|
460
|
-
{
|
|
461
|
-
title: 'Edit vehicle details...',
|
|
462
|
-
action: () => {
|
|
463
|
-
this.modalsManager.done().then(() => {
|
|
464
|
-
return this.editVehicle(vehicle, {
|
|
465
|
-
onFinish: () => {
|
|
466
|
-
this.viewVehicle(vehicle);
|
|
467
|
-
},
|
|
468
|
-
});
|
|
469
|
-
});
|
|
470
|
-
},
|
|
471
|
-
},
|
|
472
|
-
{
|
|
473
|
-
title: 'Assign driver to vehicle...',
|
|
474
|
-
action: () => {
|
|
475
|
-
this.modalsManager.done().then(() => {
|
|
476
|
-
return this.assignDriver(vehicle, {
|
|
477
|
-
onFinish: () => {
|
|
478
|
-
this.viewVehicle(vehicle);
|
|
479
|
-
},
|
|
480
|
-
});
|
|
481
|
-
});
|
|
482
|
-
},
|
|
483
|
-
},
|
|
484
|
-
{
|
|
485
|
-
title: 'Delete vehicle...',
|
|
486
|
-
action: () => {
|
|
487
|
-
this.modalsManager.done().then(() => {
|
|
488
|
-
return this.deleteVehicle(vehicle, {
|
|
489
|
-
onDecline: () => {
|
|
490
|
-
this.viewVehicle(vehicle);
|
|
491
|
-
},
|
|
492
|
-
});
|
|
493
|
-
});
|
|
494
|
-
},
|
|
495
|
-
},
|
|
496
|
-
],
|
|
497
|
-
},
|
|
498
|
-
],
|
|
499
|
-
viewDriver: (driver) => {
|
|
500
|
-
this.modalsManager.done().then(() => {
|
|
501
|
-
return this.drivers.viewDriver(driver, {
|
|
502
|
-
onFinish: () => {
|
|
503
|
-
this.viewVehicle(vehicle);
|
|
504
|
-
},
|
|
505
|
-
});
|
|
506
|
-
});
|
|
507
|
-
},
|
|
508
|
-
vehicle,
|
|
509
|
-
...options,
|
|
510
|
-
});
|
|
443
|
+
@action viewVehicle(vehicle) {
|
|
444
|
+
return this.transitionToRoute('management.vehicles.index.details', vehicle);
|
|
511
445
|
}
|
|
512
446
|
|
|
513
447
|
/**
|
|
@@ -517,21 +451,7 @@ export default class ManagementVehiclesIndexController extends ManagementControl
|
|
|
517
451
|
* @void
|
|
518
452
|
*/
|
|
519
453
|
@action createVehicle() {
|
|
520
|
-
|
|
521
|
-
status: 'active',
|
|
522
|
-
slug: generateSlug(),
|
|
523
|
-
});
|
|
524
|
-
|
|
525
|
-
return this.editVehicle(vehicle, {
|
|
526
|
-
title: 'New Vehicle',
|
|
527
|
-
acceptButtonText: 'Confirm & Create',
|
|
528
|
-
acceptButtonIcon: 'check',
|
|
529
|
-
acceptButtonIconPrefix: 'fas',
|
|
530
|
-
// successNotification: `New vehicle (${vehicle.name}) created.`,
|
|
531
|
-
onConfirm: () => {
|
|
532
|
-
return this.hostRouter.refresh();
|
|
533
|
-
},
|
|
534
|
-
});
|
|
454
|
+
return this.transitionToRoute('management.vehicles.index.new');
|
|
535
455
|
}
|
|
536
456
|
|
|
537
457
|
/**
|
|
@@ -541,51 +461,8 @@ export default class ManagementVehiclesIndexController extends ManagementControl
|
|
|
541
461
|
* @param {Object} options
|
|
542
462
|
* @void
|
|
543
463
|
*/
|
|
544
|
-
@action
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
this.modalsManager.show('modals/vehicle-form', {
|
|
548
|
-
title: 'Edit Vehicle',
|
|
549
|
-
acceptButtonText: 'Save Changes',
|
|
550
|
-
acceptButtonIcon: 'save',
|
|
551
|
-
modalClass: 'modal-lg',
|
|
552
|
-
vehicle,
|
|
553
|
-
uploadNewPhoto: (file) => {
|
|
554
|
-
this.fetch.uploadFile.perform(
|
|
555
|
-
file,
|
|
556
|
-
{
|
|
557
|
-
path: `uploads/${this.currentUser.companyId}/vehicles/${vehicle.slug}`,
|
|
558
|
-
subject_uuid: vehicle.id,
|
|
559
|
-
subject_type: `vehicle`,
|
|
560
|
-
type: `vehicle_photo`,
|
|
561
|
-
},
|
|
562
|
-
(uploadedFile) => {
|
|
563
|
-
vehicle.setProperties({
|
|
564
|
-
photo_uuid: uploadedFile.id,
|
|
565
|
-
photo_url: uploadedFile.url,
|
|
566
|
-
photo: uploadedFile,
|
|
567
|
-
});
|
|
568
|
-
}
|
|
569
|
-
);
|
|
570
|
-
},
|
|
571
|
-
confirm: (modal, done) => {
|
|
572
|
-
modal.startLoading();
|
|
573
|
-
|
|
574
|
-
vehicle
|
|
575
|
-
.save()
|
|
576
|
-
.then((vehicle) => {
|
|
577
|
-
this.notifications.success(options.successNotification ?? `${vehicle.name} details updated.`);
|
|
578
|
-
})
|
|
579
|
-
.catch((error) => {
|
|
580
|
-
modal.stopLoading();
|
|
581
|
-
this.notifications.serverError(error);
|
|
582
|
-
})
|
|
583
|
-
.finally(() => {
|
|
584
|
-
done();
|
|
585
|
-
});
|
|
586
|
-
},
|
|
587
|
-
...options,
|
|
588
|
-
});
|
|
464
|
+
@action editVehicle(vehicle) {
|
|
465
|
+
return this.transitionToRoute('management.vehicles.index.edit', vehicle);
|
|
589
466
|
}
|
|
590
467
|
|
|
591
468
|
/**
|
package/addon/engine.js
CHANGED
|
@@ -17,6 +17,12 @@ export default class FleetOpsEngine extends Engine {
|
|
|
17
17
|
setupExtension = function (app, engine, universe) {
|
|
18
18
|
// register menu item in header
|
|
19
19
|
universe.registerHeaderMenuItem('Fleet-Ops', 'console.fleet-ops', { icon: 'route', priority: 0 });
|
|
20
|
+
|
|
21
|
+
// register the vehicle panel
|
|
22
|
+
universe.createRegistry('component:vehicle-panel');
|
|
23
|
+
|
|
24
|
+
// register the driver panel
|
|
25
|
+
universe.createRegistry('component:driver-panel');
|
|
20
26
|
};
|
|
21
27
|
}
|
|
22
28
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
export default class ManagementDriversIndexDetailsRoute extends Route {
|
|
4
|
+
@service store;
|
|
5
|
+
|
|
6
|
+
model({ public_id }) {
|
|
7
|
+
return this.store.findRecord('driver', public_id);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
export default class ManagementDriversIndexEditRoute extends Route {
|
|
4
|
+
@service store;
|
|
5
|
+
|
|
6
|
+
model({ public_id }) {
|
|
7
|
+
return this.store.findRecord('driver', public_id);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
async setupController(controller, model) {
|
|
11
|
+
controller.driver = model;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
export default class ManagementFleetsIndexDetailsRoute extends Route {
|
|
4
|
+
@service store;
|
|
5
|
+
|
|
6
|
+
model({ public_id }) {
|
|
7
|
+
return this.store.findRecord('fleet', public_id);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
export default class ManagementFleetsIndexEditRoute extends Route {
|
|
4
|
+
@service store;
|
|
5
|
+
|
|
6
|
+
model({ public_id }) {
|
|
7
|
+
return this.store.findRecord('fleet', public_id);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementVehiclesIndexDetailsRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
queryParams = {
|
|
8
|
+
view: { refreshModel: false },
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
model({ public_id }) {
|
|
12
|
+
return this.store.findRecord('vehicle', public_id);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
afterModel(model) {
|
|
16
|
+
model.loadDriver();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementVehiclesIndexEditRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
model({ public_id }) {
|
|
8
|
+
return this.store.findRecord('vehicle', public_id);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
afterModel(model) {
|
|
12
|
+
model.loadDriver();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -14,7 +14,7 @@ export default class OperationsOrdersIndexViewRoute extends Route {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
@action error(error
|
|
17
|
+
@action error(error) {
|
|
18
18
|
this.notifications.serverError(error);
|
|
19
19
|
return this.transitionTo('operations.orders.index');
|
|
20
20
|
}
|
|
@@ -59,6 +59,10 @@ export default class OperationsOrdersIndexViewRoute extends Route {
|
|
|
59
59
|
(async () => {
|
|
60
60
|
for await (let output of channel) {
|
|
61
61
|
this.refresh();
|
|
62
|
+
|
|
63
|
+
if (typeof this.onOrderEvent === 'function') {
|
|
64
|
+
this.onOrderEvent(output);
|
|
65
|
+
}
|
|
62
66
|
}
|
|
63
67
|
})();
|
|
64
68
|
|
|
@@ -9,7 +9,7 @@ export default class OperationsServiceRatesIndexEditRoute extends Route {
|
|
|
9
9
|
|
|
10
10
|
templateName = 'operations.service-rates.index.new';
|
|
11
11
|
|
|
12
|
-
@action error(error
|
|
12
|
+
@action error(error) {
|
|
13
13
|
this.notifications.serverError(error);
|
|
14
14
|
return this.transitionTo('operations.service-rates.index');
|
|
15
15
|
}
|