@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.
Files changed (101) hide show
  1. package/addon/components/driver-form-panel.hbs +131 -0
  2. package/addon/components/driver-form-panel.js +39 -0
  3. package/addon/components/driver-panel/details.hbs +48 -0
  4. package/addon/components/driver-panel.hbs +60 -0
  5. package/addon/components/driver-panel.js +57 -0
  6. package/addon/components/fleet-form-panel.hbs +46 -0
  7. package/addon/components/fleet-form-panel.js +3 -0
  8. package/addon/components/fleet-panel.hbs +70 -0
  9. package/addon/components/fleet-panel.js +43 -0
  10. package/addon/components/fleet-vehicle-listing.hbs +73 -0
  11. package/addon/components/fleet-vehicle-listing.js +117 -0
  12. package/addon/components/leaflet-drift-marker.js +53 -0
  13. package/addon/components/live-map.hbs +4 -4
  14. package/addon/components/live-map.js +104 -34
  15. package/addon/components/modals/fleet-details.hbs +1 -0
  16. package/addon/components/settings-window.hbs +1 -1
  17. package/addon/components/vehicle-form-panel.hbs +131 -0
  18. package/addon/components/vehicle-form-panel.js +39 -0
  19. package/addon/components/vehicle-panel/details.hbs +34 -0
  20. package/addon/components/vehicle-panel/tracking.hbs +1 -0
  21. package/addon/components/vehicle-panel.hbs +60 -0
  22. package/addon/components/vehicle-panel.js +57 -0
  23. package/addon/controllers/management/drivers/index/details.js +8 -0
  24. package/addon/controllers/management/drivers/index/edit.js +80 -0
  25. package/addon/controllers/management/drivers/index/new.js +128 -0
  26. package/addon/controllers/management/drivers/index.js +212 -202
  27. package/addon/controllers/management/fleets/index/details.js +8 -0
  28. package/addon/controllers/management/fleets/index/edit.js +77 -0
  29. package/addon/controllers/management/fleets/index/new.js +103 -0
  30. package/addon/controllers/management/fleets/index.js +49 -77
  31. package/addon/controllers/management/vehicles/index/details.js +12 -0
  32. package/addon/controllers/management/vehicles/index/edit.js +8 -0
  33. package/addon/controllers/management/vehicles/index/new.js +21 -0
  34. package/addon/controllers/management/vehicles/index.js +6 -129
  35. package/addon/controllers/operations/orders/index/new.js +67 -20
  36. package/addon/controllers/operations/orders/index/view.js +15 -4
  37. package/addon/controllers/operations/orders/index.js +58 -7
  38. package/addon/controllers/operations/service-rates/index/edit.js +1 -1
  39. package/addon/controllers/operations/service-rates/index/new.js +10 -11
  40. package/addon/controllers/operations/service-rates/index.js +7 -0
  41. package/addon/engine.js +6 -0
  42. package/addon/initializers/load-leaflet-assets.js +6 -1
  43. package/addon/instance-initializers/register-leaflet-drift-marker.js +17 -0
  44. package/addon/routes/management/drivers/index/details.js +9 -0
  45. package/addon/routes/management/drivers/index/edit.js +13 -0
  46. package/addon/routes/management/drivers/index/new.js +3 -0
  47. package/addon/routes/management/fleets/index/details.js +9 -0
  48. package/addon/routes/management/fleets/index/edit.js +9 -0
  49. package/addon/routes/management/fleets/index/new.js +3 -0
  50. package/addon/routes/management/fleets/index.js +1 -0
  51. package/addon/routes/management/vehicles/index/details.js +18 -0
  52. package/addon/routes/management/vehicles/index/edit.js +14 -0
  53. package/addon/routes/management/vehicles/index/new.js +3 -0
  54. package/addon/routes/operations/orders/index/new.js +3 -1
  55. package/addon/routes/operations/orders/index/view.js +50 -0
  56. package/addon/routes/operations/service-rates/index/edit.js +7 -0
  57. package/addon/routes.js +15 -3
  58. package/addon/templates/management/drivers/index/details.hbs +1 -0
  59. package/addon/templates/management/drivers/index/edit.hbs +1 -0
  60. package/addon/templates/management/drivers/index/new.hbs +1 -0
  61. package/addon/templates/management/drivers/index.hbs +3 -1
  62. package/addon/templates/management/fleets/index/details.hbs +1 -0
  63. package/addon/templates/management/fleets/index/edit.hbs +1 -0
  64. package/addon/templates/management/fleets/index/new.hbs +1 -0
  65. package/addon/templates/management/vehicles/index/details.hbs +1 -0
  66. package/addon/templates/management/vehicles/index/edit.hbs +1 -0
  67. package/addon/templates/management/vehicles/index/new.hbs +1 -0
  68. package/addon/templates/operations/orders/index/new.hbs +1 -1
  69. package/addon/templates/operations/service-rates/index/new.hbs +4 -4
  70. package/app/components/driver-form-panel.js +1 -0
  71. package/app/components/driver-panel/details.js +1 -0
  72. package/app/components/driver-panel.js +1 -0
  73. package/app/components/fleet-form-panel.js +1 -0
  74. package/app/components/fleet-panel.js +1 -0
  75. package/app/components/fleet-vehicle-listing.js +1 -0
  76. package/app/components/leaflet-drift-marker.js +1 -0
  77. package/app/components/vehicle-form-panel.js +1 -0
  78. package/app/components/vehicle-panel/details.js +1 -0
  79. package/app/components/vehicle-panel/tracking.js +1 -0
  80. package/app/components/vehicle-panel.js +1 -0
  81. package/app/controllers/management/drivers/index/new.js +1 -0
  82. package/app/controllers/management/vehicles/index/details.js +1 -0
  83. package/app/controllers/management/vehicles/index/new.js +1 -0
  84. package/app/routes/management/drivers/index/details.js +1 -0
  85. package/app/routes/management/drivers/index/edit.js +1 -0
  86. package/app/routes/management/drivers/index/new.js +1 -0
  87. package/app/routes/management/vehicles/index/details.js +1 -0
  88. package/app/routes/management/vehicles/index/edit.js +1 -0
  89. package/app/routes/management/vehicles/index/new.js +1 -0
  90. package/app/templates/management/drivers/index/details.js +1 -0
  91. package/app/templates/management/drivers/index/edit.js +1 -0
  92. package/app/templates/management/drivers/index/new.js +1 -0
  93. package/app/templates/management/vehicles/index/details.js +1 -0
  94. package/app/templates/management/vehicles/index/edit.js +1 -0
  95. package/app/templates/management/vehicles/index/new.js +1 -0
  96. package/assets/images/boxes/large.png +0 -0
  97. package/assets/images/boxes/medium.png +0 -0
  98. package/assets/images/boxes/small.png +0 -0
  99. package/assets/images/boxes/x-large.png +0 -0
  100. package/index.js +16 -0
  101. 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 generateSlug from '@fleetbase/ember-core/utils/generate-slug';
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, options = {}) {
500
- const viewDriverOnMap = () => {
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
- const driver = this.store.createRecord('driver', {
632
- status: `active`,
633
- slug: generateSlug(),
634
- });
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
- });
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
- * Edit a `driver` details
715
+ * View a `driver` details in modal
650
716
  *
651
- * @param {DriverModel} driver
717
+ * @param {VehicleModel} driver
652
718
  * @param {Object} options
653
719
  * @void
654
720
  */
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
- });
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 `vehicle` to a `driver`
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.findRecord('vehicle', driver.vehicle_uuid);
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
+ }