@fleetbase/fleetops-engine 0.6.35 → 0.6.36
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/avatar-manager.hbs +86 -0
- package/addon/components/avatar-manager.js +165 -0
- package/addon/components/customer/create-order-form.js +5 -0
- package/addon/components/layout/fleet-ops-sidebar.js +8 -0
- package/addon/components/order-progress-card.js +1 -1
- package/addon/controllers/analytics/reports/index/edit.js +2 -0
- package/addon/controllers/analytics/reports/index/new.js +2 -0
- package/addon/controllers/connectivity/devices/index/edit.js +2 -0
- package/addon/controllers/connectivity/devices/index/new.js +2 -0
- package/addon/controllers/connectivity/sensors/index/edit.js +2 -0
- package/addon/controllers/connectivity/sensors/index/new.js +2 -0
- package/addon/controllers/connectivity/telematics/index/edit.js +2 -0
- package/addon/controllers/connectivity/telematics/index/new.js +2 -0
- package/addon/controllers/management/contacts/customers/edit.js +2 -0
- package/addon/controllers/management/contacts/customers/new.js +2 -0
- package/addon/controllers/management/contacts/index/edit.js +2 -0
- package/addon/controllers/management/contacts/index/new.js +2 -0
- package/addon/controllers/management/drivers/index/edit.js +2 -0
- package/addon/controllers/management/drivers/index/new.js +2 -0
- package/addon/controllers/management/fleets/index/edit.js +2 -0
- package/addon/controllers/management/fleets/index/new.js +2 -0
- package/addon/controllers/management/fuel-reports/index/edit.js +2 -0
- package/addon/controllers/management/fuel-reports/index/new.js +2 -0
- package/addon/controllers/management/issues/index/edit.js +2 -0
- package/addon/controllers/management/issues/index/new.js +2 -0
- package/addon/controllers/management/places/index/edit.js +2 -0
- package/addon/controllers/management/places/index/new.js +2 -0
- package/addon/controllers/management/vehicles/index/edit.js +2 -0
- package/addon/controllers/management/vehicles/index/new.js +2 -0
- package/addon/controllers/management/vendors/index/edit.js +2 -0
- package/addon/controllers/management/vendors/index/new.js +2 -0
- package/addon/controllers/operations/orders/index/new.js +2 -0
- package/addon/controllers/operations/routes/index/new.js +1 -0
- package/addon/controllers/operations/service-rates/index/edit.js +2 -0
- package/addon/controllers/operations/service-rates/index/new.js +2 -0
- package/addon/controllers/settings/avatars.js +3 -0
- package/addon/extension.js +0 -5
- package/addon/routes/settings/avatars.js +3 -0
- package/addon/routes.js +1 -0
- package/addon/templates/operations/orders/index/new.hbs +1 -0
- package/addon/templates/settings/avatars.hbs +10 -0
- package/app/components/avatar-manager.js +1 -0
- package/app/controllers/settings/avatars.js +1 -0
- package/app/routes/settings/avatars.js +1 -0
- package/app/templates/settings/avatars.js +1 -0
- package/composer.json +1 -1
- package/extension.json +1 -1
- package/package.json +3 -3
- package/server/config/fleetops.php +1 -1
- package/server/src/Auth/Schemas/FleetOps.php +4 -0
- package/server/src/Expansions/UserFilterExpansion.php +31 -0
- package/server/src/Http/Controllers/Internal/v1/ContactController.php +5 -2
- package/server/src/Http/Controllers/Internal/v1/DriverController.php +13 -2
- package/server/src/Http/Controllers/Internal/v1/FleetController.php +5 -2
- package/server/src/Http/Controllers/Internal/v1/FuelReportController.php +5 -2
- package/server/src/Http/Controllers/Internal/v1/IssueController.php +5 -2
- package/server/src/Http/Controllers/Internal/v1/PlaceController.php +5 -2
- package/server/src/Http/Controllers/Internal/v1/VehicleController.php +8 -3
- package/server/src/Http/Controllers/Internal/v1/VendorController.php +5 -2
- package/server/src/Imports/ContactImport.php +6 -0
- package/server/src/Imports/DriverImport.php +6 -0
- package/server/src/Imports/FleetImport.php +6 -0
- package/server/src/Imports/FuelReportImport.php +6 -0
- package/server/src/Imports/IssueImport.php +6 -0
- package/server/src/Imports/PlaceImport.php +6 -0
- package/server/src/Imports/VehicleImport.php +6 -0
- package/server/src/Imports/VendorImport.php +6 -0
- package/server/src/Models/Vehicle.php +9 -2
- package/server/src/Support/Reporting/FleetOpsReportSchema.php +129 -1
- package/translations/en-us.yaml +2 -0
- package/DRIVER_SCHEDULING.md +0 -186
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<div class="mb-4">
|
|
2
|
+
<div class="flex flex-row items-stretch rounded-lg border border-gray-200 dark:border-gray-700">
|
|
3
|
+
<div class="w-48 h-full bg-white dark:bg-gray-700 rounded-l-lg">
|
|
4
|
+
{{#each this.categories as |category index|}}
|
|
5
|
+
<a
|
|
6
|
+
href="#"
|
|
7
|
+
class="flex flex-row px-4 py-2 border-b border-gray-200 dark:border-gray-900 hover:bg-blue-400
|
|
8
|
+
{{if (eq this.currentCategory.type category.type) 'bg-blue-500'}}
|
|
9
|
+
{{if (eq index 0) 'rounded-tl-lg'}}"
|
|
10
|
+
{{on "click" (fn this.switchCategory category)}}
|
|
11
|
+
>
|
|
12
|
+
<div class="w-6">
|
|
13
|
+
<FaIcon @icon={{category.icon}} @size="sm" />
|
|
14
|
+
</div>
|
|
15
|
+
<div>{{category.name}}</div>
|
|
16
|
+
</a>
|
|
17
|
+
{{/each}}
|
|
18
|
+
</div>
|
|
19
|
+
<div class="flex-1 border-l border-gray-200 dark:border-gray-700">
|
|
20
|
+
<div class="p-4">
|
|
21
|
+
{{#if this.isUploading}}
|
|
22
|
+
<div
|
|
23
|
+
class="dropzone w-full rounded-lg px-4 py-8 bg-gray-50 dark:bg-gray-900 bg-opacity-25 text-gray-900 dark:text-white text-center flex flex-col items-center justify-center border-2 border-dashed border-gray-200 dark:border-indigo-500"
|
|
24
|
+
>
|
|
25
|
+
<div class="flex items-center justify-center py-5">
|
|
26
|
+
<Spinner class="text-sm dar:text-gray-100" @loadingMessage={{concat (t "common.uploading") "..."}} />
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
{{else}}
|
|
30
|
+
{{#let (file-queue name="files" onFileAdded=this.queueFile accept=(join "," this.acceptedFileTypes)) as |queue|}}
|
|
31
|
+
<FileDropzone @queue={{queue}} class="dropzone file-dropzone" as |dropzone|>
|
|
32
|
+
{{#if dropzone.active}}
|
|
33
|
+
{{#if dropzone.valid}}
|
|
34
|
+
{{t "dropzone.drop-to-upload"}}
|
|
35
|
+
{{else}}
|
|
36
|
+
{{t "dropzone.invalid"}}
|
|
37
|
+
{{/if}}
|
|
38
|
+
{{else if queue.files.length}}
|
|
39
|
+
<div class="my-2">
|
|
40
|
+
<FaIcon @icon="folder-open" class="text-indigo-500 mr-2" />
|
|
41
|
+
{{t "dropzone.files-ready-for-upload" numOfFiles=(pluralize queue.files.length (t "dropzone.file"))}}
|
|
42
|
+
</div>
|
|
43
|
+
<div class="my-2">({{queue.progress}}%)</div>
|
|
44
|
+
{{else}}
|
|
45
|
+
<h4 class="font-semibold">
|
|
46
|
+
<FaIcon @icon="folder-open" @size="lg" class="text-indigo-500 mr-2" />
|
|
47
|
+
{{t "dropzone.upload-avatar-files"}}
|
|
48
|
+
</h4>
|
|
49
|
+
<div>
|
|
50
|
+
{{#if dropzone.supported}}
|
|
51
|
+
<p class="text-sm my-5">{{t "dropzone.dropzone-supported-avatars"}}</p>
|
|
52
|
+
{{/if}}
|
|
53
|
+
<FileUpload @name="files" @for="files" @accept={{join "," this.acceptedFileTypes}} @multiple={{true}} @onFileAdded={{this.queueFile}}>
|
|
54
|
+
<a tabindex={{0}} class="btn btn-magic cursor-pointer ml-1">{{t "dropzone.or-select-button-text"}}</a>
|
|
55
|
+
</FileUpload>
|
|
56
|
+
</div>
|
|
57
|
+
{{/if}}
|
|
58
|
+
</FileDropzone>
|
|
59
|
+
{{/let}}
|
|
60
|
+
{{/if}}
|
|
61
|
+
<div class="space-y-4 mt-4">
|
|
62
|
+
{{#if this.uploadQueue}}
|
|
63
|
+
<div class="space-y-2">
|
|
64
|
+
{{#each this.uploadQueue as |file|}}
|
|
65
|
+
<div class="flex items-center justify-between bg-blue-100 border border-blue-800 dark:border-blue-800 py-1.5 shadow-sm rounded-lg px-4">
|
|
66
|
+
<div class="text-xs text-blue-900 truncate">{{truncate-filename file.name 50}}</div>
|
|
67
|
+
<div class="flex items-center text-sm">
|
|
68
|
+
<Spinner class="text-blue-900 mr-2" />
|
|
69
|
+
<span class="font-bold text-blue-900">{{round file.progress}}%</span>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
{{/each}}
|
|
73
|
+
</div>
|
|
74
|
+
{{/if}}
|
|
75
|
+
<div>
|
|
76
|
+
<div class="grid grid-cols-2 md:grid-cols-4 gap-2 md:gap-4">
|
|
77
|
+
{{#each this.currentCategory.avatars as |file|}}
|
|
78
|
+
<File @file={{file}} @onDelete={{this.removeFile}} />
|
|
79
|
+
{{/each}}
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import Component from '@glimmer/component';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
import { action } from '@ember/object';
|
|
4
|
+
import { isArray } from '@ember/array';
|
|
5
|
+
import { tracked } from '@glimmer/tracking';
|
|
6
|
+
import { task } from 'ember-concurrency';
|
|
7
|
+
import { pluralize } from 'ember-inflector';
|
|
8
|
+
|
|
9
|
+
export default class AvatarManagerComponent extends Component {
|
|
10
|
+
@service fileQueue;
|
|
11
|
+
@service store;
|
|
12
|
+
@service fetch;
|
|
13
|
+
@service notifications;
|
|
14
|
+
@service currentUser;
|
|
15
|
+
@service intl;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Tracks the files in the upload queue.
|
|
19
|
+
*
|
|
20
|
+
* @var {Array}
|
|
21
|
+
*/
|
|
22
|
+
@tracked uploadQueue = [];
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The current loaded avatars.
|
|
26
|
+
*
|
|
27
|
+
* @var {Array}
|
|
28
|
+
*/
|
|
29
|
+
@tracked avatars = [];
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Tracks the selected category for avatar management.
|
|
33
|
+
*
|
|
34
|
+
* @var {string|null}
|
|
35
|
+
*/
|
|
36
|
+
@tracked currentCategory;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Selectable categories for avatar management.
|
|
40
|
+
*
|
|
41
|
+
* @memberof AdminAvatarManagementComponent
|
|
42
|
+
*/
|
|
43
|
+
@tracked categories = [
|
|
44
|
+
{
|
|
45
|
+
name: this.intl.t('resource.vehicles'),
|
|
46
|
+
icon: 'car',
|
|
47
|
+
type: 'vehicle',
|
|
48
|
+
avatars: [],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: this.intl.t('resource.places'),
|
|
52
|
+
icon: 'building',
|
|
53
|
+
type: 'place',
|
|
54
|
+
avatars: [],
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: this.intl.t('resource.drivers'),
|
|
58
|
+
icon: 'id-card',
|
|
59
|
+
type: 'driver',
|
|
60
|
+
avatars: [],
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The only acceptable file types for avatars, png or svg.
|
|
66
|
+
*
|
|
67
|
+
* @memberof AdminAvatarManagementComponent
|
|
68
|
+
*/
|
|
69
|
+
get acceptedFileTypes() {
|
|
70
|
+
return ['image/svg+xml', 'image/png'];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Creates an instance of AdminAvatarManagementComponent.
|
|
75
|
+
* @memberof AdminAvatarManagementComponent
|
|
76
|
+
*/
|
|
77
|
+
constructor() {
|
|
78
|
+
super(...arguments);
|
|
79
|
+
this.loadAvatars.perform();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Action triggered when a category is selected.
|
|
84
|
+
*
|
|
85
|
+
* @param {string} category - The selected category.
|
|
86
|
+
*/
|
|
87
|
+
@action switchCategory(category) {
|
|
88
|
+
this.currentCategory = category;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Action triggered when a file is queued for upload.
|
|
93
|
+
*
|
|
94
|
+
* @param {File} file - The file to be queued.
|
|
95
|
+
*/
|
|
96
|
+
@action queueFile(file) {
|
|
97
|
+
// since we have dropzone and upload button within dropzone validate the file state first
|
|
98
|
+
// as this method can be called twice from both functions
|
|
99
|
+
if (['queued', 'failed', 'timed_out', 'aborted'].indexOf(file.state) === -1) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Get the current category
|
|
104
|
+
const category = this.currentCategory;
|
|
105
|
+
|
|
106
|
+
// Queue and upload immediatley
|
|
107
|
+
this.uploadQueue.pushObject(file);
|
|
108
|
+
this.fetch.uploadFile.perform(
|
|
109
|
+
file,
|
|
110
|
+
{
|
|
111
|
+
path: `custom-avatars/${pluralize(category.type)}/${this.currentUser.companyId}`,
|
|
112
|
+
type: `${category.type}-avatar`,
|
|
113
|
+
},
|
|
114
|
+
(uploadedFile) => {
|
|
115
|
+
this.currentCategory.avatars.pushObject(uploadedFile);
|
|
116
|
+
this.uploadQueue.removeObject(file);
|
|
117
|
+
},
|
|
118
|
+
() => {
|
|
119
|
+
this.uploadQueue.removeObject(file);
|
|
120
|
+
// remove file from queue
|
|
121
|
+
if (file.queue && typeof file.queue.remove === 'function') {
|
|
122
|
+
file.queue.remove(file);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Action triggered when a file is removed.
|
|
130
|
+
*
|
|
131
|
+
* @param {File} file - The file to be removed.
|
|
132
|
+
* @returns {Promise} - A promise representing the file destruction operation.
|
|
133
|
+
*/
|
|
134
|
+
@action removeFile(file) {
|
|
135
|
+
this.currentCategory.avatars.removeObject(file);
|
|
136
|
+
return file.destroyRecord();
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Task that loads files based on the selected category.
|
|
141
|
+
*
|
|
142
|
+
* @task
|
|
143
|
+
* @generator
|
|
144
|
+
* @yields {Array} - The filtered files based on the selected category.
|
|
145
|
+
*/
|
|
146
|
+
@task *loadAvatars() {
|
|
147
|
+
this.avatars = yield this.store.query('file', { type_ends_with: 'avatar' });
|
|
148
|
+
|
|
149
|
+
// Assign avatars to their categories
|
|
150
|
+
if (isArray(this.avatars)) {
|
|
151
|
+
const categoriesWithAvatars = [];
|
|
152
|
+
|
|
153
|
+
for (let i = 0; i < this.categories.length; i++) {
|
|
154
|
+
const category = this.categories[i];
|
|
155
|
+
categoriesWithAvatars.pushObject({
|
|
156
|
+
...category,
|
|
157
|
+
avatars: this.avatars.filter((file) => file.type === `${category.type}-avatar`),
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
this.categories = categoriesWithAvatars;
|
|
162
|
+
this.currentCategory = this.currentCategory ? this.categories.find((category) => category.type === this.currentCategory.type) : this.categories[0];
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -31,6 +31,7 @@ export default class CustomerCreateOrderFormComponent extends Component {
|
|
|
31
31
|
@service fetch;
|
|
32
32
|
@service intl;
|
|
33
33
|
@service universe;
|
|
34
|
+
@service events;
|
|
34
35
|
@tracked order;
|
|
35
36
|
@tracked customer;
|
|
36
37
|
@tracked payload = this.store.createRecord('payload');
|
|
@@ -194,6 +195,10 @@ export default class CustomerCreateOrderFormComponent extends Component {
|
|
|
194
195
|
|
|
195
196
|
try {
|
|
196
197
|
yield order.save();
|
|
198
|
+
|
|
199
|
+
// Track with standard events service
|
|
200
|
+
this.events.trackResourceCreated(order);
|
|
201
|
+
|
|
197
202
|
// trigger event that fleet-ops created an order
|
|
198
203
|
this.universe.trigger('fleet-ops.order.created', order);
|
|
199
204
|
|
|
@@ -261,6 +261,14 @@ export default class LayoutFleetOpsSidebarComponent extends Component {
|
|
|
261
261
|
permission: 'fleet-ops view custom-field',
|
|
262
262
|
visible: this.abilities.can('fleet-ops see custom-field'),
|
|
263
263
|
},
|
|
264
|
+
{
|
|
265
|
+
intl: 'menu.avatars',
|
|
266
|
+
title: this.intl.t('menu.avatars'),
|
|
267
|
+
icon: 'icons',
|
|
268
|
+
route: 'settings.avatars',
|
|
269
|
+
permission: 'fleet-ops view avatar',
|
|
270
|
+
visible: this.abilities.can('fleet-ops see avatar'),
|
|
271
|
+
},
|
|
264
272
|
];
|
|
265
273
|
|
|
266
274
|
const createPanel = (intl, routePrefix, items = [], options = {}) => ({
|
|
@@ -9,6 +9,7 @@ export default class AnalyticsReportsIndexEditController extends Controller {
|
|
|
9
9
|
@service intl;
|
|
10
10
|
@service notifications;
|
|
11
11
|
@service modalsManager;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked actionButtons = [
|
|
14
15
|
{
|
|
@@ -26,6 +27,7 @@ export default class AnalyticsReportsIndexEditController extends Controller {
|
|
|
26
27
|
report.fillResult(result);
|
|
27
28
|
|
|
28
29
|
yield report.save();
|
|
30
|
+
this.events.trackResourceUpdated(report);
|
|
29
31
|
this.overlay?.close();
|
|
30
32
|
|
|
31
33
|
yield this.hostRouter.transitionTo('console.fleet-ops.analytics.reports.index.details', report);
|
|
@@ -9,6 +9,7 @@ export default class AnalyticsReportsIndexNewController extends Controller {
|
|
|
9
9
|
@service hostRouter;
|
|
10
10
|
@service intl;
|
|
11
11
|
@service notifications;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked validationErrors = [];
|
|
14
15
|
@tracked report = this.reportActions.createNewInstance({ type: 'fleet-ops' });
|
|
@@ -22,6 +23,7 @@ export default class AnalyticsReportsIndexNewController extends Controller {
|
|
|
22
23
|
report.fillResult(result);
|
|
23
24
|
|
|
24
25
|
yield report.save();
|
|
26
|
+
this.events.trackResourceCreated(report);
|
|
25
27
|
this.overlay?.close();
|
|
26
28
|
|
|
27
29
|
yield this.hostRouter.refresh();
|
|
@@ -9,6 +9,7 @@ export default class ConnectivityDevicesIndexEditController extends Controller {
|
|
|
9
9
|
@service intl;
|
|
10
10
|
@service notifications;
|
|
11
11
|
@service modalsManager;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
|
|
14
15
|
get actionButtons() {
|
|
@@ -23,6 +24,7 @@ export default class ConnectivityDevicesIndexEditController extends Controller {
|
|
|
23
24
|
@task *save(device) {
|
|
24
25
|
try {
|
|
25
26
|
yield device.save();
|
|
27
|
+
this.events.trackResourceUpdated(device);
|
|
26
28
|
this.overlay?.close();
|
|
27
29
|
|
|
28
30
|
yield this.hostRouter.transitionTo('console.fleet-ops.connectivity.devices.index.details', device);
|
|
@@ -9,12 +9,14 @@ export default class ConnectivityDevicesIndexNewController extends Controller {
|
|
|
9
9
|
@service hostRouter;
|
|
10
10
|
@service intl;
|
|
11
11
|
@service notifications;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked device = this.deviceActions.createNewInstance();
|
|
14
15
|
|
|
15
16
|
@task *save(device) {
|
|
16
17
|
try {
|
|
17
18
|
yield device.save();
|
|
19
|
+
this.events.trackResourceCreated(device);
|
|
18
20
|
this.overlay?.close();
|
|
19
21
|
|
|
20
22
|
yield this.hostRouter.refresh();
|
|
@@ -9,6 +9,7 @@ export default class ConnectivitySensorsIndexEditController extends Controller {
|
|
|
9
9
|
@service intl;
|
|
10
10
|
@service notifications;
|
|
11
11
|
@service modalsManager;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
|
|
14
15
|
get actionButtons() {
|
|
@@ -23,6 +24,7 @@ export default class ConnectivitySensorsIndexEditController extends Controller {
|
|
|
23
24
|
@task *save(sensor) {
|
|
24
25
|
try {
|
|
25
26
|
yield sensor.save();
|
|
27
|
+
this.events.trackResourceUpdated(sensor);
|
|
26
28
|
this.overlay?.close();
|
|
27
29
|
|
|
28
30
|
yield this.hostRouter.transitionTo('console.fleet-ops.connectivity.sensors.index.details', sensor);
|
|
@@ -9,12 +9,14 @@ export default class ConnectivitySensorsIndexNewController extends Controller {
|
|
|
9
9
|
@service hostRouter;
|
|
10
10
|
@service intl;
|
|
11
11
|
@service notifications;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked sensor = this.sensorActions.createNewInstance();
|
|
14
15
|
|
|
15
16
|
@task *save(sensor) {
|
|
16
17
|
try {
|
|
17
18
|
yield sensor.save();
|
|
19
|
+
this.events.trackResourceCreated(sensor);
|
|
18
20
|
this.overlay?.close();
|
|
19
21
|
|
|
20
22
|
yield this.hostRouter.refresh();
|
|
@@ -9,6 +9,7 @@ export default class ConnectivityTelematicsIndexEditController extends Controlle
|
|
|
9
9
|
@service intl;
|
|
10
10
|
@service notifications;
|
|
11
11
|
@service modalsManager;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
|
|
14
15
|
get actionButtons() {
|
|
@@ -23,6 +24,7 @@ export default class ConnectivityTelematicsIndexEditController extends Controlle
|
|
|
23
24
|
@task *save(telematic) {
|
|
24
25
|
try {
|
|
25
26
|
yield telematic.save();
|
|
27
|
+
this.events.trackResourceUpdated(telematic);
|
|
26
28
|
this.overlay?.close();
|
|
27
29
|
|
|
28
30
|
yield this.hostRouter.transitionTo('console.fleet-ops.connectivity.telematics.index.details', telematic);
|
|
@@ -9,12 +9,14 @@ export default class ConnectivityTelematicsIndexNewController extends Controller
|
|
|
9
9
|
@service hostRouter;
|
|
10
10
|
@service intl;
|
|
11
11
|
@service notifications;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked telematic = this.telematicActions.createNewInstance();
|
|
14
15
|
|
|
15
16
|
@task *save(telematic) {
|
|
16
17
|
try {
|
|
17
18
|
yield telematic.save();
|
|
19
|
+
this.events.trackResourceCreated(telematic);
|
|
18
20
|
this.overlay?.close();
|
|
19
21
|
|
|
20
22
|
yield this.hostRouter.refresh();
|
|
@@ -9,6 +9,7 @@ export default class ManagementContactsCustomersEditController extends Controlle
|
|
|
9
9
|
@service intl;
|
|
10
10
|
@service notifications;
|
|
11
11
|
@service modalsManager;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked actionButtons = [
|
|
14
15
|
{
|
|
@@ -20,6 +21,7 @@ export default class ManagementContactsCustomersEditController extends Controlle
|
|
|
20
21
|
@task *save(customer) {
|
|
21
22
|
try {
|
|
22
23
|
yield customer.save();
|
|
24
|
+
this.events.trackResourceUpdated(customer);
|
|
23
25
|
this.overlay?.close();
|
|
24
26
|
|
|
25
27
|
yield this.hostRouter.transitionTo('console.fleet-ops.management.contacts.customers.details', customer);
|
|
@@ -9,12 +9,14 @@ export default class ManagementContactsCustomersNewController extends Controller
|
|
|
9
9
|
@service hostRouter;
|
|
10
10
|
@service intl;
|
|
11
11
|
@service notifications;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked customer = this.customerActions.createNewInstance();
|
|
14
15
|
|
|
15
16
|
@task *save(customer) {
|
|
16
17
|
try {
|
|
17
18
|
yield customer.save();
|
|
19
|
+
this.events.trackResourceCreated(customer);
|
|
18
20
|
this.overlay?.close();
|
|
19
21
|
|
|
20
22
|
yield this.hostRouter.refresh();
|
|
@@ -9,6 +9,7 @@ export default class ManagementContactsIndexEditController extends Controller {
|
|
|
9
9
|
@service intl;
|
|
10
10
|
@service notifications;
|
|
11
11
|
@service modalsManager;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked actionButtons = [
|
|
14
15
|
{
|
|
@@ -20,6 +21,7 @@ export default class ManagementContactsIndexEditController extends Controller {
|
|
|
20
21
|
@task *save(contact) {
|
|
21
22
|
try {
|
|
22
23
|
yield contact.save();
|
|
24
|
+
this.events.trackResourceUpdated(contact);
|
|
23
25
|
this.overlay?.close();
|
|
24
26
|
|
|
25
27
|
yield this.hostRouter.transitionTo('console.fleet-ops.management.contacts.index.details', contact);
|
|
@@ -9,12 +9,14 @@ export default class ManagementContactsIndexNewController extends Controller {
|
|
|
9
9
|
@service hostRouter;
|
|
10
10
|
@service intl;
|
|
11
11
|
@service notifications;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked contact = this.contactActions.createNewInstance();
|
|
14
15
|
|
|
15
16
|
@task *save(contact) {
|
|
16
17
|
try {
|
|
17
18
|
yield contact.save();
|
|
19
|
+
this.events.trackResourceCreated(contact);
|
|
18
20
|
this.overlay?.close();
|
|
19
21
|
|
|
20
22
|
yield this.hostRouter.refresh();
|
|
@@ -9,6 +9,7 @@ export default class ManagementDriversIndexEditController extends Controller {
|
|
|
9
9
|
@service intl;
|
|
10
10
|
@service notifications;
|
|
11
11
|
@service modalsManager;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked actionButtons = [
|
|
14
15
|
{
|
|
@@ -20,6 +21,7 @@ export default class ManagementDriversIndexEditController extends Controller {
|
|
|
20
21
|
@task *save(driver) {
|
|
21
22
|
try {
|
|
22
23
|
yield driver.save();
|
|
24
|
+
this.events.trackResourceUpdated(driver);
|
|
23
25
|
this.overlay?.close();
|
|
24
26
|
|
|
25
27
|
yield this.hostRouter.transitionTo('console.fleet-ops.management.drivers.index.details', driver);
|
|
@@ -9,12 +9,14 @@ export default class ManagementDriversIndexNewController extends Controller {
|
|
|
9
9
|
@service hostRouter;
|
|
10
10
|
@service intl;
|
|
11
11
|
@service notifications;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked driver = this.driverActions.createNewInstance();
|
|
14
15
|
|
|
15
16
|
@task *save(driver) {
|
|
16
17
|
try {
|
|
17
18
|
yield driver.save();
|
|
19
|
+
this.events.trackResourceCreated(driver);
|
|
18
20
|
this.overlay?.close();
|
|
19
21
|
|
|
20
22
|
yield this.hostRouter.refresh();
|
|
@@ -9,6 +9,7 @@ export default class ManagementFleetsIndexEditController extends Controller {
|
|
|
9
9
|
@service intl;
|
|
10
10
|
@service notifications;
|
|
11
11
|
@service modalsManager;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
|
|
14
15
|
get actionButtons() {
|
|
@@ -23,6 +24,7 @@ export default class ManagementFleetsIndexEditController extends Controller {
|
|
|
23
24
|
@task *save(fleet) {
|
|
24
25
|
try {
|
|
25
26
|
yield fleet.save();
|
|
27
|
+
this.events.trackResourceUpdated(fleet);
|
|
26
28
|
this.overlay?.close();
|
|
27
29
|
|
|
28
30
|
yield this.hostRouter.transitionTo('console.fleet-ops.management.fleets.index.details', fleet);
|
|
@@ -9,12 +9,14 @@ export default class ManagementFleetsIndexNewController extends Controller {
|
|
|
9
9
|
@service hostRouter;
|
|
10
10
|
@service intl;
|
|
11
11
|
@service notifications;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked fleet = this.fleetActions.createNewInstance();
|
|
14
15
|
|
|
15
16
|
@task *save(fleet) {
|
|
16
17
|
try {
|
|
17
18
|
yield fleet.save();
|
|
19
|
+
this.events.trackResourceCreated(fleet);
|
|
18
20
|
this.overlay?.close();
|
|
19
21
|
|
|
20
22
|
yield this.hostRouter.refresh();
|
|
@@ -9,6 +9,7 @@ export default class ManagementFuelReportsIndexEditController extends Controller
|
|
|
9
9
|
@service intl;
|
|
10
10
|
@service notifications;
|
|
11
11
|
@service modalsManager;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked actionButtons = [
|
|
14
15
|
{
|
|
@@ -20,6 +21,7 @@ export default class ManagementFuelReportsIndexEditController extends Controller
|
|
|
20
21
|
@task *save(fuelReport) {
|
|
21
22
|
try {
|
|
22
23
|
yield fuelReport.save();
|
|
24
|
+
this.events.trackResourceUpdated(fuelReport);
|
|
23
25
|
this.overlay?.close();
|
|
24
26
|
|
|
25
27
|
yield this.hostRouter.transitionTo('console.fleet-ops.management.fuel-reports.index.details', fuelReport);
|
|
@@ -10,12 +10,14 @@ export default class ManagementFuelReportsIndexNewController extends Controller
|
|
|
10
10
|
@service hostRouter;
|
|
11
11
|
@service intl;
|
|
12
12
|
@service notifications;
|
|
13
|
+
@service events;
|
|
13
14
|
@tracked overlay;
|
|
14
15
|
@tracked fuelReport = this.fuelReportActions.createNewInstance({ reporter: this.currentUser.user });
|
|
15
16
|
|
|
16
17
|
@task *save(fuelReport) {
|
|
17
18
|
try {
|
|
18
19
|
yield fuelReport.save();
|
|
20
|
+
this.events.trackResourceCreated(fuelReport);
|
|
19
21
|
this.overlay?.close();
|
|
20
22
|
|
|
21
23
|
yield this.hostRouter.refresh();
|
|
@@ -9,6 +9,7 @@ export default class ManagementIssuesIndexEditController extends Controller {
|
|
|
9
9
|
@service intl;
|
|
10
10
|
@service notifications;
|
|
11
11
|
@service modalsManager;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked actionButtons = [
|
|
14
15
|
{
|
|
@@ -20,6 +21,7 @@ export default class ManagementIssuesIndexEditController extends Controller {
|
|
|
20
21
|
@task *save(issue) {
|
|
21
22
|
try {
|
|
22
23
|
yield issue.save();
|
|
24
|
+
this.events.trackResourceUpdated(issue);
|
|
23
25
|
this.overlay?.close();
|
|
24
26
|
|
|
25
27
|
yield this.hostRouter.transitionTo('console.fleet-ops.management.issues.index.details', issue);
|
|
@@ -10,12 +10,14 @@ export default class ManagementIssuesIndexNewController extends Controller {
|
|
|
10
10
|
@service intl;
|
|
11
11
|
@service currentUser;
|
|
12
12
|
@service notifications;
|
|
13
|
+
@service events;
|
|
13
14
|
@tracked overlay;
|
|
14
15
|
@tracked issue = this.issueActions.createNewInstance({ reporter: this.currentUser.user });
|
|
15
16
|
|
|
16
17
|
@task *save(issue) {
|
|
17
18
|
try {
|
|
18
19
|
yield issue.save();
|
|
20
|
+
this.events.trackResourceCreated(issue);
|
|
19
21
|
this.overlay?.close();
|
|
20
22
|
|
|
21
23
|
yield this.hostRouter.refresh();
|
|
@@ -9,6 +9,7 @@ export default class ManagementPlacesIndexEditController extends Controller {
|
|
|
9
9
|
@service intl;
|
|
10
10
|
@service notifications;
|
|
11
11
|
@service modalsManager;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked actionButtons = [
|
|
14
15
|
{
|
|
@@ -20,6 +21,7 @@ export default class ManagementPlacesIndexEditController extends Controller {
|
|
|
20
21
|
@task *save(place) {
|
|
21
22
|
try {
|
|
22
23
|
yield place.save();
|
|
24
|
+
this.events.trackResourceUpdated(place);
|
|
23
25
|
this.overlay?.close();
|
|
24
26
|
|
|
25
27
|
yield this.hostRouter.transitionTo('console.fleet-ops.management.places.index.details', place);
|
|
@@ -9,12 +9,14 @@ export default class ManagementPlacesIndexNewController extends Controller {
|
|
|
9
9
|
@service hostRouter;
|
|
10
10
|
@service intl;
|
|
11
11
|
@service notifications;
|
|
12
|
+
@service events;
|
|
12
13
|
@tracked overlay;
|
|
13
14
|
@tracked place = this.placeActions.createNewInstance();
|
|
14
15
|
|
|
15
16
|
@task *save(place) {
|
|
16
17
|
try {
|
|
17
18
|
yield place.save();
|
|
19
|
+
this.events.trackResourceCreated(place);
|
|
18
20
|
this.overlay?.close();
|
|
19
21
|
|
|
20
22
|
yield this.hostRouter.refresh();
|