@fleetbase/fleetops-engine 0.3.3 → 0.3.5

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 (154) hide show
  1. package/addon/components/contact-form-panel.hbs +28 -6
  2. package/addon/components/driver-form-panel.hbs +10 -0
  3. package/addon/components/driver-form-panel.js +51 -0
  4. package/addon/components/driver-panel/details.hbs +1 -5
  5. package/addon/components/driver-panel.hbs +21 -3
  6. package/addon/components/fleet-form-panel.hbs +60 -6
  7. package/addon/components/fleet-listing-panel.hbs +2 -2
  8. package/addon/components/fleet-panel/details.hbs +1 -1
  9. package/addon/components/fuel-report-form-panel.hbs +84 -8
  10. package/addon/components/fuel-report-form-panel.js +6 -0
  11. package/addon/components/fuel-report-panel/details.hbs +4 -0
  12. package/addon/components/issue-form-panel.hbs +99 -11
  13. package/addon/components/issue-form-panel.js +5 -13
  14. package/addon/components/layout/fleet-ops-sidebar/fleet-listing.hbs +1 -0
  15. package/addon/components/layout/fleet-ops-sidebar/fleet-listing.js +3 -0
  16. package/addon/components/layout/fleet-ops-sidebar.hbs +4 -4
  17. package/addon/components/layout/fleet-ops-sidebar.js +10 -0
  18. package/addon/components/live-map-drawer.hbs +1 -1
  19. package/addon/components/live-map.hbs +1 -1
  20. package/addon/components/modals/driver-assign-vehicle.hbs +2 -11
  21. package/addon/components/modals/driver-assign-vendor.hbs +1 -9
  22. package/addon/components/modals/fuel-report-details.hbs +4 -0
  23. package/addon/components/order/schedule-card.hbs +32 -4
  24. package/addon/components/order/schedule-card.js +155 -5
  25. package/addon/components/place-form-panel.hbs +14 -7
  26. package/addon/components/place-form-panel.js +71 -0
  27. package/addon/components/place-panel/details.hbs +9 -19
  28. package/addon/components/vehicle-form-panel.hbs +67 -7
  29. package/addon/components/vehicle-form-panel.js +37 -0
  30. package/addon/components/vehicle-panel/details.hbs +9 -5
  31. package/addon/components/vehicle-panel.hbs +18 -4
  32. package/addon/components/vendor-form-panel/create-form.hbs +72 -11
  33. package/addon/components/vendor-form-panel/edit-form.hbs +1 -1
  34. package/addon/components/vendor-form-panel.hbs +70 -30
  35. package/addon/components/vendor-form-panel.js +4 -40
  36. package/addon/components/vendor-panel/details.hbs +2 -2
  37. package/addon/components/vendor-panel.hbs +16 -2
  38. package/addon/controllers/management/contacts/index.js +49 -3
  39. package/addon/controllers/management/drivers/index.js +7 -0
  40. package/addon/controllers/management/fleets/index.js +19 -23
  41. package/addon/controllers/management/fuel-reports/index/new.js +1 -1
  42. package/addon/controllers/management/fuel-reports/index.js +80 -20
  43. package/addon/controllers/management/issues/index/new.js +2 -2
  44. package/addon/controllers/management/issues/index.js +72 -45
  45. package/addon/controllers/management/places/index.js +65 -18
  46. package/addon/controllers/management/vehicles/index.js +56 -4
  47. package/addon/controllers/management/vendors/index.js +70 -8
  48. package/addon/controllers/operations/orders/index.js +42 -1
  49. package/addon/controllers/operations/service-rates/index.js +7 -0
  50. package/addon/routes/management/contacts/index.js +8 -0
  51. package/addon/routes/management/fleets/index.js +8 -2
  52. package/addon/routes/management/fuel-reports/index.js +6 -0
  53. package/addon/routes/management/issues/index.js +9 -1
  54. package/addon/routes/management/places/index.js +11 -1
  55. package/addon/routes/management/vehicles/index.js +1 -1
  56. package/addon/routes/management/vendors/index.js +8 -0
  57. package/addon/routes/operations/scheduler/index.js +1 -1
  58. package/addon/templates/management/contacts/index.hbs +1 -0
  59. package/addon/templates/management/drivers/index.hbs +2 -1
  60. package/addon/templates/management/fleets/index.hbs +23 -3
  61. package/addon/templates/management/fuel-reports/index.hbs +1 -0
  62. package/addon/templates/management/issues/index.hbs +22 -2
  63. package/addon/templates/management/places/index.hbs +9 -1
  64. package/addon/templates/management/vehicles/index.hbs +22 -2
  65. package/addon/templates/management/vendors/index.hbs +22 -2
  66. package/addon/templates/operations/orders/index.hbs +1 -1
  67. package/addon/templates/operations/service-rates/index.hbs +11 -3
  68. package/addon/utils/get-issue-categories.js +30 -0
  69. package/addon/utils/get-issue-types.js +3 -0
  70. package/addon/utils/get-vendor-status-options.js +3 -0
  71. package/addon/utils/get-vendor-type-options.js +41 -0
  72. package/app/components/layout/fleet-ops-sidebar/fleet-listing.js +1 -0
  73. package/app/utils/get-issue-categories.js +1 -0
  74. package/app/utils/get-issue-types.js +1 -0
  75. package/app/utils/get-vendor-categories.js +1 -0
  76. package/app/utils/get-vendor-status-options.js +1 -0
  77. package/app/utils/get-vendor-type-options.js +1 -0
  78. package/app/utils/get-vendor-types.js +1 -0
  79. package/composer.json +1 -1
  80. package/extension.json +1 -1
  81. package/package.json +4 -4
  82. package/server/migrations/2023_04_27_053456_create_contacts_table.php +2 -2
  83. package/server/migrations/2023_04_27_053456_create_drivers_table.php +5 -5
  84. package/server/migrations/2023_04_27_053456_create_entities_table.php +5 -5
  85. package/server/migrations/2023_04_27_053456_create_fleet_drivers_table.php +2 -2
  86. package/server/migrations/2023_04_27_053456_create_fleets_table.php +3 -3
  87. package/server/migrations/2023_04_27_053456_create_fuel_reports_table.php +3 -3
  88. package/server/migrations/2023_04_27_053456_create_issues_table.php +4 -4
  89. package/server/migrations/2023_04_27_053456_create_orders_table.php +8 -8
  90. package/server/migrations/2023_04_27_053456_create_payloads_table.php +5 -5
  91. package/server/migrations/2023_04_27_053456_create_places_table.php +1 -1
  92. package/server/migrations/2023_04_27_053456_create_purchase_rates_table.php +4 -4
  93. package/server/migrations/2023_04_27_053456_create_service_areas_table.php +2 -2
  94. package/server/migrations/2023_04_27_053456_create_service_quote_items_table.php +1 -1
  95. package/server/migrations/2023_04_27_053456_create_service_quotes_table.php +3 -3
  96. package/server/migrations/2023_04_27_053456_create_service_rate_fees_table.php +1 -1
  97. package/server/migrations/2023_04_27_053456_create_service_rate_parcel_fees_table.php +1 -1
  98. package/server/migrations/2023_04_27_053456_create_service_rates_table.php +3 -3
  99. package/server/migrations/2023_04_27_053456_create_tracking_numbers_table.php +3 -3
  100. package/server/migrations/2023_04_27_053456_create_tracking_statuses_table.php +2 -2
  101. package/server/migrations/2023_04_27_053456_create_vehicles_table.php +3 -3
  102. package/server/migrations/2023_04_27_053456_create_vendors_table.php +5 -5
  103. package/server/migrations/2023_04_27_053456_create_waypoints_table.php +4 -4
  104. package/server/migrations/2023_04_27_053456_create_zones_table.php +2 -2
  105. package/server/migrations/2023_11_09_041807_add_status_column_to_fuel_reports_table.php +32 -0
  106. package/server/migrations/2023_11_15_062814_add_comments_column_and_resolved_at_column_to_vehicle_device_events_table.php +33 -0
  107. package/server/migrations/2023_11_17_053001_add_category_uuid_to_entities_table.php +33 -0
  108. package/server/src/Http/Controllers/Api/v1/DriverController.php +2 -2
  109. package/server/src/Http/Controllers/Api/v1/EntityController.php +2 -0
  110. package/server/src/Http/Controllers/Api/v1/VehicleController.php +2 -2
  111. package/server/src/Http/Controllers/Internal/v1/DriverController.php +5 -14
  112. package/server/src/Http/Controllers/Internal/v1/OrderController.php +1 -3
  113. package/server/src/Http/Filter/ContactFilter.php +10 -0
  114. package/server/src/Http/Filter/FleetFilter.php +8 -6
  115. package/server/src/Http/Filter/FuelReportFilter.php +51 -0
  116. package/server/src/Http/Filter/IssueFilter.php +61 -5
  117. package/server/src/Http/Filter/PlaceFilter.php +48 -6
  118. package/server/src/Http/Filter/VehicleFilter.php +21 -6
  119. package/server/src/Http/Filter/VendorFilter.php +11 -8
  120. package/server/src/Http/Middleware/TransformLocationMiddleware.php +1 -1
  121. package/server/src/Http/Resources/Internal/v1/IntegratedVendorFacilitator.php +17 -18
  122. package/server/src/Http/Resources/v1/Contact.php +16 -19
  123. package/server/src/Http/Resources/v1/CurrentJob.php +13 -16
  124. package/server/src/Http/Resources/v1/Driver.php +59 -57
  125. package/server/src/Http/Resources/v1/Entity.php +30 -33
  126. package/server/src/Http/Resources/v1/Fleet.php +19 -17
  127. package/server/src/Http/Resources/v1/FuelReport.php +16 -14
  128. package/server/src/Http/Resources/v1/Order.php +1 -1
  129. package/server/src/Http/Resources/v1/Payload.php +21 -24
  130. package/server/src/Http/Resources/v1/Place.php +27 -30
  131. package/server/src/Http/Resources/v1/Proof.php +13 -16
  132. package/server/src/Http/Resources/v1/PurchaseRate.php +14 -17
  133. package/server/src/Http/Resources/v1/ServiceArea.php +13 -16
  134. package/server/src/Http/Resources/v1/ServiceQuote.php +15 -18
  135. package/server/src/Http/Resources/v1/ServiceRate.php +33 -36
  136. package/server/src/Http/Resources/v1/ServiceRateFee.php +14 -17
  137. package/server/src/Http/Resources/v1/ServiceRateParcelFee.php +9 -12
  138. package/server/src/Http/Resources/v1/TrackingNumber.php +18 -21
  139. package/server/src/Http/Resources/v1/TrackingStatus.php +18 -21
  140. package/server/src/Http/Resources/v1/Vehicle.php +31 -34
  141. package/server/src/Http/Resources/v1/VehicleDevice.php +23 -25
  142. package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +38 -32
  143. package/server/src/Http/Resources/v1/Vendor.php +31 -26
  144. package/server/src/Http/Resources/v1/Zone.php +14 -17
  145. package/server/src/Models/Driver.php +23 -1
  146. package/server/src/Models/Entity.php +18 -23
  147. package/server/src/Models/FuelReport.php +1 -0
  148. package/server/src/Models/IntegratedVendor.php +6 -1
  149. package/server/src/Models/Order.php +2 -2
  150. package/server/src/Models/Place.php +2 -2
  151. package/server/src/Models/Vehicle.php +4 -2
  152. package/server/src/Models/VehicleDeviceEvent.php +1 -0
  153. package/server/src/Models/Vendor.php +1 -1
  154. package/server/src/Observers/DriverObserver.php +15 -0
@@ -1,5 +1,13 @@
1
1
  <Layout::Section::Header @title="Issues" @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
- <FiltersPicker @columns={{this.columns}} @onApply={{fn this.filters.apply this}} @onClear={{fn this.filters.reset this}} @onFilterClear={{this.filters.clear}} @onChange={{this.filters.set}} @buttonWrapperClass="mr-2" />
2
+ <Button @icon="refresh" @onClick={{this.reload}} @helpText="Reload data" class="mr-2" />
3
+ <FiltersPicker
4
+ @columns={{this.columns}}
5
+ @onApply={{fn this.filters.apply this}}
6
+ @onClear={{fn this.filters.reset this}}
7
+ @onFilterClear={{this.filters.clear}}
8
+ @onChange={{this.filters.set}}
9
+ @buttonWrapperClass="mr-2"
10
+ />
3
11
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
4
12
  {{#if (safe-has this.table "selectedRows")}}
5
13
  <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
@@ -17,7 +25,19 @@
17
25
  </Layout::Section::Header>
18
26
 
19
27
  <Layout::Section::Body>
20
- <Table @rows={{@model}} @columns={{this.columns}} @selectable={{true}} @canSelectAll={{true}} @onSetup={{fn (mut this.table)}} @pagination={{true}} @paginationMeta={{@model.meta}} @page={{this.page}} @onPageChange={{fn (mut this.page)}} @tfootVerticalOffset="53" @tfootVerticalOffsetElements=".next-view-section-subheader" />
28
+ <Table
29
+ @rows={{@model}}
30
+ @columns={{this.columns}}
31
+ @selectable={{true}}
32
+ @canSelectAll={{true}}
33
+ @onSetup={{fn (mut this.table)}}
34
+ @pagination={{true}}
35
+ @paginationMeta={{@model.meta}}
36
+ @page={{this.page}}
37
+ @onPageChange={{fn (mut this.page)}}
38
+ @tfootVerticalOffset="53"
39
+ @tfootVerticalOffsetElements=".next-view-section-subheader"
40
+ />
21
41
  </Layout::Section::Body>
22
42
 
23
43
  {{outlet}}
@@ -1,5 +1,13 @@
1
1
  <Layout::Section::Header @title="Places" @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
- <FiltersPicker @columns={{this.columns}} @onApply={{fn this.filters.apply this}} @onClear={{fn this.filters.reset this}} @onFilterClear={{this.filters.clear}} @onChange={{this.filters.set}} @buttonWrapperClass="mr-2" />
2
+ <Button @icon="refresh" @onClick={{this.reload}} @helpText="Reload data" class="mr-2" />
3
+ <FiltersPicker
4
+ @columns={{this.columns}}
5
+ @onApply={{fn this.filters.apply this}}
6
+ @onClear={{fn this.filters.reset this}}
7
+ @onFilterClear={{this.filters.clear}}
8
+ @onChange={{this.filters.set}}
9
+ @buttonWrapperClass="mr-2"
10
+ />
3
11
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
4
12
  {{#if (safe-has this.table "selectedRows")}}
5
13
  <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
@@ -1,5 +1,13 @@
1
1
  <Layout::Section::Header @title="Vehicles" @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
- <FiltersPicker @columns={{this.columns}} @onApply={{fn this.filters.apply this}} @onClear={{fn this.filters.reset this}} @onFilterClear={{this.filters.clear}} @onChange={{this.filters.set}} @buttonWrapperClass="mr-2" />
2
+ <Button @icon="refresh" @onClick={{this.reload}} @helpText="Reload data" class="mr-2" />
3
+ <FiltersPicker
4
+ @columns={{this.columns}}
5
+ @onApply={{fn this.filters.apply this}}
6
+ @onClear={{fn this.filters.reset this}}
7
+ @onFilterClear={{this.filters.clear}}
8
+ @onChange={{this.filters.set}}
9
+ @buttonWrapperClass="mr-2"
10
+ />
3
11
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
4
12
  {{#if (safe-has this.table "selectedRows")}}
5
13
  <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
@@ -17,6 +25,18 @@
17
25
  </Layout::Section::Header>
18
26
 
19
27
  <Layout::Section::Body>
20
- <Table @rows={{@model}} @columns={{this.columns}} @selectable={{true}} @canSelectAll={{true}} @onSetup={{fn (mut this.table)}} @pagination={{true}} @paginationMeta={{@model.meta}} @page={{this.page}} @onPageChange={{fn (mut this.page)}} @tfootVerticalOffset="53" @tfootVerticalOffsetElements=".next-view-section-subheader" />
28
+ <Table
29
+ @rows={{@model}}
30
+ @columns={{this.columns}}
31
+ @selectable={{true}}
32
+ @canSelectAll={{true}}
33
+ @onSetup={{fn (mut this.table)}}
34
+ @pagination={{true}}
35
+ @paginationMeta={{@model.meta}}
36
+ @page={{this.page}}
37
+ @onPageChange={{fn (mut this.page)}}
38
+ @tfootVerticalOffset="53"
39
+ @tfootVerticalOffsetElements=".next-view-section-subheader"
40
+ />
21
41
  </Layout::Section::Body>
22
42
  {{outlet}}
@@ -1,5 +1,13 @@
1
1
  <Layout::Section::Header @title="Vendors" @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
- <FiltersPicker @columns={{this.columns}} @onApply={{fn this.filters.apply this}} @onClear={{fn this.filters.reset this}} @onFilterClear={{this.filters.clear}} @onChange={{this.filters.set}} @buttonWrapperClass="mr-2" />
2
+ <Button @icon="refresh" @onClick={{this.reload}} @helpText="Reload data" class="mr-2" />
3
+ <FiltersPicker
4
+ @columns={{this.columns}}
5
+ @onApply={{fn this.filters.apply this}}
6
+ @onClear={{fn this.filters.reset this}}
7
+ @onFilterClear={{this.filters.clear}}
8
+ @onChange={{this.filters.set}}
9
+ @buttonWrapperClass="mr-2"
10
+ />
3
11
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
4
12
  {{#if (safe-has this.table "selectedRows")}}
5
13
  <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
@@ -17,6 +25,18 @@
17
25
  </Layout::Section::Header>
18
26
 
19
27
  <Layout::Section::Body>
20
- <Table @rows={{this.rows}} @columns={{this.columns}} @selectable={{true}} @canSelectAll={{true}} @onSetup={{fn (mut this.table)}} @pagination={{true}} @paginationMeta={{@model.meta}} @page={{this.page}} @onPageChange={{fn (mut this.page)}} @tfootVerticalOffset="53" @tfootVerticalOffsetElements=".next-view-section-subheader" />
28
+ <Table
29
+ @rows={{this.rows}}
30
+ @columns={{this.columns}}
31
+ @selectable={{true}}
32
+ @canSelectAll={{true}}
33
+ @onSetup={{fn (mut this.table)}}
34
+ @pagination={{true}}
35
+ @paginationMeta={{@model.meta}}
36
+ @page={{this.page}}
37
+ @onPageChange={{fn (mut this.page)}}
38
+ @tfootVerticalOffset="53"
39
+ @tfootVerticalOffsetElements=".next-view-section-subheader"
40
+ />
21
41
  </Layout::Section::Body>
22
42
  {{outlet}}
@@ -15,7 +15,7 @@
15
15
  <GlobalSearch @visible={{this.isSearchVisible}} @onPressOrder={{this.viewOrder}} />
16
16
  <MapContainer::Toolbar @activeOrdersCount={{this.activeOrdersCount}} @liveMap={{this.liveMap}} @map={{this.leafletMap}} @onPressViewOrders={{this.toggleOrdersPanel}} @onPressSearch={{this.toggleSearch}} @onPressCreateOrder={{this.createOrder}} @onPressLiveMapDrawerToggle={{this.onPressLiveMapDrawerToggle}} />
17
17
  <OrderListOverlay @noBackdrop={{true}} @fullHeight={{true}} @outView={{not this.isOrdersPanelVisible}} @width={{if (media 'isMobile') "100%" "338px"}} @onPressCancel={{this.hideOrdersPanel}} @onPressCreateOrder={{this.createOrder}} @onPressViewOrder={{this.viewOrder}} @onPressCreateFleet={{this.fleetController.createFleet}} @onPressManageFleet={{this.fleetController.viewFleet}} @onPressCancelOrders={{this.bulkCancelOrders}} @onPressDeleteOrders={{this.bulkDeleteOrders}} />
18
- <LiveMap id="leafletMap" class="next-leaflet-container-map" @lat={{1.3521}} @lng={{103.8198}} @zoom={{12}} @zoomControl={{false}} @onLoad={{this.setMapReference}} @onDrawerReady={{this.setDrawerContext}} {{set-container-dimensions}} />
18
+ <LiveMap id="leafletMap" class="next-leaflet-container-map" @lat={{1.3521}} @lng={{103.8198}} @zoom={{12}} @zoomControl={{false}} @onLoad={{this.setMapReference}} @onDrawerReady={{this.setDrawerContext}} @isDrawerMinimized={{not this.drawerOpen}} @onDrawerResizeEnd={{this.onDrawerResizeEnd}} @onDrawerTabChanged={{this.onDrawerTabChanged}} @drawerTab={{this.drawerTab}} {{set-container-dimensions}} />
19
19
  </MapContainer>
20
20
  {{/if}}
21
21
 
@@ -1,7 +1,15 @@
1
1
  <Layout::Section::Header @title="Service Rates" @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
- <FiltersPicker @columns={{this.columns}} @onApply={{fn this.filters.apply this}} @onClear={{fn this.filters.reset this}} @onFilterClear={{this.filters.clear}} @onChange={{this.filters.set}} @buttonWrapperClass="mr-2" />
2
+ <Button @icon="refresh" @onClick={{this.reload}} @helpText="Reload data" class="mr-2" />
3
+ <FiltersPicker
4
+ @columns={{this.columns}}
5
+ @onApply={{fn this.filters.apply this}}
6
+ @onClear={{fn this.filters.reset this}}
7
+ @onFilterClear={{this.filters.clear}}
8
+ @onChange={{this.filters.set}}
9
+ @buttonWrapperClass="mr-2"
10
+ />
3
11
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
4
- {{#if (safe-has this.table "selectedRows")}}
12
+ {{#if (safe-has this.table "selectedRows")}}
5
13
  <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
6
14
  <div class="next-dd-menu mt-2 mx-0">
7
15
  <div class="px-1">
@@ -12,7 +20,7 @@
12
20
  </div>
13
21
  </DropdownButton>
14
22
  {{/if}}
15
- <Button @icon="plus" @iconPrefix="fas" @type="primary" @text="New" class="mr-2" @onClick={{transition-to 'operations.service-rates.index.new'}} />
23
+ <Button @icon="plus" @iconPrefix="fas" @type="primary" @text="New" class="mr-2" @onClick={{transition-to "operations.service-rates.index.new"}} />
16
24
  <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text="Export" />
17
25
  </Layout::Section::Header>
18
26
 
@@ -0,0 +1,30 @@
1
+ import { isNone } from '@ember/utils';
2
+
3
+ export default function getIssueCategories(type = null, options) {
4
+ const issueCategories = {
5
+ vehicle: ['Mechanical Problems', 'Cosmetic Damages', 'Tire Issues', 'Electronics and Instruments', 'Maintenance Alerts', 'Fuel Efficiency Issues'],
6
+ driver: ['Behavior Concerns', 'Documentation', 'Time Management', 'Communication', 'Training Needs', 'Health and Safety Violations'],
7
+ route: ['Inefficient Routes', 'Safety Concerns', 'Blocked Routes', 'Environmental Considerations', 'Unfavorable Weather Conditions'],
8
+ 'payload-cargo': ['Damaged Goods', 'Misplaced Goods', 'Documentation Issues', 'Temperature-Sensitive Goods', 'Incorrect Cargo Loading'],
9
+ 'software-technical': ['Bugs', 'UI/UX Concerns', 'Integration Failures', 'Performance', 'Feature Requests', 'Security Vulnerabilities'],
10
+ operational: ['Compliance', 'Resource Allocation', 'Cost Overruns', 'Communication', 'Vendor Management Issues'],
11
+ customer: ['Service Quality', 'Billing Discrepancies', 'Communication Breakdown', 'Feedback and Suggestions', 'Order Errors'],
12
+ security: ['Unauthorized Access', 'Data Concerns', 'Physical Security', 'Data Integrity Issues'],
13
+ 'environmental-sustainability': ['Fuel Consumption', 'Carbon Footprint', 'Waste Management', 'Green Initiatives Opportunities'],
14
+ };
15
+
16
+ if (!isNone(type) && typeof type === 'object' && options === undefined) {
17
+ options = type;
18
+ }
19
+
20
+ if (!isNone(options) && typeof options === 'object' && options.fullObject === true) {
21
+ return issueCategories;
22
+ }
23
+
24
+ if (type) {
25
+ return issueCategories[type] || [];
26
+ }
27
+
28
+ const allIssueCategories = Object.values(issueCategories).flat();
29
+ return allIssueCategories;
30
+ }
@@ -0,0 +1,3 @@
1
+ export default function getIssueTypes() {
2
+ return ['vehicle', 'driver', 'route', 'payload-cargo', 'software-technical', 'operational', 'customer', 'security', 'environmental-sustainability'];
3
+ }
@@ -0,0 +1,3 @@
1
+ export default function getVendorStatusOptions() {
2
+ return ['pending', 'active', 'do-not-contact', 'prospective', 'archived'];
3
+ }
@@ -0,0 +1,41 @@
1
+ export default function getVendorTypeOptions() {
2
+ return [
3
+ 'carrier-trucking-company',
4
+ 'carrier-shipping-line',
5
+ 'carrier-air-cargo',
6
+ 'carrier-rail',
7
+ 'freight-forwarder',
8
+ 'warehouse-provider',
9
+ 'broker',
10
+ 'maintenance-repair-facility',
11
+ 'fuel-station',
12
+ 'tire-service-provider',
13
+ 'equipment-rental',
14
+ 'customs-broker',
15
+ 'third-party-logistics-provider',
16
+ 'technology-provider',
17
+ 'consultant',
18
+ 'insurance-provider',
19
+ 'last-mile-delivery-service',
20
+ 'packing-crating-service',
21
+ 'intermodal-operator',
22
+ 'drayage-service-provider',
23
+ 'cold-chain-provider',
24
+ 'hazardous-material-specialist',
25
+ 'parcel-courier',
26
+ 'bulk-material-handler',
27
+ 'towing-service',
28
+ 'cargo-inspector',
29
+ 'pallet-provider',
30
+ 'label-packaging-material-supplier',
31
+ 'driver-leasing-service',
32
+ 'vehicle-manufacturer',
33
+ 'vehicle-dealership',
34
+ 'parts-supplier',
35
+ 'logistics-association',
36
+ 'regulatory-body',
37
+ 'training-certification-provider',
38
+ 'general-vendor',
39
+ 'ecommerce',
40
+ ];
41
+ }
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/layout/fleet-ops-sidebar/fleet-listing';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-issue-categories';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-issue-types';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-categories';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-status-options';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-type-options';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-types';
package/composer.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetbase/fleetops-api",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "keywords": [
6
6
  "fleetbase-extension",
package/extension.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "Fleet-Ops",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "repository": "https://github.com/fleetbase/fleetops",
6
6
  "license": "MIT",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleetbase/fleetops-engine",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "fleetbase": {
6
6
  "route": "fleet-ops",
@@ -39,9 +39,9 @@
39
39
  "publish:github": "npm config set '@fleetbase:registry' https://npm.pkg.github.com/ && npm publish"
40
40
  },
41
41
  "dependencies": {
42
- "@fleetbase/ember-core": "^0.1.7",
43
- "@fleetbase/ember-ui": "^0.2.4",
44
- "@fleetbase/fleetops-data": "^0.1.3",
42
+ "@fleetbase/ember-core": "^0.1.8",
43
+ "@fleetbase/ember-ui": "^0.2.6",
44
+ "@fleetbase/fleetops-data": "^0.1.5",
45
45
  "@fleetbase/leaflet-routing-machine": "^3.2.16",
46
46
  "@fortawesome/ember-fontawesome": "^0.4.1",
47
47
  "@fortawesome/fontawesome-svg-core": "^6.4.0",
@@ -19,9 +19,9 @@ return new class extends Migration
19
19
  $table->string('uuid', 191)->nullable()->index();
20
20
  $table->string('public_id', 191)->nullable()->unique();
21
21
  $table->string('internal_id')->nullable();
22
- $table->string('company_uuid', 191)->nullable()->index('contacts_company_uuid_foreign');
22
+ $table->uuid('company_uuid')->nullable()->index('contacts_company_uuid_foreign');
23
23
  $table->char('user_uuid', 36)->nullable()->index();
24
- $table->string('photo_uuid', 191)->nullable()->index('contacts_photo_uuid_foreign');
24
+ $table->uuid('photo_uuid')->nullable()->index('contacts_photo_uuid_foreign');
25
25
  $table->string('name')->nullable();
26
26
  $table->string('title')->nullable();
27
27
  $table->string('email', 191)->nullable()->index();
@@ -19,12 +19,12 @@ return new class extends Migration
19
19
  $table->string('uuid', 191)->nullable()->index();
20
20
  $table->string('public_id', 191)->nullable()->unique();
21
21
  $table->string('internal_id')->nullable();
22
- $table->string('company_uuid', 191)->nullable()->index('drivers_company_uuid_foreign');
23
- $table->string('vehicle_uuid', 191)->nullable()->index('drivers_vehicle_uuid_foreign');
24
- $table->string('vendor_uuid', 191)->nullable()->index('drivers_vendor_uuid_foreign');
22
+ $table->uuid('company_uuid')->nullable()->index('drivers_company_uuid_foreign');
23
+ $table->uuid('vehicle_uuid')->nullable()->index('drivers_vehicle_uuid_foreign');
24
+ $table->uuid('vendor_uuid')->nullable()->index('drivers_vendor_uuid_foreign');
25
25
  $table->string('vendor_type')->nullable();
26
- $table->string('current_job_uuid', 191)->nullable()->index('drivers_current_job_uuid_foreign');
27
- $table->string('user_uuid', 191)->nullable()->index();
26
+ $table->uuid('current_job_uuid')->nullable()->index('drivers_current_job_uuid_foreign');
27
+ $table->uuid('user_uuid')->nullable()->index();
28
28
  $table->string('auth_token')->nullable();
29
29
  $table->string('drivers_license_number')->nullable();
30
30
  $table->string('signup_token_used')->nullable();
@@ -18,13 +18,13 @@ return new class extends Migration
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->index();
20
20
  $table->string('public_id', 191)->nullable()->index();
21
- $table->string('payload_uuid', 191)->nullable()->index('entities_payload_uuid_foreign');
22
- $table->string('company_uuid', 191)->nullable()->index();
23
- $table->string('driver_assigned_uuid', 191)->nullable()->index('entities_driver_assigned_uuid_foreign');
24
- $table->string('destination_uuid', 191)->nullable()->index();
21
+ $table->uuid('payload_uuid')->nullable()->index('entities_payload_uuid_foreign');
22
+ $table->uuid('company_uuid')->nullable()->index();
23
+ $table->uuid('driver_assigned_uuid')->nullable()->index('entities_driver_assigned_uuid_foreign');
24
+ $table->uuid('destination_uuid')->nullable()->index();
25
25
  $table->string('customer_uuid')->nullable();
26
26
  $table->string('customer_type')->nullable();
27
- $table->string('tracking_number_uuid', 191)->nullable()->index('entities_tracking_number_uuid_foreign');
27
+ $table->uuid('tracking_number_uuid')->nullable()->index('entities_tracking_number_uuid_foreign');
28
28
  $table->mediumText('photo_uuid')->nullable();
29
29
  $table->string('_import_id', 191)->nullable()->index();
30
30
  $table->string('internal_id', 191)->nullable()->index();
@@ -17,8 +17,8 @@ return new class extends Migration
17
17
  $table->increments('id');
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->index();
20
- $table->string('fleet_uuid', 191)->nullable()->index();
21
- $table->string('driver_uuid', 191)->nullable()->index();
20
+ $table->uuid('fleet_uuid')->nullable()->index();
21
+ $table->uuid('driver_uuid')->nullable()->index();
22
22
  $table->softDeletes();
23
23
  $table->timestamp('created_at')->nullable()->index();
24
24
  $table->timestamp('updated_at')->nullable();
@@ -18,9 +18,9 @@ return new class extends Migration
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->index();
20
20
  $table->string('public_id', 191)->nullable()->unique();
21
- $table->string('company_uuid', 191)->nullable()->index();
22
- $table->string('service_area_uuid', 191)->nullable()->index('fleets_service_area_uuid_foreign');
23
- $table->string('zone_uuid', 191)->nullable()->index('fleets_zone_uuid_foreign');
21
+ $table->uuid('company_uuid')->nullable()->index();
22
+ $table->uuid('service_area_uuid')->nullable()->index('fleets_service_area_uuid_foreign');
23
+ $table->uuid('zone_uuid')->nullable()->index('fleets_zone_uuid_foreign');
24
24
  $table->string('image_uuid')->nullable();
25
25
  $table->string('name')->nullable();
26
26
  $table->string('color')->nullable();
@@ -18,9 +18,9 @@ return new class extends Migration
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->index();
20
20
  $table->string('public_id', 191)->nullable()->unique();
21
- $table->string('company_uuid', 191)->nullable()->index();
22
- $table->string('driver_uuid', 191)->nullable()->index('fuel_reports_driver_uuid_foreign');
23
- $table->string('vehicle_uuid', 191)->nullable()->index('fuel_reports_vehicle_uuid_foreign');
21
+ $table->uuid('company_uuid')->nullable()->index();
22
+ $table->uuid('driver_uuid')->nullable()->index('fuel_reports_driver_uuid_foreign');
23
+ $table->uuid('vehicle_uuid')->nullable()->index('fuel_reports_vehicle_uuid_foreign');
24
24
  $table->string('odometer')->nullable();
25
25
  $table->point('location');
26
26
  $table->string('latitude')->nullable();
@@ -19,10 +19,10 @@ return new class extends Migration
19
19
  $table->string('uuid', 191)->nullable()->index();
20
20
  $table->string('public_id', 191)->nullable()->unique();
21
21
  $table->string('issue_id', 191)->nullable()->unique();
22
- $table->string('company_uuid', 191)->nullable()->index();
23
- $table->string('driver_uuid', 191)->nullable()->index('issues_driver_uuid_foreign');
24
- $table->string('vehicle_uuid', 191)->nullable()->index('issues_vehicle_uuid_foreign');
25
- $table->string('assigned_to_uuid', 191)->nullable()->index('issues_assigned_to_uuid_foreign');
22
+ $table->uuid('company_uuid')->nullable()->index();
23
+ $table->uuid('driver_uuid')->nullable()->index('issues_driver_uuid_foreign');
24
+ $table->uuid('vehicle_uuid')->nullable()->index('issues_vehicle_uuid_foreign');
25
+ $table->uuid('assigned_to_uuid')->nullable()->index('issues_assigned_to_uuid_foreign');
26
26
  $table->string('odometer')->nullable();
27
27
  $table->point('location');
28
28
  $table->string('latitude')->nullable();
@@ -18,21 +18,21 @@ return new class extends Migration
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->unique();
20
20
  $table->string('public_id', 191)->nullable()->unique();
21
- $table->string('company_uuid', 191)->nullable()->index();
21
+ $table->uuid('company_uuid')->nullable()->index();
22
22
  $table->char('created_by_uuid', 36)->nullable()->index();
23
23
  $table->char('updated_by_uuid', 36)->nullable()->index();
24
24
  $table->string('internal_id')->nullable();
25
- $table->string('customer_uuid', 191)->nullable()->index();
25
+ $table->uuid('customer_uuid')->nullable()->index();
26
26
  $table->string('customer_type')->nullable();
27
27
  $table->string('facilitator_uuid')->nullable();
28
28
  $table->string('facilitator_type')->nullable();
29
- $table->string('session_uuid', 191)->nullable()->index('orders_session_uuid_foreign');
30
- $table->string('payload_uuid', 191)->nullable()->index('orders_payload_uuid_foreign');
29
+ $table->uuid('session_uuid')->nullable()->index('orders_session_uuid_foreign');
30
+ $table->uuid('payload_uuid')->nullable()->index('orders_payload_uuid_foreign');
31
31
  $table->char('route_uuid', 36)->nullable()->index('orders_route_uuid_foreign');
32
- $table->string('transaction_uuid', 191)->nullable()->index('orders_transaction_uuid_foreign');
33
- $table->string('purchase_rate_uuid', 191)->nullable()->index('orders_purchase_rate_uuid_foreign');
34
- $table->string('tracking_number_uuid', 191)->nullable()->index('orders_tracking_number_uuid_foreign');
35
- $table->string('driver_assigned_uuid', 191)->nullable()->index('orders_driver_assigned_uuid_foreign');
32
+ $table->uuid('transaction_uuid')->nullable()->index('orders_transaction_uuid_foreign');
33
+ $table->uuid('purchase_rate_uuid')->nullable()->index('orders_purchase_rate_uuid_foreign');
34
+ $table->uuid('tracking_number_uuid')->nullable()->index('orders_tracking_number_uuid_foreign');
35
+ $table->uuid('driver_assigned_uuid')->nullable()->index('orders_driver_assigned_uuid_foreign');
36
36
  $table->json('meta')->nullable();
37
37
  $table->json('options')->nullable();
38
38
  $table->boolean('dispatched')->default(false);
@@ -18,11 +18,11 @@ return new class extends Migration
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->index();
20
20
  $table->string('public_id', 191)->nullable()->index();
21
- $table->string('company_uuid', 191)->nullable()->index();
22
- $table->string('pickup_uuid', 191)->nullable()->index('payloads_from_place_uuid_index');
23
- $table->string('dropoff_uuid', 191)->nullable()->index('payloads_to_place_uuid_index');
24
- $table->string('return_uuid', 191)->nullable()->index('payloads_return_uuid_foreign');
25
- $table->string('current_waypoint_uuid', 191)->nullable()->index();
21
+ $table->uuid('company_uuid')->nullable()->index();
22
+ $table->uuid('pickup_uuid')->nullable()->index('payloads_from_place_uuid_index');
23
+ $table->uuid('dropoff_uuid')->nullable()->index('payloads_to_place_uuid_index');
24
+ $table->uuid('return_uuid')->nullable()->index('payloads_return_uuid_foreign');
25
+ $table->uuid('current_waypoint_uuid')->nullable()->index();
26
26
  $table->string('provider', 191)->nullable()->index();
27
27
  $table->string('payment_method')->nullable();
28
28
  $table->integer('cod_amount')->nullable();
@@ -19,7 +19,7 @@ return new class extends Migration
19
19
  $table->string('uuid', 191)->nullable()->unique();
20
20
  $table->string('public_id', 191)->nullable()->unique();
21
21
  $table->string('_import_id', 191)->nullable()->index();
22
- $table->string('company_uuid', 191)->nullable()->index();
22
+ $table->uuid('company_uuid')->nullable()->index();
23
23
  $table->char('owner_uuid', 36)->nullable()->index();
24
24
  $table->string('owner_type')->nullable();
25
25
  $table->string('name')->nullable();
@@ -21,10 +21,10 @@ return new class extends Migration
21
21
  $table->json('meta')->nullable();
22
22
  $table->string('customer_uuid')->nullable();
23
23
  $table->string('customer_type')->nullable();
24
- $table->string('company_uuid', 191)->nullable()->index('purchase_rates_company_uuid_foreign');
25
- $table->string('transaction_uuid', 191)->nullable()->index('purchase_rates_transaction_uuid_foreign');
26
- $table->string('service_quote_uuid', 191)->nullable()->index('purchase_rates_service_quote_uuid_foreign');
27
- $table->string('payload_uuid', 191)->nullable()->index('purchase_rates_payload_uuid_foreign');
24
+ $table->uuid('company_uuid')->nullable()->index('purchase_rates_company_uuid_foreign');
25
+ $table->uuid('transaction_uuid')->nullable()->index('purchase_rates_transaction_uuid_foreign');
26
+ $table->uuid('service_quote_uuid')->nullable()->index('purchase_rates_service_quote_uuid_foreign');
27
+ $table->uuid('payload_uuid')->nullable()->index('purchase_rates_payload_uuid_foreign');
28
28
  $table->string('status')->nullable();
29
29
  $table->softDeletes();
30
30
  $table->timestamp('created_at')->nullable()->index();
@@ -18,14 +18,14 @@ return new class extends Migration
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->index();
20
20
  $table->string('public_id', 191)->nullable()->unique();
21
- $table->string('company_uuid', 191)->nullable()->index('service_areas_company_uuid_foreign');
21
+ $table->uuid('company_uuid')->nullable()->index('service_areas_company_uuid_foreign');
22
22
  $table->string('name')->nullable();
23
23
  $table->string('type')->nullable();
24
24
  $table->string('country')->nullable();
25
25
  $table->multiPolygon('border')->nullable();
26
26
  $table->string('color')->nullable();
27
27
  $table->string('stroke_color')->nullable();
28
- $table->string('parent_uuid', 191)->nullable()->index('service_areas_parent_uuid_foreign');
28
+ $table->uuid('parent_uuid')->nullable()->index('service_areas_parent_uuid_foreign');
29
29
  $table->string('status')->nullable();
30
30
  $table->softDeletes();
31
31
  $table->timestamp('created_at')->nullable()->index();
@@ -17,7 +17,7 @@ return new class extends Migration
17
17
  $table->increments('id');
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->index();
20
- $table->string('service_quote_uuid', 191)->nullable()->index();
20
+ $table->uuid('service_quote_uuid')->nullable()->index();
21
21
  $table->string('amount')->nullable();
22
22
  $table->string('currency')->nullable();
23
23
  $table->string('details')->nullable();
@@ -19,9 +19,9 @@ return new class extends Migration
19
19
  $table->string('uuid', 191)->nullable()->index();
20
20
  $table->string('public_id', 191)->nullable()->unique();
21
21
  $table->string('request_id', 191)->nullable()->index('service_quotes_request_id_foreign');
22
- $table->string('company_uuid', 191)->nullable()->index('service_quotes_company_uuid_foreign');
23
- $table->string('payload_uuid', 191)->nullable()->index('service_quotes_payload_uuid_foreign');
24
- $table->string('service_rate_uuid', 191)->nullable()->index();
22
+ $table->uuid('company_uuid')->nullable()->index('service_quotes_company_uuid_foreign');
23
+ $table->uuid('payload_uuid')->nullable()->index('service_quotes_payload_uuid_foreign');
24
+ $table->uuid('service_rate_uuid')->nullable()->index();
25
25
  $table->integer('amount')->nullable();
26
26
  $table->string('currency')->nullable();
27
27
  $table->json('meta')->nullable();
@@ -17,7 +17,7 @@ return new class extends Migration
17
17
  $table->increments('id');
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->index();
20
- $table->string('service_rate_uuid', 191)->nullable()->index();
20
+ $table->uuid('service_rate_uuid')->nullable()->index();
21
21
  $table->integer('distance')->nullable();
22
22
  $table->integer('min')->nullable();
23
23
  $table->integer('max')->nullable();
@@ -17,7 +17,7 @@ return new class extends Migration
17
17
  $table->increments('id');
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->index();
20
- $table->string('service_rate_uuid', 191)->nullable()->index();
20
+ $table->uuid('service_rate_uuid')->nullable()->index();
21
21
  $table->string('size')->nullable();
22
22
  $table->string('length')->nullable();
23
23
  $table->string('width')->nullable();
@@ -18,9 +18,9 @@ return new class extends Migration
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->index();
20
20
  $table->string('public_id', 191)->nullable()->unique();
21
- $table->string('company_uuid', 191)->nullable()->index();
22
- $table->string('service_area_uuid', 191)->nullable()->index();
23
- $table->string('zone_uuid', 191)->nullable()->index();
21
+ $table->uuid('company_uuid')->nullable()->index();
22
+ $table->uuid('service_area_uuid')->nullable()->index();
23
+ $table->uuid('zone_uuid')->nullable()->index();
24
24
  $table->string('service_name')->nullable();
25
25
  $table->string('service_type', 191)->nullable()->index();
26
26
  $table->integer('base_fee')->default(0)->nullable();
@@ -18,10 +18,10 @@ return new class extends Migration
18
18
  $table->string('_key')->nullable();
19
19
  $table->string('uuid', 191)->nullable()->index();
20
20
  $table->string('public_id', 191)->nullable()->unique();
21
- $table->string('company_uuid', 191)->nullable()->index();
22
- $table->string('owner_uuid', 191)->nullable()->index('tracking_numbers_owner_uuid_foreign');
21
+ $table->uuid('company_uuid')->nullable()->index();
22
+ $table->uuid('owner_uuid')->nullable()->index('tracking_numbers_owner_uuid_foreign');
23
23
  $table->string('owner_type')->nullable();
24
- $table->string('status_uuid', 191)->nullable()->index('tracking_numbers_status_uuid_foreign');
24
+ $table->uuid('status_uuid')->nullable()->index('tracking_numbers_status_uuid_foreign');
25
25
  $table->string('tracking_number', 191)->nullable()->index();
26
26
  $table->string('region')->nullable();
27
27
  $table->mediumText('qr_code')->nullable();