@fleetbase/fleetops-engine 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/addon/components/driver-form-panel.hbs +131 -0
- package/addon/components/driver-form-panel.js +39 -0
- package/addon/components/driver-panel/details.hbs +48 -0
- package/addon/components/driver-panel.hbs +60 -0
- package/addon/components/driver-panel.js +57 -0
- package/addon/components/fleet-form-panel.hbs +46 -0
- package/addon/components/fleet-form-panel.js +3 -0
- package/addon/components/fleet-panel.hbs +70 -0
- package/addon/components/fleet-panel.js +43 -0
- package/addon/components/fleet-vehicle-listing.hbs +73 -0
- package/addon/components/fleet-vehicle-listing.js +117 -0
- package/addon/components/leaflet-drift-marker.js +53 -0
- package/addon/components/live-map.hbs +4 -4
- package/addon/components/live-map.js +104 -34
- package/addon/components/modals/fleet-details.hbs +1 -0
- package/addon/components/settings-window.hbs +1 -1
- package/addon/components/vehicle-form-panel.hbs +131 -0
- package/addon/components/vehicle-form-panel.js +39 -0
- package/addon/components/vehicle-panel/details.hbs +34 -0
- package/addon/components/vehicle-panel/tracking.hbs +1 -0
- package/addon/components/vehicle-panel.hbs +60 -0
- package/addon/components/vehicle-panel.js +57 -0
- package/addon/controllers/management/drivers/index/details.js +8 -0
- package/addon/controllers/management/drivers/index/edit.js +80 -0
- package/addon/controllers/management/drivers/index/new.js +128 -0
- package/addon/controllers/management/drivers/index.js +212 -202
- package/addon/controllers/management/fleets/index/details.js +8 -0
- package/addon/controllers/management/fleets/index/edit.js +77 -0
- package/addon/controllers/management/fleets/index/new.js +103 -0
- package/addon/controllers/management/fleets/index.js +49 -77
- package/addon/controllers/management/vehicles/index/details.js +12 -0
- package/addon/controllers/management/vehicles/index/edit.js +8 -0
- package/addon/controllers/management/vehicles/index/new.js +21 -0
- package/addon/controllers/management/vehicles/index.js +6 -129
- package/addon/controllers/operations/orders/index/new.js +67 -20
- package/addon/controllers/operations/orders/index/view.js +15 -4
- package/addon/controllers/operations/orders/index.js +58 -7
- package/addon/controllers/operations/service-rates/index/edit.js +1 -1
- package/addon/controllers/operations/service-rates/index/new.js +10 -11
- package/addon/controllers/operations/service-rates/index.js +7 -0
- package/addon/engine.js +6 -0
- package/addon/initializers/load-leaflet-assets.js +6 -1
- package/addon/instance-initializers/register-leaflet-drift-marker.js +17 -0
- package/addon/routes/management/drivers/index/details.js +9 -0
- package/addon/routes/management/drivers/index/edit.js +13 -0
- package/addon/routes/management/drivers/index/new.js +3 -0
- package/addon/routes/management/fleets/index/details.js +9 -0
- package/addon/routes/management/fleets/index/edit.js +9 -0
- package/addon/routes/management/fleets/index/new.js +3 -0
- package/addon/routes/management/fleets/index.js +1 -0
- package/addon/routes/management/vehicles/index/details.js +18 -0
- package/addon/routes/management/vehicles/index/edit.js +14 -0
- package/addon/routes/management/vehicles/index/new.js +3 -0
- package/addon/routes/operations/orders/index/new.js +3 -1
- package/addon/routes/operations/orders/index/view.js +50 -0
- package/addon/routes/operations/service-rates/index/edit.js +7 -0
- package/addon/routes.js +15 -3
- package/addon/templates/management/drivers/index/details.hbs +1 -0
- package/addon/templates/management/drivers/index/edit.hbs +1 -0
- package/addon/templates/management/drivers/index/new.hbs +1 -0
- package/addon/templates/management/drivers/index.hbs +3 -1
- package/addon/templates/management/fleets/index/details.hbs +1 -0
- package/addon/templates/management/fleets/index/edit.hbs +1 -0
- package/addon/templates/management/fleets/index/new.hbs +1 -0
- package/addon/templates/management/vehicles/index/details.hbs +1 -0
- package/addon/templates/management/vehicles/index/edit.hbs +1 -0
- package/addon/templates/management/vehicles/index/new.hbs +1 -0
- package/addon/templates/operations/orders/index/new.hbs +1 -1
- package/addon/templates/operations/service-rates/index/new.hbs +4 -4
- package/app/components/driver-form-panel.js +1 -0
- package/app/components/driver-panel/details.js +1 -0
- package/app/components/driver-panel.js +1 -0
- package/app/components/fleet-form-panel.js +1 -0
- package/app/components/fleet-panel.js +1 -0
- package/app/components/fleet-vehicle-listing.js +1 -0
- package/app/components/leaflet-drift-marker.js +1 -0
- package/app/components/vehicle-form-panel.js +1 -0
- package/app/components/vehicle-panel/details.js +1 -0
- package/app/components/vehicle-panel/tracking.js +1 -0
- package/app/components/vehicle-panel.js +1 -0
- package/app/controllers/management/drivers/index/new.js +1 -0
- package/app/controllers/management/vehicles/index/details.js +1 -0
- package/app/controllers/management/vehicles/index/new.js +1 -0
- package/app/routes/management/drivers/index/details.js +1 -0
- package/app/routes/management/drivers/index/edit.js +1 -0
- package/app/routes/management/drivers/index/new.js +1 -0
- package/app/routes/management/vehicles/index/details.js +1 -0
- package/app/routes/management/vehicles/index/edit.js +1 -0
- package/app/routes/management/vehicles/index/new.js +1 -0
- package/app/templates/management/drivers/index/details.js +1 -0
- package/app/templates/management/drivers/index/edit.js +1 -0
- package/app/templates/management/drivers/index/new.js +1 -0
- package/app/templates/management/vehicles/index/details.js +1 -0
- package/app/templates/management/vehicles/index/edit.js +1 -0
- package/app/templates/management/vehicles/index/new.js +1 -0
- package/assets/images/boxes/large.png +0 -0
- package/assets/images/boxes/medium.png +0 -0
- package/assets/images/boxes/small.png +0 -0
- package/assets/images/boxes/x-large.png +0 -0
- package/index.js +16 -0
- package/package.json +6 -5
|
@@ -8,8 +8,7 @@ import { timeout } from 'ember-concurrency';
|
|
|
8
8
|
import { task } from 'ember-concurrency-decorators';
|
|
9
9
|
import extractCoordinates from '@fleetbase/ember-core/utils/extract-coordinates';
|
|
10
10
|
import leafletIcon from '@fleetbase/ember-core/utils/leaflet-icon';
|
|
11
|
-
import
|
|
12
|
-
import Point from '@fleetbase/fleetops-data/utils/geojson/point';
|
|
11
|
+
// import Point from '@fleetbase/fleetops-data/utils/geojson/point';
|
|
13
12
|
|
|
14
13
|
export default class ManagementDriversIndexController extends Controller {
|
|
15
14
|
/**
|
|
@@ -496,131 +495,135 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
496
495
|
* @param {Object} options
|
|
497
496
|
* @void
|
|
498
497
|
*/
|
|
499
|
-
@action viewDriver(driver
|
|
500
|
-
|
|
501
|
-
this.modalsManager.done().then(() => {
|
|
502
|
-
return this.viewOnMap(driver, {
|
|
503
|
-
onFinish: () => {
|
|
504
|
-
this.viewDriver(driver);
|
|
505
|
-
},
|
|
506
|
-
});
|
|
507
|
-
});
|
|
508
|
-
};
|
|
509
|
-
|
|
510
|
-
this.modalsManager.show('modals/driver-details', {
|
|
511
|
-
title: driver.name,
|
|
512
|
-
titleComponent: 'modal/title-with-buttons',
|
|
513
|
-
acceptButtonText: 'Done',
|
|
514
|
-
acceptButtonIcon: 'check',
|
|
515
|
-
acceptButtonIconPrefix: 'fas',
|
|
516
|
-
hideDeclineButton: true,
|
|
517
|
-
declineButtonIcon: 'times',
|
|
518
|
-
declineButtonIconPrefix: 'fas',
|
|
519
|
-
headerStatus: driver.status,
|
|
520
|
-
headerButtons: [
|
|
521
|
-
{
|
|
522
|
-
icon: 'cog',
|
|
523
|
-
iconPrefix: 'fas',
|
|
524
|
-
type: 'link',
|
|
525
|
-
size: 'xs',
|
|
526
|
-
ddMenuLabel: 'Driver Actions',
|
|
527
|
-
options: [
|
|
528
|
-
{
|
|
529
|
-
title: 'Edit Driver',
|
|
530
|
-
icon: 'edit',
|
|
531
|
-
action: () => {
|
|
532
|
-
this.modalsManager.done().then(() => {
|
|
533
|
-
return this.editDriver(driver, {
|
|
534
|
-
onFinish: () => {
|
|
535
|
-
this.viewDriver(driver);
|
|
536
|
-
},
|
|
537
|
-
});
|
|
538
|
-
});
|
|
539
|
-
},
|
|
540
|
-
},
|
|
541
|
-
{
|
|
542
|
-
separator: true,
|
|
543
|
-
},
|
|
544
|
-
{
|
|
545
|
-
title: 'Assign Order to Driver',
|
|
546
|
-
icon: 'user-check',
|
|
547
|
-
action: () => {
|
|
548
|
-
this.modalsManager.done().then(() => {
|
|
549
|
-
return this.assignOrder(driver, {
|
|
550
|
-
onFinish: () => {
|
|
551
|
-
this.viewDriver(driver);
|
|
552
|
-
},
|
|
553
|
-
});
|
|
554
|
-
});
|
|
555
|
-
},
|
|
556
|
-
},
|
|
557
|
-
{
|
|
558
|
-
title: 'Assign Vehicle to Driver',
|
|
559
|
-
icon: 'car',
|
|
560
|
-
action: () => {
|
|
561
|
-
this.modalsManager.done().then(() => {
|
|
562
|
-
return this.assignVehicle(driver, {
|
|
563
|
-
onFinish: () => {
|
|
564
|
-
this.viewDriver(driver);
|
|
565
|
-
},
|
|
566
|
-
});
|
|
567
|
-
});
|
|
568
|
-
},
|
|
569
|
-
},
|
|
570
|
-
{
|
|
571
|
-
title: 'Locate Driver',
|
|
572
|
-
icon: 'map-pin',
|
|
573
|
-
action: viewDriverOnMap,
|
|
574
|
-
},
|
|
575
|
-
{
|
|
576
|
-
separator: true,
|
|
577
|
-
},
|
|
578
|
-
{
|
|
579
|
-
title: 'Listen to socket channel',
|
|
580
|
-
icon: 'headphones',
|
|
581
|
-
action: () => {
|
|
582
|
-
this.modalsManager.done().then(() => {
|
|
583
|
-
this.hostRouter.transitionTo('console.developers-console.sockets.watch', `driver.${driver.public_id}`);
|
|
584
|
-
});
|
|
585
|
-
},
|
|
586
|
-
},
|
|
587
|
-
{
|
|
588
|
-
separator: true,
|
|
589
|
-
},
|
|
590
|
-
{
|
|
591
|
-
title: 'Delete Driver',
|
|
592
|
-
icon: 'trash',
|
|
593
|
-
action: () => {
|
|
594
|
-
this.modalsManager.done().then(() => {
|
|
595
|
-
return this.deleteDriver(driver, {
|
|
596
|
-
onDecline: () => {
|
|
597
|
-
this.viewDriver(driver);
|
|
598
|
-
},
|
|
599
|
-
});
|
|
600
|
-
});
|
|
601
|
-
},
|
|
602
|
-
},
|
|
603
|
-
],
|
|
604
|
-
},
|
|
605
|
-
],
|
|
606
|
-
viewVendor: () =>
|
|
607
|
-
this.viewDriverVendor(driver, {
|
|
608
|
-
onFinish: () => {
|
|
609
|
-
this.viewDriver(driver);
|
|
610
|
-
},
|
|
611
|
-
}),
|
|
612
|
-
viewVehicle: () =>
|
|
613
|
-
this.viewDriverVehicle(driver, {
|
|
614
|
-
onFinish: () => {
|
|
615
|
-
this.viewDriver(driver);
|
|
616
|
-
},
|
|
617
|
-
}),
|
|
618
|
-
viewDriverOnMap,
|
|
619
|
-
driver,
|
|
620
|
-
...options,
|
|
621
|
-
});
|
|
498
|
+
@action viewDriver(driver) {
|
|
499
|
+
return this.transitionToRoute('management.drivers.index.details', driver);
|
|
622
500
|
}
|
|
623
501
|
|
|
502
|
+
// @action viewDriver(driver, options = {}) {
|
|
503
|
+
// const viewDriverOnMap = () => {
|
|
504
|
+
// this.modalsManager.done().then(() => {
|
|
505
|
+
// return this.viewOnMap(driver, {
|
|
506
|
+
// onFinish: () => {
|
|
507
|
+
// this.viewDriver(driver);
|
|
508
|
+
// },
|
|
509
|
+
// });
|
|
510
|
+
// });
|
|
511
|
+
// };
|
|
512
|
+
|
|
513
|
+
// this.modalsManager.show('modals/driver-details', {
|
|
514
|
+
// title: driver.name,
|
|
515
|
+
// titleComponent: 'modal/title-with-buttons',
|
|
516
|
+
// acceptButtonText: 'Done',
|
|
517
|
+
// acceptButtonIcon: 'check',
|
|
518
|
+
// acceptButtonIconPrefix: 'fas',
|
|
519
|
+
// hideDeclineButton: true,
|
|
520
|
+
// declineButtonIcon: 'times',
|
|
521
|
+
// declineButtonIconPrefix: 'fas',
|
|
522
|
+
// headerStatus: driver.status,
|
|
523
|
+
// headerButtons: [
|
|
524
|
+
// {
|
|
525
|
+
// icon: 'cog',
|
|
526
|
+
// iconPrefix: 'fas',
|
|
527
|
+
// type: 'link',
|
|
528
|
+
// size: 'xs',
|
|
529
|
+
// ddMenuLabel: 'Driver Actions',
|
|
530
|
+
// options: [
|
|
531
|
+
// {
|
|
532
|
+
// title: 'Edit Driver',
|
|
533
|
+
// icon: 'edit',
|
|
534
|
+
// action: () => {
|
|
535
|
+
// this.modalsManager.done().then(() => {
|
|
536
|
+
// return this.editDriver(driver, {
|
|
537
|
+
// onFinish: () => {
|
|
538
|
+
// this.viewDriver(driver);
|
|
539
|
+
// },
|
|
540
|
+
// });
|
|
541
|
+
// });
|
|
542
|
+
// },
|
|
543
|
+
// },
|
|
544
|
+
// {
|
|
545
|
+
// separator: true,
|
|
546
|
+
// },
|
|
547
|
+
// {
|
|
548
|
+
// title: 'Assign Order to Driver',
|
|
549
|
+
// icon: 'user-check',
|
|
550
|
+
// action: () => {
|
|
551
|
+
// this.modalsManager.done().then(() => {
|
|
552
|
+
// return this.assignOrder(driver, {
|
|
553
|
+
// onFinish: () => {
|
|
554
|
+
// this.viewDriver(driver);
|
|
555
|
+
// },
|
|
556
|
+
// });
|
|
557
|
+
// });
|
|
558
|
+
// },
|
|
559
|
+
// },
|
|
560
|
+
// {
|
|
561
|
+
// title: 'Assign Vehicle to Driver',
|
|
562
|
+
// icon: 'car',
|
|
563
|
+
// action: () => {
|
|
564
|
+
// this.modalsManager.done().then(() => {
|
|
565
|
+
// return this.assignVehicle(driver, {
|
|
566
|
+
// onFinish: () => {
|
|
567
|
+
// this.viewDriver(driver);
|
|
568
|
+
// },
|
|
569
|
+
// });
|
|
570
|
+
// });
|
|
571
|
+
// },
|
|
572
|
+
// },
|
|
573
|
+
// {
|
|
574
|
+
// title: 'Locate Driver',
|
|
575
|
+
// icon: 'map-pin',
|
|
576
|
+
// action: viewDriverOnMap,
|
|
577
|
+
// },
|
|
578
|
+
// {
|
|
579
|
+
// separator: true,
|
|
580
|
+
// },
|
|
581
|
+
// {
|
|
582
|
+
// title: 'Listen to socket channel',
|
|
583
|
+
// icon: 'headphones',
|
|
584
|
+
// action: () => {
|
|
585
|
+
// this.modalsManager.done().then(() => {
|
|
586
|
+
// this.hostRouter.transitionTo('console.developers.sockets.view', `driver.${driver.public_id}`);
|
|
587
|
+
// });
|
|
588
|
+
// },
|
|
589
|
+
// },
|
|
590
|
+
// {
|
|
591
|
+
// separator: true,
|
|
592
|
+
// },
|
|
593
|
+
// {
|
|
594
|
+
// title: 'Delete Driver',
|
|
595
|
+
// icon: 'trash',
|
|
596
|
+
// action: () => {
|
|
597
|
+
// this.modalsManager.done().then(() => {
|
|
598
|
+
// return this.deleteDriver(driver, {
|
|
599
|
+
// onDecline: () => {
|
|
600
|
+
// this.viewDriver(driver);
|
|
601
|
+
// },
|
|
602
|
+
// });
|
|
603
|
+
// });
|
|
604
|
+
// },
|
|
605
|
+
// },
|
|
606
|
+
// ],
|
|
607
|
+
// },
|
|
608
|
+
// ],
|
|
609
|
+
// viewVendor: () =>
|
|
610
|
+
// this.viewDriverVendor(driver, {
|
|
611
|
+
// onFinish: () => {
|
|
612
|
+
// this.viewDriver(driver);
|
|
613
|
+
// },
|
|
614
|
+
// }),
|
|
615
|
+
// viewVehicle: () =>
|
|
616
|
+
// this.viewDriverVehicle(driver, {
|
|
617
|
+
// onFinish: () => {
|
|
618
|
+
// this.viewDriver(driver);
|
|
619
|
+
// },
|
|
620
|
+
// }),
|
|
621
|
+
// viewDriverOnMap,
|
|
622
|
+
// driver,
|
|
623
|
+
// ...options,
|
|
624
|
+
// });
|
|
625
|
+
// }
|
|
626
|
+
|
|
624
627
|
/**
|
|
625
628
|
* Create a new `driver` in modal
|
|
626
629
|
*
|
|
@@ -628,89 +631,96 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
628
631
|
* @void
|
|
629
632
|
*/
|
|
630
633
|
@action createDriver() {
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
return this.hostRouter.refresh();
|
|
644
|
-
},
|
|
645
|
-
});
|
|
634
|
+
return this.transitionToRoute('management.drivers.index.new');
|
|
635
|
+
|
|
636
|
+
// return this.editDriver(driver, {
|
|
637
|
+
// title: 'New Driver',
|
|
638
|
+
// acceptButtonText: 'Create',
|
|
639
|
+
// acceptButtonIcon: 'check',
|
|
640
|
+
// acceptButtonIconPrefix: 'fas',
|
|
641
|
+
// successNotification: (driver) => `New driver (${driver.name}) created.`,
|
|
642
|
+
// onConfirm: () => {
|
|
643
|
+
// return this.hostRouter.refresh();
|
|
644
|
+
// },
|
|
645
|
+
// });
|
|
646
646
|
}
|
|
647
647
|
|
|
648
|
+
// /**
|
|
649
|
+
// * Edit a `driver` details
|
|
650
|
+
// *
|
|
651
|
+
// * @param {DriverModel} driver
|
|
652
|
+
// * @param {Object} options
|
|
653
|
+
// * @void
|
|
654
|
+
// */
|
|
655
|
+
// @action editDriver(driver, options = {}) {
|
|
656
|
+
// // make sure vehicle is loaded
|
|
657
|
+
// driver.loadVehicle();
|
|
658
|
+
|
|
659
|
+
// this.modalsManager.show('modals/driver-form', {
|
|
660
|
+
// title: 'Edit Driver',
|
|
661
|
+
// acceptButtonText: 'Save Changes',
|
|
662
|
+
// acceptButtonIcon: 'save',
|
|
663
|
+
// declineButtonIcon: 'times',
|
|
664
|
+
// declineButtonIconPrefix: 'fas',
|
|
665
|
+
// driver,
|
|
666
|
+
// uploadNewPhoto: (file) => {
|
|
667
|
+
// this.fetch.uploadFile.perform(
|
|
668
|
+
// file,
|
|
669
|
+
// {
|
|
670
|
+
// path: `uploads/${this.currentUser.companyId}/drivers/${driver.slug}`,
|
|
671
|
+
// subject_uuid: driver.id,
|
|
672
|
+
// subject_type: `driver`,
|
|
673
|
+
// type: `driver_photo`,
|
|
674
|
+
// },
|
|
675
|
+
// (uploadedFile) => {
|
|
676
|
+
// driver.setProperties({
|
|
677
|
+
// photo_uuid: uploadedFile.id,
|
|
678
|
+
// photo_url: uploadedFile.url,
|
|
679
|
+
// photo: uploadedFile,
|
|
680
|
+
// });
|
|
681
|
+
// }
|
|
682
|
+
// );
|
|
683
|
+
// },
|
|
684
|
+
// confirm: (modal, done) => {
|
|
685
|
+
// modal.startLoading();
|
|
686
|
+
|
|
687
|
+
// if (isBlank(driver.location)) {
|
|
688
|
+
// // set default location from currentUser service
|
|
689
|
+
// const { latitude, longitude } = this.currentUser;
|
|
690
|
+
// driver.set('location', new Point(latitude, longitude));
|
|
691
|
+
// }
|
|
692
|
+
|
|
693
|
+
// driver
|
|
694
|
+
// .save()
|
|
695
|
+
// .then((driver) => {
|
|
696
|
+
// if (typeof options.successNotification === 'function') {
|
|
697
|
+
// this.notifications.success(options.successNotification(driver));
|
|
698
|
+
// } else {
|
|
699
|
+
// this.notifications.success(options.successNotification || `${driver.name} details updated.`);
|
|
700
|
+
// }
|
|
701
|
+
|
|
702
|
+
// done();
|
|
703
|
+
// })
|
|
704
|
+
// .catch((error) => {
|
|
705
|
+
// // driver.rollbackAttributes();
|
|
706
|
+
// modal.stopLoading();
|
|
707
|
+
// this.notifications.serverError(error);
|
|
708
|
+
// });
|
|
709
|
+
// },
|
|
710
|
+
// ...options,
|
|
711
|
+
// });
|
|
712
|
+
// }
|
|
713
|
+
|
|
648
714
|
/**
|
|
649
|
-
*
|
|
715
|
+
* View a `driver` details in modal
|
|
650
716
|
*
|
|
651
|
-
* @param {
|
|
717
|
+
* @param {VehicleModel} driver
|
|
652
718
|
* @param {Object} options
|
|
653
719
|
* @void
|
|
654
720
|
*/
|
|
655
|
-
@action editDriver(driver
|
|
656
|
-
|
|
657
|
-
driver.loadVehicle();
|
|
658
|
-
|
|
659
|
-
this.modalsManager.show('modals/driver-form', {
|
|
660
|
-
title: 'Edit Driver',
|
|
661
|
-
acceptButtonText: 'Save Changes',
|
|
662
|
-
acceptButtonIcon: 'save',
|
|
663
|
-
declineButtonIcon: 'times',
|
|
664
|
-
declineButtonIconPrefix: 'fas',
|
|
665
|
-
driver,
|
|
666
|
-
uploadNewPhoto: (file) => {
|
|
667
|
-
this.fetch.uploadFile.perform(
|
|
668
|
-
file,
|
|
669
|
-
{
|
|
670
|
-
path: `uploads/${this.currentUser.companyId}/drivers/${driver.slug}`,
|
|
671
|
-
subject_uuid: driver.id,
|
|
672
|
-
subject_type: `driver`,
|
|
673
|
-
type: `driver_photo`,
|
|
674
|
-
},
|
|
675
|
-
(uploadedFile) => {
|
|
676
|
-
driver.setProperties({
|
|
677
|
-
photo_uuid: uploadedFile.id,
|
|
678
|
-
photo_url: uploadedFile.url,
|
|
679
|
-
photo: uploadedFile,
|
|
680
|
-
});
|
|
681
|
-
}
|
|
682
|
-
);
|
|
683
|
-
},
|
|
684
|
-
confirm: (modal, done) => {
|
|
685
|
-
modal.startLoading();
|
|
686
|
-
|
|
687
|
-
if (isBlank(driver.location)) {
|
|
688
|
-
// set default location from currentUser service
|
|
689
|
-
const { latitude, longitude } = this.currentUser;
|
|
690
|
-
driver.set('location', new Point(latitude, longitude));
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
driver
|
|
694
|
-
.save()
|
|
695
|
-
.then((driver) => {
|
|
696
|
-
if (typeof options.successNotification === 'function') {
|
|
697
|
-
this.notifications.success(options.successNotification(driver));
|
|
698
|
-
} else {
|
|
699
|
-
this.notifications.success(options.successNotification || `${driver.name} details updated.`);
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
done();
|
|
703
|
-
})
|
|
704
|
-
.catch((error) => {
|
|
705
|
-
// driver.rollbackAttributes();
|
|
706
|
-
modal.stopLoading();
|
|
707
|
-
this.notifications.serverError(error);
|
|
708
|
-
});
|
|
709
|
-
},
|
|
710
|
-
...options,
|
|
711
|
-
});
|
|
721
|
+
@action editDriver(driver) {
|
|
722
|
+
return this.transitionToRoute('management.drivers.index.edit', driver);
|
|
712
723
|
}
|
|
713
|
-
|
|
714
724
|
/**
|
|
715
725
|
* Delete a `driver` via confirm prompt
|
|
716
726
|
*
|
|
@@ -776,7 +786,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
776
786
|
}
|
|
777
787
|
|
|
778
788
|
/**
|
|
779
|
-
* Prompt user to assign a `
|
|
789
|
+
* Prompt user to assign a `driver` to a `driver`
|
|
780
790
|
*
|
|
781
791
|
* @param {DriverModel} driver
|
|
782
792
|
* @param {Object} options
|
|
@@ -847,7 +857,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
847
857
|
@action async viewDriverVehicle(driver, options = {}) {
|
|
848
858
|
this.modalsManager.displayLoader();
|
|
849
859
|
|
|
850
|
-
const vehicle = await this.store.
|
|
860
|
+
const vehicle = await this.store.queryRecord('vehicle', driver.vehicle_uuid);
|
|
851
861
|
|
|
852
862
|
this.modalsManager.done().then(() => {
|
|
853
863
|
return this.vehicles.viewVehicle(vehicle, options);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import Controller from '@ember/controller';
|
|
2
|
+
import { action } from '@ember/object';
|
|
3
|
+
|
|
4
|
+
export default class ManagementFleetsIndexDetailsController extends Controller {
|
|
5
|
+
@action transitionBack() {
|
|
6
|
+
return this.transitionToRoute('management.fleets.index');
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import Controller from '@ember/controller';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { action } from '@ember/object';
|
|
5
|
+
|
|
6
|
+
export default class ManagementFleetsIndexEditController extends Controller {
|
|
7
|
+
/**
|
|
8
|
+
* True if updating service rate.
|
|
9
|
+
*
|
|
10
|
+
* @var {Boolean}
|
|
11
|
+
*/
|
|
12
|
+
@tracked isUpdatingFleet = false;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Inject the `loader` service
|
|
16
|
+
*
|
|
17
|
+
* @var {Service}
|
|
18
|
+
*/
|
|
19
|
+
@service loader;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Inject the `notifications` service
|
|
23
|
+
*
|
|
24
|
+
* @var {Service}
|
|
25
|
+
*/
|
|
26
|
+
@service notifications;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Inject the `hostRouter` service
|
|
30
|
+
*
|
|
31
|
+
* @var {Service}
|
|
32
|
+
*/
|
|
33
|
+
@service hostRouter;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Inject the `currentUser` service
|
|
37
|
+
*
|
|
38
|
+
* @var {Service}
|
|
39
|
+
*/
|
|
40
|
+
@service store;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Updates the fleets to server
|
|
44
|
+
*
|
|
45
|
+
* @void
|
|
46
|
+
*/
|
|
47
|
+
@action updateFleet() {
|
|
48
|
+
const { model } = this;
|
|
49
|
+
|
|
50
|
+
console.log(model, model);
|
|
51
|
+
this.isUpdatingFleet = true;
|
|
52
|
+
this.loader.showLoader('.overlay-inner-content', 'Updating fleet...');
|
|
53
|
+
|
|
54
|
+
try {
|
|
55
|
+
return model
|
|
56
|
+
.save()
|
|
57
|
+
.then((model) => {
|
|
58
|
+
return this.transitionToRoute('management.fleets.index').then(() => {
|
|
59
|
+
this.notifications.success(`Fleet '${model.name}' updated`);
|
|
60
|
+
this.hostRouter.refresh();
|
|
61
|
+
});
|
|
62
|
+
})
|
|
63
|
+
.catch(this.notifications.serverError)
|
|
64
|
+
.finally(() => {
|
|
65
|
+
this.isUpdatingFleet = false;
|
|
66
|
+
this.loader.removeLoader();
|
|
67
|
+
});
|
|
68
|
+
} catch (error) {
|
|
69
|
+
this.isUpdatingFleet = false;
|
|
70
|
+
this.loader.removeLoader();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@action transitionBack() {
|
|
75
|
+
return this.transitionToRoute('management.fleets.index');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import Controller, { inject as controller } from '@ember/controller';
|
|
2
|
+
import { inject as service } from '@ember/service';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { action } from '@ember/object';
|
|
5
|
+
|
|
6
|
+
export default class ManagementFleetsIndexNewController extends Controller {
|
|
7
|
+
/**
|
|
8
|
+
* Inject the `management.fleets.index` controller
|
|
9
|
+
*
|
|
10
|
+
* @var {Controller}
|
|
11
|
+
*/
|
|
12
|
+
@controller('management.fleets.index') index;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Inject the `currentUser` service
|
|
16
|
+
*
|
|
17
|
+
* @var {Service}
|
|
18
|
+
*/
|
|
19
|
+
@service store;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Inject the `hostRouter` service
|
|
23
|
+
*
|
|
24
|
+
* @var {Service}
|
|
25
|
+
*/
|
|
26
|
+
@service hostRouter;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Inject the `notifications` service
|
|
30
|
+
*
|
|
31
|
+
* @var {Service}
|
|
32
|
+
*/
|
|
33
|
+
@service notifications;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Inject the `loader` service
|
|
37
|
+
*
|
|
38
|
+
* @var {Service}
|
|
39
|
+
*/
|
|
40
|
+
@service loader;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The fleet being created.
|
|
44
|
+
*
|
|
45
|
+
* @var {FleetModel}
|
|
46
|
+
*/
|
|
47
|
+
@tracked fleet = this.store.createRecord('fleet', { status: 'active' });
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* True if creating fleet.
|
|
51
|
+
*
|
|
52
|
+
* @var {Boolean}
|
|
53
|
+
*/
|
|
54
|
+
@tracked isCreatingFleet = false;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Saves the fleet to server
|
|
58
|
+
*
|
|
59
|
+
* @void
|
|
60
|
+
*/
|
|
61
|
+
@action createFleet() {
|
|
62
|
+
const { fleet } = this;
|
|
63
|
+
|
|
64
|
+
this.isCreatingFleet = true;
|
|
65
|
+
this.loader.showLoader('.overlay-inner-content', 'Creating fleet...');
|
|
66
|
+
|
|
67
|
+
try {
|
|
68
|
+
return fleet
|
|
69
|
+
.save()
|
|
70
|
+
.then((fleet) => {
|
|
71
|
+
return this.transitionToRoute('management.fleets.index').then(() => {
|
|
72
|
+
this.notifications.success(`New fleet (${fleet.name}) created.`);
|
|
73
|
+
this.resetForm();
|
|
74
|
+
this.hostRouter.refresh();
|
|
75
|
+
});
|
|
76
|
+
})
|
|
77
|
+
.catch((error) => {
|
|
78
|
+
console.log(error);
|
|
79
|
+
this.notifications.serverError(error);
|
|
80
|
+
})
|
|
81
|
+
.finally(() => {
|
|
82
|
+
this.isCreatingFleet = false;
|
|
83
|
+
this.loader.removeLoader();
|
|
84
|
+
});
|
|
85
|
+
} catch (error) {
|
|
86
|
+
this.isCreatingFleet = false;
|
|
87
|
+
this.loader.removeLoader();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Resets the driver form
|
|
93
|
+
*
|
|
94
|
+
* @void
|
|
95
|
+
*/
|
|
96
|
+
@action resetForm() {
|
|
97
|
+
this.fleet = this.store.createRecord('fleet');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@action transitionBack() {
|
|
101
|
+
return this.transitionToRoute('management.fleets.index');
|
|
102
|
+
}
|
|
103
|
+
}
|