@fleetbase/fleetops-engine 0.3.1 → 0.3.3
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/admin/visibility-controls.js +1 -0
- 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/layout/fleet-ops-sidebar.js +2 -1
- package/addon/components/live-map-drawer/driver-listing.hbs +6 -0
- package/addon/components/live-map-drawer/driver-listing.js +240 -0
- package/addon/components/live-map-drawer/place-listing.hbs +6 -0
- package/addon/components/live-map-drawer/place-listing.js +204 -0
- package/addon/components/live-map-drawer/vehicle-listing.hbs +6 -0
- package/addon/components/live-map-drawer/vehicle-listing.js +216 -0
- package/addon/components/live-map-drawer.hbs +17 -0
- package/addon/components/live-map-drawer.js +104 -0
- package/addon/components/live-map.hbs +5 -1
- package/addon/components/live-map.js +109 -15
- package/addon/components/map-container/toolbar.hbs +15 -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/modals/order-event.hbs +1 -1
- package/addon/components/order/schedule-card.hbs +4 -4
- package/addon/components/order/schedule-card.js +13 -6
- 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/controllers/operations/orders/index.js +29 -15
- package/addon/controllers/operations/scheduler/index.js +45 -30
- 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/operations/scheduler/index.js +25 -0
- package/addon/routes.js +27 -7
- package/addon/services/context-panel.js +60 -0
- package/addon/styles/fleetops-engine.css +28 -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 +5 -5
- package/addon/templates/operations/scheduler/index.hbs +33 -9
- package/addon/utils/create-full-calendar-event-from-order.js +8 -0
- 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/{full-calendar/draggable.js → fleet-listing-panel.js} +1 -1
- 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/{full-calendar.js → fuel-report-panel.js} +1 -1
- package/app/components/issue-form-panel.js +1 -0
- package/app/components/issue-panel.js +1 -0
- package/app/components/live-map-drawer/driver-listing.js +1 -0
- package/app/components/live-map-drawer/place-listing.js +1 -0
- package/app/components/live-map-drawer/vehicle-listing.js +1 -0
- package/app/components/live-map-drawer.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/app/utils/create-full-calendar-event-from-order.js +1 -0
- package/composer.json +1 -1
- package/config/environment.js +2 -1
- package/extension.json +1 -1
- package/package.json +5 -4
- 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/Order.php +22 -0
- package/server/src/Models/Vehicle.php +1 -1
- package/server/src/Models/VehicleDevice.php +4 -2
- package/server/src/Models/VehicleDeviceEvent.php +8 -4
- 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/Observers/FleetObserver.php +19 -0
- package/server/src/Providers/FleetOpsServiceProvider.php +1 -0
- package/server/src/Providers/NotificationServiceProvider.php +1 -1
- package/server/src/routes.php +2 -2
- package/addon/components/full-calendar/draggable.js +0 -1
- package/addon/components/full-calendar.js +0 -1
|
@@ -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
|
}
|
|
@@ -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';
|
|
@@ -9,20 +9,6 @@ import { timeout } from 'ember-concurrency';
|
|
|
9
9
|
import { task } from 'ember-concurrency-decorators';
|
|
10
10
|
|
|
11
11
|
export default class OperationsOrdersIndexController extends Controller {
|
|
12
|
-
/**
|
|
13
|
-
* Injection of the `ManagementDriversIndexController` controller
|
|
14
|
-
*
|
|
15
|
-
* @memberof OperationsOrdersIndexController
|
|
16
|
-
*/
|
|
17
|
-
@controller('management.drivers.index') driversController;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Injection of the `ManagementFleetIndexController` controller
|
|
21
|
-
*
|
|
22
|
-
* @memberof OperationsOrdersIndexController
|
|
23
|
-
*/
|
|
24
|
-
@controller('management.fleets.index') fleetController;
|
|
25
|
-
|
|
26
12
|
/**
|
|
27
13
|
* Inject the `currentUser` service
|
|
28
14
|
*
|
|
@@ -266,6 +252,13 @@ export default class OperationsOrdersIndexController extends Controller {
|
|
|
266
252
|
*/
|
|
267
253
|
@tracked leafletMap;
|
|
268
254
|
|
|
255
|
+
/**
|
|
256
|
+
* Reference to the drawer context API.
|
|
257
|
+
*
|
|
258
|
+
* @type {Object}
|
|
259
|
+
*/
|
|
260
|
+
@tracked drawer;
|
|
261
|
+
|
|
269
262
|
/**
|
|
270
263
|
* Current layout type (e.g., 'map', 'table', 'kanban', 'analytics')
|
|
271
264
|
*
|
|
@@ -722,6 +715,27 @@ export default class OperationsOrdersIndexController extends Controller {
|
|
|
722
715
|
this.liveMap = liveMap;
|
|
723
716
|
}
|
|
724
717
|
|
|
718
|
+
/**
|
|
719
|
+
* Sets the drawer component context api.
|
|
720
|
+
*
|
|
721
|
+
* @param {Object} drawerApi
|
|
722
|
+
* @memberof OperationsOrdersIndexController
|
|
723
|
+
*/
|
|
724
|
+
@action setDrawerContext(drawerApi) {
|
|
725
|
+
this.drawer = drawerApi;
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
/**
|
|
729
|
+
* Toggles the LiveMap drawer component.
|
|
730
|
+
*
|
|
731
|
+
* @memberof OperationsOrdersIndexController
|
|
732
|
+
*/
|
|
733
|
+
@action onPressLiveMapDrawerToggle() {
|
|
734
|
+
if (this.drawer) {
|
|
735
|
+
this.drawer.toggleMinimize();
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
|
|
725
739
|
/**
|
|
726
740
|
* Exports all orders.
|
|
727
741
|
* @action
|
|
@@ -1,31 +1,26 @@
|
|
|
1
1
|
import Controller from '@ember/controller';
|
|
2
|
+
import { tracked } from '@glimmer/tracking';
|
|
2
3
|
import { inject as service } from '@ember/service';
|
|
3
|
-
import {
|
|
4
|
+
import { action } from '@ember/object';
|
|
4
5
|
import { format, isValid as isValidDate } from 'date-fns';
|
|
6
|
+
import createFullCalendarEventFromOrder from '../../../utils/create-full-calendar-event-from-order';
|
|
5
7
|
|
|
6
8
|
export default class OperationsSchedulerIndexController extends Controller {
|
|
7
9
|
@service modalsManager;
|
|
8
10
|
@service notifications;
|
|
9
|
-
|
|
10
|
-
@
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@computed('scheduledOrders.@each.scheduled_at') get events() {
|
|
19
|
-
return this.scheduledOrders.map((order) => ({
|
|
20
|
-
id: order.id,
|
|
21
|
-
title: `${order.scheduledAtTime} - ${order.public_id}`,
|
|
22
|
-
start: order.scheduled_at,
|
|
23
|
-
allDay: true,
|
|
24
|
-
}));
|
|
11
|
+
@service store;
|
|
12
|
+
@service hostRouter;
|
|
13
|
+
@tracked scheduledOrders = [];
|
|
14
|
+
@tracked unscheduledOrders = [];
|
|
15
|
+
@tracked events = [];
|
|
16
|
+
|
|
17
|
+
@action setCalendarApi(calendar) {
|
|
18
|
+
this.calendar = calendar;
|
|
25
19
|
}
|
|
26
20
|
|
|
27
|
-
@action viewEvent(order
|
|
28
|
-
|
|
21
|
+
@action viewEvent(order) {
|
|
22
|
+
// get the event from the calendar
|
|
23
|
+
let event = this.calendar.getEventById(order.id);
|
|
29
24
|
|
|
30
25
|
this.modalsManager.show('modals/order-event', {
|
|
31
26
|
title: `Scheduling for ${order.public_id}`,
|
|
@@ -34,7 +29,7 @@ export default class OperationsSchedulerIndexController extends Controller {
|
|
|
34
29
|
hideDeclineButton: true,
|
|
35
30
|
order,
|
|
36
31
|
reschedule: (date) => {
|
|
37
|
-
if (typeof date
|
|
32
|
+
if (date && typeof date.toDate === 'function') {
|
|
38
33
|
date = date.toDate();
|
|
39
34
|
}
|
|
40
35
|
|
|
@@ -51,15 +46,27 @@ export default class OperationsSchedulerIndexController extends Controller {
|
|
|
51
46
|
}
|
|
52
47
|
|
|
53
48
|
return order.save().then((order) => {
|
|
54
|
-
|
|
49
|
+
// remove event from calendar
|
|
50
|
+
if (event) {
|
|
51
|
+
event.remove();
|
|
52
|
+
}
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
if (order.scheduled_at) {
|
|
55
|
+
// notify order has been scheduled
|
|
56
|
+
this.notifications.success(`Order '${order.public_id}' has been scheduled at ${order.scheduledAt}.`);
|
|
57
|
+
// add event to calendar
|
|
58
|
+
event = this.calendar.addEvent(createFullCalendarEventFromOrder(order));
|
|
59
|
+
} else {
|
|
60
|
+
this.notifications.info(`Order '${order.public_id}' has been unscheduled.`);
|
|
61
|
+
}
|
|
58
62
|
|
|
59
|
-
//
|
|
60
|
-
if (
|
|
61
|
-
event.
|
|
63
|
+
// update event props
|
|
64
|
+
if (event && typeof event.setProp === 'function') {
|
|
65
|
+
event.setProp('title', order.eventTitle);
|
|
62
66
|
}
|
|
67
|
+
|
|
68
|
+
// refresh route
|
|
69
|
+
this.hostRouter.refresh();
|
|
63
70
|
});
|
|
64
71
|
},
|
|
65
72
|
});
|
|
@@ -80,7 +87,9 @@ export default class OperationsSchedulerIndexController extends Controller {
|
|
|
80
87
|
const order = this.store.peekRecord('order', data.id);
|
|
81
88
|
|
|
82
89
|
order.set('scheduled_at', date);
|
|
83
|
-
order.save()
|
|
90
|
+
return order.save().then(() => {
|
|
91
|
+
this.hostRouter.refresh();
|
|
92
|
+
});
|
|
84
93
|
}
|
|
85
94
|
|
|
86
95
|
@action receivedEvent(eventReceivedInfo) {
|
|
@@ -88,7 +97,9 @@ export default class OperationsSchedulerIndexController extends Controller {
|
|
|
88
97
|
const order = this.store.peekRecord('order', event.id);
|
|
89
98
|
|
|
90
99
|
// update event props
|
|
91
|
-
event
|
|
100
|
+
if (typeof event.setProp === 'function') {
|
|
101
|
+
event.setProp('title', order.eventTitle);
|
|
102
|
+
}
|
|
92
103
|
}
|
|
93
104
|
|
|
94
105
|
@action rescheduleEventFromDrag(eventDropInfo) {
|
|
@@ -102,9 +113,13 @@ export default class OperationsSchedulerIndexController extends Controller {
|
|
|
102
113
|
|
|
103
114
|
// set and save order props
|
|
104
115
|
order.set('scheduled_at', isValidDate(newDate) ? newDate : start);
|
|
105
|
-
order.save()
|
|
116
|
+
order.save().then(() => {
|
|
117
|
+
this.hostRouter.refresh();
|
|
118
|
+
});
|
|
106
119
|
|
|
107
120
|
// update event props
|
|
108
|
-
event
|
|
121
|
+
if (typeof event.setProp === 'function') {
|
|
122
|
+
event.setProp('title', order.eventTitle);
|
|
123
|
+
}
|
|
109
124
|
}
|
|
110
125
|
}
|
|
@@ -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
|
}
|