@fleetbase/fleetops-engine 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +2 -2
- 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 +37 -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 +15 -0
- package/server/src/Notifications/OrderCanceled.php +15 -0
- package/server/src/Notifications/OrderDispatchFailed.php +15 -0
- package/server/src/Notifications/OrderDispatched.php +15 -0
- package/server/src/Notifications/OrderPing.php +15 -0
- package/server/src/Notifications/OrderSplit.php +26 -5
- package/server/src/Providers/FleetOpsServiceProvider.php +22 -0
- package/server/src/Providers/NotificationServiceProvider.php +43 -0
- package/server/src/routes.php +2 -2
|
@@ -3,11 +3,8 @@ import { inject as service } from '@ember/service';
|
|
|
3
3
|
import { tracked } from '@glimmer/tracking';
|
|
4
4
|
import { action } from '@ember/object';
|
|
5
5
|
import { isBlank } from '@ember/utils';
|
|
6
|
-
import { isArray } from '@ember/array';
|
|
7
|
-
import { capitalize } from '@ember/string';
|
|
8
6
|
import { timeout } from 'ember-concurrency';
|
|
9
7
|
import { task } from 'ember-concurrency-decorators';
|
|
10
|
-
import apiUrl from '@fleetbase/ember-core/utils/api-url';
|
|
11
8
|
|
|
12
9
|
export default class ManagementVendorsIndexController extends Controller {
|
|
13
10
|
/**
|
|
@@ -133,6 +130,7 @@ export default class ManagementVendorsIndexController extends Controller {
|
|
|
133
130
|
valuePath: 'name',
|
|
134
131
|
width: '180px',
|
|
135
132
|
cellComponent: 'table/cell/media-name',
|
|
133
|
+
mediaPath: 'logo_url',
|
|
136
134
|
action: this.viewVendor,
|
|
137
135
|
resizable: true,
|
|
138
136
|
sortable: true,
|
|
@@ -305,24 +303,6 @@ export default class ManagementVendorsIndexController extends Controller {
|
|
|
305
303
|
this.query = value;
|
|
306
304
|
}
|
|
307
305
|
|
|
308
|
-
/**
|
|
309
|
-
* Bulk deletes selected `driver` via confirm prompt
|
|
310
|
-
*
|
|
311
|
-
* @param {Array} selected an array of selected models
|
|
312
|
-
* @void
|
|
313
|
-
*/
|
|
314
|
-
@action bulkDeleteVendors() {
|
|
315
|
-
const selected = this.table.selectedRows;
|
|
316
|
-
|
|
317
|
-
this.crud.bulkDelete(selected, {
|
|
318
|
-
modelNamePath: `name`,
|
|
319
|
-
acceptButtonText: 'Delete Vendors',
|
|
320
|
-
onSuccess: () => {
|
|
321
|
-
return this.hostRouter.refresh();
|
|
322
|
-
},
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
|
|
326
306
|
/**
|
|
327
307
|
* Toggles dialog to export `vendor`
|
|
328
308
|
*
|
|
@@ -336,225 +316,29 @@ export default class ManagementVendorsIndexController extends Controller {
|
|
|
336
316
|
* View a `vendor` details in modal
|
|
337
317
|
*
|
|
338
318
|
* @param {VendorModel} vendor
|
|
339
|
-
* @param {Object} options
|
|
340
319
|
* @void
|
|
341
320
|
*/
|
|
342
|
-
@action viewVendor(vendor
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
this.modalsManager.show('modals/vendor-details', {
|
|
346
|
-
title: vendor.name,
|
|
347
|
-
titleComponent: 'modal/title-with-buttons',
|
|
348
|
-
acceptButtonText: 'Done',
|
|
349
|
-
hideDeclineButton: true,
|
|
350
|
-
headerButtons: [
|
|
351
|
-
{
|
|
352
|
-
icon: 'cog',
|
|
353
|
-
iconPrefix: 'fas',
|
|
354
|
-
type: 'link',
|
|
355
|
-
size: 'xs',
|
|
356
|
-
options: [
|
|
357
|
-
{
|
|
358
|
-
title: 'Edit Vendor',
|
|
359
|
-
action: () => {
|
|
360
|
-
this.modalsManager.done().then(() => {
|
|
361
|
-
return this.editVendor(vendor, {
|
|
362
|
-
onFinish: () => {
|
|
363
|
-
this.viewVendor(vendor);
|
|
364
|
-
},
|
|
365
|
-
});
|
|
366
|
-
});
|
|
367
|
-
},
|
|
368
|
-
},
|
|
369
|
-
{
|
|
370
|
-
title: 'Delete Vendor',
|
|
371
|
-
action: () => {
|
|
372
|
-
this.modalsManager.done().then(() => {
|
|
373
|
-
return this.deleteVendor(vendor, {
|
|
374
|
-
onDecline: () => {
|
|
375
|
-
this.viewVendor(vendor);
|
|
376
|
-
},
|
|
377
|
-
});
|
|
378
|
-
});
|
|
379
|
-
},
|
|
380
|
-
},
|
|
381
|
-
],
|
|
382
|
-
},
|
|
383
|
-
],
|
|
384
|
-
isIntegratedVendor,
|
|
385
|
-
vendor,
|
|
386
|
-
...options,
|
|
387
|
-
});
|
|
321
|
+
@action viewVendor(vendor) {
|
|
322
|
+
return this.transitionToRoute('management.vendors.index.details', vendor);
|
|
388
323
|
}
|
|
389
324
|
|
|
390
325
|
/**
|
|
391
326
|
* Create a new `vendor` in modal
|
|
392
327
|
*
|
|
393
|
-
* @param {Object} options
|
|
394
328
|
* @void
|
|
395
329
|
*/
|
|
396
330
|
@action async createVendor() {
|
|
397
|
-
|
|
398
|
-
const supportedIntegratedVendors = await this.fetch.get('integrated-vendors/supported');
|
|
399
|
-
|
|
400
|
-
return this.editVendor(vendor, {
|
|
401
|
-
title: 'New Vendor',
|
|
402
|
-
acceptButtonText: 'Confirm & Create',
|
|
403
|
-
acceptButtonIcon: 'check',
|
|
404
|
-
acceptButtonIconPrefix: 'fas',
|
|
405
|
-
action: 'select',
|
|
406
|
-
supportedIntegratedVendors,
|
|
407
|
-
selectedIntegratedVendor: null,
|
|
408
|
-
integratedVendor: null,
|
|
409
|
-
selectIntegratedVendor: (integratedVendor) => {
|
|
410
|
-
this.modalsManager.setOption('selectedIntegratedVendor', integratedVendor);
|
|
411
|
-
|
|
412
|
-
const { credential_params, option_params } = integratedVendor;
|
|
413
|
-
|
|
414
|
-
// create credentials object
|
|
415
|
-
const credentials = {};
|
|
416
|
-
if (isArray(integratedVendor.credential_params)) {
|
|
417
|
-
for (let i = 0; i < integratedVendor.credential_params.length; i++) {
|
|
418
|
-
const param = integratedVendor.credential_params.objectAt(i);
|
|
419
|
-
credentials[param] = null;
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
// create options object
|
|
424
|
-
const options = {};
|
|
425
|
-
if (isArray(integratedVendor.option_params)) {
|
|
426
|
-
for (let i = 0; i < integratedVendor.option_params.length; i++) {
|
|
427
|
-
const param = integratedVendor.option_params.objectAt(i);
|
|
428
|
-
options[param.key] = null;
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
const vendor = this.store.createRecord('integrated-vendor', {
|
|
433
|
-
provider: integratedVendor.code,
|
|
434
|
-
webhook_url: apiUrl(`listeners/${integratedVendor.code}`),
|
|
435
|
-
credentials: {},
|
|
436
|
-
options: {},
|
|
437
|
-
credential_params,
|
|
438
|
-
option_params,
|
|
439
|
-
});
|
|
440
|
-
|
|
441
|
-
this.modalsManager.setOption('integratedVendor', vendor);
|
|
442
|
-
},
|
|
443
|
-
successNotification: (vendor) => `New vendor '${vendor.name}' successfully created.`,
|
|
444
|
-
});
|
|
331
|
+
return this.transitionToRoute('management.vendors.index.new');
|
|
445
332
|
}
|
|
446
333
|
|
|
447
334
|
/**
|
|
448
335
|
* Edit a `vendor` details
|
|
449
336
|
*
|
|
450
337
|
* @param {VendorModel} vendor
|
|
451
|
-
* @param {Object} options
|
|
452
338
|
* @void
|
|
453
339
|
*/
|
|
454
|
-
@action editVendor(vendor
|
|
455
|
-
|
|
456
|
-
const isIntegratedVendor = vendor.get('type') === 'integrated-vendor';
|
|
457
|
-
|
|
458
|
-
this.modalsManager.show('modals/vendor-form', {
|
|
459
|
-
title: isIntegratedVendor ? 'Integrated Vendor Settings' : 'Edit Vendor',
|
|
460
|
-
acceptButtonText: 'Save Changes',
|
|
461
|
-
acceptButtonIcon: 'save',
|
|
462
|
-
declineButtonIcon: 'times',
|
|
463
|
-
declineButtonIconPrefix: 'fas',
|
|
464
|
-
isIntegratedVendor,
|
|
465
|
-
vendor,
|
|
466
|
-
showAdvancedOptions: false,
|
|
467
|
-
isEditingCredentials: false,
|
|
468
|
-
toggleCredentialsReset: () => {
|
|
469
|
-
const isEditingCredentials = this.modalsManager.getOption('isEditingCredentials');
|
|
470
|
-
|
|
471
|
-
if (isEditingCredentials) {
|
|
472
|
-
this.modalsManager.setOption('isEditingCredentials', false);
|
|
473
|
-
} else {
|
|
474
|
-
this.modalsManager.setOption('isEditingCredentials', true);
|
|
475
|
-
}
|
|
476
|
-
},
|
|
477
|
-
toggleAdvancedOptions: () => {
|
|
478
|
-
const showAdvancedOptions = this.modalsManager.getOption('showAdvancedOptions');
|
|
479
|
-
|
|
480
|
-
if (showAdvancedOptions) {
|
|
481
|
-
this.modalsManager.setOption('showAdvancedOptions', false);
|
|
482
|
-
} else {
|
|
483
|
-
this.modalsManager.setOption('showAdvancedOptions', true);
|
|
484
|
-
}
|
|
485
|
-
},
|
|
486
|
-
selectAddress: (place) => {
|
|
487
|
-
vendor.setProperties({
|
|
488
|
-
place_uuid: place.id,
|
|
489
|
-
place: place,
|
|
490
|
-
country: place.country,
|
|
491
|
-
});
|
|
492
|
-
},
|
|
493
|
-
editAddress: () => {
|
|
494
|
-
return this.editVendorPlace(vendor, {
|
|
495
|
-
onFinish: () => {
|
|
496
|
-
this.editVendor(vendor, editVendorOptions);
|
|
497
|
-
},
|
|
498
|
-
});
|
|
499
|
-
},
|
|
500
|
-
newAddress: () => {
|
|
501
|
-
return this.createVendorPlace(vendor, {
|
|
502
|
-
onConfirm: (place) => {
|
|
503
|
-
vendor.set('place_uuid', place.id);
|
|
504
|
-
vendor.save();
|
|
505
|
-
},
|
|
506
|
-
onFinish: () => {
|
|
507
|
-
this.modalsManager.done().then(() => {
|
|
508
|
-
this.editVendor(vendor, editVendorOptions);
|
|
509
|
-
});
|
|
510
|
-
},
|
|
511
|
-
});
|
|
512
|
-
},
|
|
513
|
-
confirm: (modal) => {
|
|
514
|
-
modal.startLoading();
|
|
515
|
-
|
|
516
|
-
const isAddingIntegratedVendor = modal.getOption('action') !== undefined && modal.getOption('integratedVendor')?.isNew;
|
|
517
|
-
|
|
518
|
-
if (isAddingIntegratedVendor) {
|
|
519
|
-
const integratedVendor = modal.getOption('integratedVendor');
|
|
520
|
-
|
|
521
|
-
return integratedVendor
|
|
522
|
-
.save()
|
|
523
|
-
.then((integratedVendor) => {
|
|
524
|
-
this.notifications.success(`Successfully added ${capitalize(integratedVendor.provider)} new integrated vendor`);
|
|
525
|
-
|
|
526
|
-
return this.hostRouter.refresh();
|
|
527
|
-
})
|
|
528
|
-
.catch((error) => {
|
|
529
|
-
this.notifications.serverError(error, {
|
|
530
|
-
clearDuration: 600 * 6,
|
|
531
|
-
});
|
|
532
|
-
})
|
|
533
|
-
.finally(() => {
|
|
534
|
-
modal.stopLoading();
|
|
535
|
-
});
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
return vendor
|
|
539
|
-
.save()
|
|
540
|
-
.then((vendor) => {
|
|
541
|
-
if (typeof options.successNotification === 'function') {
|
|
542
|
-
this.notifications.success(options.successNotification(vendor));
|
|
543
|
-
} else {
|
|
544
|
-
this.notifications.success(options.successNotification || `${vendor.name} details updated.`);
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
return this.hostRouter.refresh();
|
|
548
|
-
})
|
|
549
|
-
.catch((error) => {
|
|
550
|
-
this.notifications.serverError(error);
|
|
551
|
-
})
|
|
552
|
-
.finally(() => {
|
|
553
|
-
modal.stopLoading();
|
|
554
|
-
});
|
|
555
|
-
},
|
|
556
|
-
...options,
|
|
557
|
-
});
|
|
340
|
+
@action editVendor(vendor) {
|
|
341
|
+
return this.transitionToRoute('management.vendors.index.edit', vendor);
|
|
558
342
|
}
|
|
559
343
|
|
|
560
344
|
/**
|
|
@@ -575,19 +359,20 @@ export default class ManagementVendorsIndexController extends Controller {
|
|
|
575
359
|
}
|
|
576
360
|
|
|
577
361
|
/**
|
|
578
|
-
*
|
|
362
|
+
* Bulk deletes selected `vendor` via confirm prompt
|
|
579
363
|
*
|
|
580
|
-
* @param {
|
|
581
|
-
* @param {Object} options
|
|
364
|
+
* @param {Array} selected an array of selected models
|
|
582
365
|
* @void
|
|
583
366
|
*/
|
|
584
|
-
@action
|
|
585
|
-
this.
|
|
586
|
-
|
|
587
|
-
const place = await this.store.findRecord('place', vendor.place_uuid);
|
|
367
|
+
@action bulkDeleteVendors() {
|
|
368
|
+
const selected = this.table.selectedRows;
|
|
588
369
|
|
|
589
|
-
this.
|
|
590
|
-
|
|
370
|
+
this.crud.bulkDelete(selected, {
|
|
371
|
+
modelNamePath: `name`,
|
|
372
|
+
acceptButtonText: 'Delete Vendors',
|
|
373
|
+
onSuccess: () => {
|
|
374
|
+
return this.hostRouter.refresh();
|
|
375
|
+
},
|
|
591
376
|
});
|
|
592
377
|
}
|
|
593
378
|
|
|
@@ -595,33 +380,44 @@ export default class ManagementVendorsIndexController extends Controller {
|
|
|
595
380
|
* View information about the vendors place
|
|
596
381
|
*
|
|
597
382
|
* @param {VendorModel} vendor
|
|
598
|
-
* @param {Object} options
|
|
599
383
|
* @void
|
|
600
384
|
*/
|
|
601
|
-
@action async
|
|
602
|
-
this.
|
|
385
|
+
@action async viewVendorPlace(vendor) {
|
|
386
|
+
const place = await this.store.findRecord('place', vendor.place_uuid);
|
|
603
387
|
|
|
604
|
-
|
|
605
|
-
|
|
388
|
+
if (place) {
|
|
389
|
+
this.contextPanel.focus(place);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
606
392
|
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
393
|
+
/**
|
|
394
|
+
* Edit a vendor's current place
|
|
395
|
+
*
|
|
396
|
+
* @param {VendorModel} vendor
|
|
397
|
+
* @void
|
|
398
|
+
*/
|
|
399
|
+
@action async editVendorPlace(vendor) {
|
|
400
|
+
const place = await this.store.findRecord('place', vendor.place_uuid);
|
|
401
|
+
|
|
402
|
+
if (place) {
|
|
403
|
+
this.contextPanel.focus(place, 'editing');
|
|
404
|
+
}
|
|
610
405
|
}
|
|
611
406
|
|
|
612
407
|
/**
|
|
613
|
-
*
|
|
408
|
+
* Create a new place for a vendor.
|
|
614
409
|
*
|
|
615
|
-
* @param {
|
|
616
|
-
* @param {Object} options
|
|
410
|
+
* @param {VendorModel} vendor
|
|
617
411
|
* @void
|
|
618
412
|
*/
|
|
619
|
-
@action async createVendorPlace(vendor
|
|
620
|
-
this.
|
|
621
|
-
await this.modalsManager.done();
|
|
413
|
+
@action async createVendorPlace(vendor) {
|
|
414
|
+
const place = this.store.createRecord('place');
|
|
622
415
|
|
|
623
|
-
this.
|
|
624
|
-
|
|
416
|
+
this.contextPanel.focus(place, 'editing', {
|
|
417
|
+
onAfterSave: (place) => {
|
|
418
|
+
vendor.set('place_uuid', place.id);
|
|
419
|
+
vendor.save();
|
|
420
|
+
},
|
|
625
421
|
});
|
|
626
422
|
}
|
|
627
423
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementContactsIndexDetailsRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
queryParams = {
|
|
8
|
+
view: { refreshModel: false },
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
model({ public_id }) {
|
|
12
|
+
return this.store.findRecord('contact', public_id);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementContactsIndexEditRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
model({ public_id }) {
|
|
8
|
+
return this.store.findRecord('contact', public_id);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -4,6 +4,6 @@ export default class ManagementFleetsIndexDetailsRoute extends Route {
|
|
|
4
4
|
@service store;
|
|
5
5
|
|
|
6
6
|
model({ public_id }) {
|
|
7
|
-
return this.store.
|
|
7
|
+
return this.store.queryRecord('fleet', { public_id, single: true, with: ['parent_fleet', 'service_area', 'zone'] });
|
|
8
8
|
}
|
|
9
9
|
}
|
|
@@ -4,6 +4,6 @@ export default class ManagementFleetsIndexEditRoute extends Route {
|
|
|
4
4
|
@service store;
|
|
5
5
|
|
|
6
6
|
model({ public_id }) {
|
|
7
|
-
return this.store.
|
|
7
|
+
return this.store.queryRecord('fleet', { public_id, single: true, with: ['parent_fleet', 'service_area', 'zone'] });
|
|
8
8
|
}
|
|
9
9
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementFuelReportsIndexDetailsRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
queryParams = {
|
|
8
|
+
view: { refreshModel: false },
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
model({ public_id }) {
|
|
12
|
+
return this.store.queryRecord('fuel-report', { public_id, single: true, with: ['driver', 'vehicle', 'reporter'] });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementFuelReportsIndexEditRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
model({ public_id }) {
|
|
8
|
+
return this.store.queryRecord('fuel-report', { public_id, single: true, with: ['driver', 'vehicle', 'reporter'] });
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -14,10 +14,12 @@ export default class ManagementFuelReportsIndexRoute extends Route {
|
|
|
14
14
|
limit: { refreshModel: true },
|
|
15
15
|
sort: { refreshModel: true },
|
|
16
16
|
query: { refreshModel: true },
|
|
17
|
+
vehicle: { refreshModel: true },
|
|
18
|
+
driver: { refreshModel: true },
|
|
17
19
|
status: { refreshModel: true },
|
|
18
20
|
};
|
|
19
21
|
|
|
20
22
|
model(params) {
|
|
21
|
-
return this.store.query('fuel-report', { ...params });
|
|
23
|
+
return this.store.query('fuel-report', { ...params, with: ['driver', 'vehicle', 'reporter'] });
|
|
22
24
|
}
|
|
23
25
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementIssuesIndexDetailsRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
queryParams = {
|
|
8
|
+
view: { refreshModel: false },
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
model({ public_id }) {
|
|
12
|
+
return this.store.queryRecord('issue', { public_id, single: true, with: ['driver', 'vehicle', 'assignee', 'reporter'] });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementIssuesIndexEditRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
model({ public_id }) {
|
|
8
|
+
return this.store.queryRecord('issue', { public_id, single: true, with: ['driver', 'vehicle', 'assignee', 'reporter'] });
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementPlacesIndexDetailsRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
queryParams = {
|
|
8
|
+
view: { refreshModel: false },
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
model({ public_id }) {
|
|
12
|
+
return this.store.findRecord('place', public_id);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementPlacesIndexEditRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
model({ public_id }) {
|
|
8
|
+
return this.store.findRecord('place', public_id);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -4,6 +4,11 @@ import { inject as service } from '@ember/service';
|
|
|
4
4
|
export default class ManagementPlacesIndexRoute extends Route {
|
|
5
5
|
@service store;
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Queryable parameters
|
|
9
|
+
*
|
|
10
|
+
* @var {Object}
|
|
11
|
+
*/
|
|
7
12
|
queryParams = {
|
|
8
13
|
page: { refreshModel: true },
|
|
9
14
|
limit: { refreshModel: true },
|
|
@@ -13,6 +18,6 @@ export default class ManagementPlacesIndexRoute extends Route {
|
|
|
13
18
|
};
|
|
14
19
|
|
|
15
20
|
model(params) {
|
|
16
|
-
return this.store.query('place', {
|
|
21
|
+
return this.store.query('place', { params });
|
|
17
22
|
}
|
|
18
23
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementVendorsIndexDetailsRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
queryParams = {
|
|
8
|
+
view: { refreshModel: false },
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
model({ public_id }) {
|
|
12
|
+
const isIntegratedVendor = typeof public_id === 'string' && public_id.startsWith('integrated_vendor_');
|
|
13
|
+
return this.store.findRecord(isIntegratedVendor ? 'integrated-vendor' : 'vendor', public_id);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Route from '@ember/routing/route';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
|
|
4
|
+
export default class ManagementVendorsIndexEditRoute extends Route {
|
|
5
|
+
@service store;
|
|
6
|
+
|
|
7
|
+
model({ public_id }) {
|
|
8
|
+
const isIntegratedVendor = typeof public_id === 'string' && public_id.startsWith('integrated_vendor_');
|
|
9
|
+
return this.store.findRecord(isIntegratedVendor ? 'integrated-vendor' : 'vendor', public_id);
|
|
10
|
+
}
|
|
11
|
+
}
|