@fleetbase/fleetops-engine 0.6.69 → 0.6.71

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 (324) hide show
  1. package/RELEASE.md +21 -14
  2. package/addon/components/admin/telematics-settings.hbs +143 -0
  3. package/addon/components/admin/telematics-settings.js +145 -0
  4. package/addon/components/fuel-integration/hub.hbs +1 -1
  5. package/addon/components/layout/fleet-ops-sidebar.js +37 -17
  6. package/addon/components/map/leaflet-live-map.hbs +4 -242
  7. package/addon/components/map/leaflet-live-map.js +2 -1
  8. package/addon/components/map/marker-card/driver.hbs +57 -0
  9. package/addon/components/map/marker-card/driver.js +3 -0
  10. package/addon/components/map/marker-card/vehicle.hbs +78 -0
  11. package/addon/components/map/marker-card/vehicle.js +3 -0
  12. package/addon/components/order/details/activity.hbs +8 -6
  13. package/addon/components/order/details/activity.js +9 -0
  14. package/addon/components/order/details.hbs +29 -0
  15. package/addon/components/order/details.js +26 -0
  16. package/addon/components/order/form/details.hbs +30 -4
  17. package/addon/components/order/form/details.js +46 -0
  18. package/addon/components/order/form/route.hbs +4 -2
  19. package/addon/components/order/form/route.js +11 -0
  20. package/addon/components/order/form.hbs +12 -0
  21. package/addon/components/order/form.js +21 -1
  22. package/addon/components/order/kanban.js +72 -0
  23. package/addon/components/order-config-manager/activity-flow.js +45 -10
  24. package/addon/components/order-config-manager/lifecycle.hbs +250 -0
  25. package/addon/components/order-config-manager/lifecycle.js +358 -0
  26. package/addon/components/order-config-manager.js +5 -1
  27. package/addon/components/telematic/hub.hbs +1 -1
  28. package/addon/components/widget/live-fleet.hbs +8 -40
  29. package/addon/controllers/analytics/reports/index.js +15 -1
  30. package/addon/controllers/connectivity/devices/index/details.js +1 -0
  31. package/addon/controllers/connectivity/devices/index.js +12 -2
  32. package/addon/controllers/connectivity/events/index.js +31 -1
  33. package/addon/controllers/connectivity/fuel-providers/index.js +6 -4
  34. package/addon/controllers/connectivity/sensors/index/details.js +1 -1
  35. package/addon/controllers/connectivity/sensors/index.js +41 -1
  36. package/addon/controllers/connectivity/telematics/index.js +4 -0
  37. package/addon/controllers/maintenance/equipment/index/details.js +2 -2
  38. package/addon/controllers/maintenance/equipment/index.js +36 -10
  39. package/addon/controllers/maintenance/inspection-forms/index.js +32 -12
  40. package/addon/controllers/maintenance/inspection-submissions/index/details.js +2 -1
  41. package/addon/controllers/maintenance/inspection-submissions/index.js +56 -10
  42. package/addon/controllers/maintenance/maintenances/index/details.js +2 -0
  43. package/addon/controllers/maintenance/maintenances/index.js +24 -1
  44. package/addon/controllers/maintenance/parts/index/details.js +2 -2
  45. package/addon/controllers/maintenance/parts/index.js +36 -9
  46. package/addon/controllers/maintenance/schedules/index.js +48 -6
  47. package/addon/controllers/maintenance/work-orders/index/details.js +3 -3
  48. package/addon/controllers/maintenance/work-orders/index.js +47 -9
  49. package/addon/controllers/management/contacts/customers.js +13 -0
  50. package/addon/controllers/management/contacts/index.js +47 -1
  51. package/addon/controllers/management/drivers/index/details.js +1 -0
  52. package/addon/controllers/management/drivers/index.js +36 -2
  53. package/addon/controllers/management/fleets/index/details.js +1 -0
  54. package/addon/controllers/management/fleets/index.js +43 -1
  55. package/addon/controllers/management/fuel-reports/index.js +26 -2
  56. package/addon/controllers/management/fuel-transactions/index.js +45 -7
  57. package/addon/controllers/management/issues/index/details.js +1 -0
  58. package/addon/controllers/management/issues/index.js +26 -2
  59. package/addon/controllers/management/places/index.js +40 -1
  60. package/addon/controllers/management/trailers/index/details.js +1 -0
  61. package/addon/controllers/management/trailers/index.js +50 -2
  62. package/addon/controllers/management/vehicles/index/details.js +1 -0
  63. package/addon/controllers/management/vehicles/index.js +37 -2
  64. package/addon/controllers/management/vendors/index.js +30 -2
  65. package/addon/controllers/operations/orders/index/details.js +61 -5
  66. package/addon/controllers/operations/orders/index.js +66 -4
  67. package/addon/controllers/operations/service-rates/index.js +18 -1
  68. package/addon/controllers/settings/index.js +13 -0
  69. package/addon/controllers/settings/telematics.js +113 -0
  70. package/addon/extension.js +70 -6
  71. package/addon/routes/analytics/index.js +14 -1
  72. package/addon/routes/analytics/reports/index/details.js +1 -1
  73. package/addon/routes/analytics/reports/index/edit.js +1 -1
  74. package/addon/routes/analytics/reports/index/new.js +14 -1
  75. package/addon/routes/analytics/reports.js +14 -1
  76. package/addon/routes/connectivity/devices/index/new.js +14 -1
  77. package/addon/routes/connectivity/devices.js +14 -1
  78. package/addon/routes/connectivity/events.js +14 -1
  79. package/addon/routes/connectivity/fuel-providers/details/transactions.js +12 -0
  80. package/addon/routes/connectivity/fuel-providers/details.js +9 -0
  81. package/addon/routes/connectivity/fuel-providers/edit.js +9 -0
  82. package/addon/routes/connectivity/fuel-providers/new.js +14 -1
  83. package/addon/routes/connectivity/fuel-providers.js +14 -1
  84. package/addon/routes/connectivity/sensors/index/new.js +14 -1
  85. package/addon/routes/connectivity/sensors.js +14 -1
  86. package/addon/routes/connectivity/telematics/new.js +14 -1
  87. package/addon/routes/connectivity/telematics.js +14 -1
  88. package/addon/routes/connectivity/tracking.js +14 -1
  89. package/addon/routes/maintenance/equipment/index/details.js +2 -2
  90. package/addon/routes/maintenance/equipment/index/edit.js +2 -2
  91. package/addon/routes/maintenance/equipment/index/new.js +14 -1
  92. package/addon/routes/maintenance/equipment.js +14 -1
  93. package/addon/routes/maintenance/index.js +14 -1
  94. package/addon/routes/maintenance/inspection-forms/index/details.js +10 -1
  95. package/addon/routes/maintenance/inspection-forms/index/edit.js +10 -1
  96. package/addon/routes/maintenance/inspection-forms/index/new.js +14 -1
  97. package/addon/routes/maintenance/inspection-forms.js +14 -1
  98. package/addon/routes/maintenance/inspection-submissions/index/details.js +10 -1
  99. package/addon/routes/maintenance/inspection-submissions/index/edit.js +10 -1
  100. package/addon/routes/maintenance/inspection-submissions/index/new.js +14 -1
  101. package/addon/routes/maintenance/inspection-submissions.js +14 -1
  102. package/addon/routes/maintenance/maintenances/index/details.js +2 -2
  103. package/addon/routes/maintenance/maintenances/index/edit.js +2 -2
  104. package/addon/routes/maintenance/maintenances/index/new.js +14 -1
  105. package/addon/routes/maintenance/maintenances.js +14 -1
  106. package/addon/routes/maintenance/parts/index/details.js +2 -2
  107. package/addon/routes/maintenance/parts/index/edit.js +2 -2
  108. package/addon/routes/maintenance/parts/index/new.js +14 -1
  109. package/addon/routes/maintenance/parts.js +14 -1
  110. package/addon/routes/maintenance/schedules/index/details.js +2 -2
  111. package/addon/routes/maintenance/schedules/index/edit.js +2 -2
  112. package/addon/routes/maintenance/schedules/index/new.js +15 -1
  113. package/addon/routes/maintenance/schedules.js +15 -1
  114. package/addon/routes/maintenance/work-orders/index/details.js +2 -2
  115. package/addon/routes/maintenance/work-orders/index/edit.js +2 -2
  116. package/addon/routes/maintenance/work-orders/index/new.js +14 -1
  117. package/addon/routes/maintenance/work-orders.js +14 -1
  118. package/addon/routes/management/fuel-transactions/index/details.js +9 -0
  119. package/addon/routes/management/fuel-transactions.js +14 -1
  120. package/addon/routes/management/index.js +13 -0
  121. package/addon/routes/management/trailers.js +16 -0
  122. package/addon/routes/management/vendors/integrated/details.js +14 -1
  123. package/addon/routes/management/vendors/integrated/edit.js +14 -1
  124. package/addon/routes/management/vendors/integrated/new.js +14 -1
  125. package/addon/routes/management/vendors/integrated.js +14 -1
  126. package/addon/routes/operations/orders/index/details.js +1 -0
  127. package/addon/routes/operations/orders.js +40 -1
  128. package/addon/routes/operations/routes/index/details.js +14 -1
  129. package/addon/routes/operations/routes/index/new.js +13 -0
  130. package/addon/routes/operations/routes.js +14 -1
  131. package/addon/routes/operations/service-rates/index/new.js +11 -0
  132. package/addon/routes/operations/service-rates.js +14 -1
  133. package/addon/routes/settings/avatars.js +14 -1
  134. package/addon/routes/settings/custom-fields.js +14 -1
  135. package/addon/routes/settings/map.js +14 -1
  136. package/addon/routes/settings/notifications.js +11 -0
  137. package/addon/routes/settings/orchestrator.js +1 -1
  138. package/addon/routes/settings/payments/index.js +1 -1
  139. package/addon/routes/settings/routing.js +14 -1
  140. package/addon/routes/settings/scheduling.js +14 -1
  141. package/addon/routes/settings/telematics.js +21 -0
  142. package/addon/routes/virtual.js +11 -0
  143. package/addon/routes.js +1 -0
  144. package/addon/services/contact-actions.js +1 -0
  145. package/addon/services/customer-actions.js +2 -1
  146. package/addon/services/device-actions.js +1 -0
  147. package/addon/services/device-event-actions.js +1 -0
  148. package/addon/services/driver-actions.js +4 -13
  149. package/addon/services/equipment-actions.js +1 -0
  150. package/addon/services/fleet-actions.js +1 -0
  151. package/addon/services/fuel-report-actions.js +1 -0
  152. package/addon/services/inspection-form-actions.js +1 -0
  153. package/addon/services/inspection-submission-actions.js +1 -0
  154. package/addon/services/integrated-vendor-actions.js +1 -0
  155. package/addon/services/issue-actions.js +1 -0
  156. package/addon/services/maintenance-actions.js +1 -0
  157. package/addon/services/maintenance-schedule-actions.js +2 -1
  158. package/addon/services/order-actions.js +7 -0
  159. package/addon/services/order-presentation.js +129 -0
  160. package/addon/services/part-actions.js +1 -0
  161. package/addon/services/place-actions.js +1 -0
  162. package/addon/services/sensor-actions.js +1 -0
  163. package/addon/services/service-area-actions.js +1 -0
  164. package/addon/services/service-rate-actions.js +1 -0
  165. package/addon/services/telematic-actions.js +1 -0
  166. package/addon/services/trailer-actions.js +4 -14
  167. package/addon/services/vehicle-actions.js +4 -13
  168. package/addon/services/vendor-actions.js +1 -0
  169. package/addon/services/work-order-actions.js +1 -0
  170. package/addon/services/zone-actions.js +1 -0
  171. package/addon/templates/analytics/reports/index/details.hbs +1 -0
  172. package/addon/templates/analytics/reports/index.hbs +1 -0
  173. package/addon/templates/connectivity/devices/index/details.hbs +1 -0
  174. package/addon/templates/connectivity/devices/index.hbs +1 -0
  175. package/addon/templates/connectivity/events/index.hbs +1 -0
  176. package/addon/templates/connectivity/sensors/index/details.hbs +1 -0
  177. package/addon/templates/connectivity/sensors/index.hbs +1 -0
  178. package/addon/templates/maintenance/equipment/index/details.hbs +1 -0
  179. package/addon/templates/maintenance/equipment/index.hbs +2 -0
  180. package/addon/templates/maintenance/inspection-forms/index/details.hbs +1 -0
  181. package/addon/templates/maintenance/inspection-forms/index.hbs +1 -0
  182. package/addon/templates/maintenance/inspection-submissions/index/details.hbs +1 -0
  183. package/addon/templates/maintenance/inspection-submissions/index.hbs +1 -0
  184. package/addon/templates/maintenance/maintenances/index/details.hbs +1 -0
  185. package/addon/templates/maintenance/maintenances/index.hbs +1 -0
  186. package/addon/templates/maintenance/parts/index/details.hbs +1 -0
  187. package/addon/templates/maintenance/parts/index.hbs +2 -0
  188. package/addon/templates/maintenance/schedules/index/details.hbs +1 -0
  189. package/addon/templates/maintenance/schedules/index.hbs +2 -0
  190. package/addon/templates/maintenance/work-orders/index/details.hbs +1 -0
  191. package/addon/templates/maintenance/work-orders/index.hbs +1 -0
  192. package/addon/templates/management/contacts/customers/details.hbs +1 -0
  193. package/addon/templates/management/contacts/customers.hbs +1 -0
  194. package/addon/templates/management/contacts/index/details.hbs +1 -0
  195. package/addon/templates/management/contacts/index.hbs +1 -0
  196. package/addon/templates/management/contacts.hbs +1 -0
  197. package/addon/templates/management/drivers/index/details.hbs +1 -0
  198. package/addon/templates/management/drivers/index.hbs +2 -0
  199. package/addon/templates/management/fleets/index/details.hbs +1 -0
  200. package/addon/templates/management/fleets/index.hbs +1 -0
  201. package/addon/templates/management/fuel-reports/index/details.hbs +1 -0
  202. package/addon/templates/management/fuel-reports/index.hbs +1 -0
  203. package/addon/templates/management/fuel-transactions/index.hbs +1 -0
  204. package/addon/templates/management/issues/index/details.hbs +1 -0
  205. package/addon/templates/management/issues/index.hbs +1 -0
  206. package/addon/templates/management/places/index/details.hbs +1 -0
  207. package/addon/templates/management/places/index.hbs +1 -0
  208. package/addon/templates/management/trailers/index/details.hbs +1 -0
  209. package/addon/templates/management/trailers/index.hbs +2 -0
  210. package/addon/templates/management/vehicles/index/details.hbs +1 -0
  211. package/addon/templates/management/vehicles/index.hbs +2 -0
  212. package/addon/templates/management/vendors/index/details.hbs +1 -0
  213. package/addon/templates/management/vendors/index.hbs +2 -0
  214. package/addon/templates/management/vendors/integrated.hbs +1 -0
  215. package/addon/templates/operations/orders/index/details.hbs +1 -0
  216. package/addon/templates/operations/orders/index.hbs +1 -0
  217. package/addon/templates/operations/service-rates/index/details.hbs +1 -0
  218. package/addon/templates/operations/service-rates/index.hbs +1 -0
  219. package/addon/templates/settings/telematics.hbs +70 -0
  220. package/addon/utils/normalize-order-config-flow.js +6 -1
  221. package/app/components/admin/telematics-settings.js +1 -0
  222. package/app/components/map/marker-card/driver.js +1 -0
  223. package/app/components/map/marker-card/vehicle.js +1 -0
  224. package/app/controllers/settings/telematics.js +1 -0
  225. package/app/routes/settings/telematics.js +1 -0
  226. package/app/services/order-presentation.js +1 -0
  227. package/app/templates/settings/telematics.js +1 -0
  228. package/composer.json +2 -2
  229. package/docs/AFAQY.md +1 -1
  230. package/docs/TELEMATICS_QUEUES.md +1 -1
  231. package/docs/TELEMETRY_ARCHITECTURE.md +72 -1
  232. package/extension.json +1 -1
  233. package/package.json +3 -3
  234. package/server/config/telemetry.php +12 -0
  235. package/server/migrations/2026_09_23_000001_add_retention_index_to_device_events.php +40 -0
  236. package/server/migrations/2026_09_23_000002_add_retention_index_to_positions.php +40 -0
  237. package/server/migrations/2026_09_23_000003_add_retention_index_to_telematic_sync_runs.php +40 -0
  238. package/server/src/Auth/Schemas/FleetOps.php +104 -5
  239. package/server/src/Console/Commands/DrainTelematicInbox.php +3 -13
  240. package/server/src/Console/Commands/ProcessOperationalAlerts.php +3 -3
  241. package/server/src/Console/Commands/PruneTelematicsData.php +318 -0
  242. package/server/src/Http/Controllers/Api/v1/OrchestrationController.php +9 -0
  243. package/server/src/Http/Controllers/FleetOpsController.php +21 -0
  244. package/server/src/Http/Controllers/Internal/v1/AnalyticsController.php +11 -0
  245. package/server/src/Http/Controllers/Internal/v1/ContactController.php +11 -0
  246. package/server/src/Http/Controllers/Internal/v1/CustomerController.php +14 -0
  247. package/server/src/Http/Controllers/Internal/v1/DeviceController.php +13 -0
  248. package/server/src/Http/Controllers/Internal/v1/DeviceEventController.php +11 -0
  249. package/server/src/Http/Controllers/Internal/v1/DriverController.php +22 -0
  250. package/server/src/Http/Controllers/Internal/v1/FuelProviderConnectionController.php +13 -0
  251. package/server/src/Http/Controllers/Internal/v1/FuelProviderTransactionController.php +15 -0
  252. package/server/src/Http/Controllers/Internal/v1/FuelReportController.php +9 -3
  253. package/server/src/Http/Controllers/Internal/v1/InspectionFormController.php +15 -0
  254. package/server/src/Http/Controllers/Internal/v1/LiveController.php +16 -0
  255. package/server/src/Http/Controllers/Internal/v1/MaintenanceController.php +15 -0
  256. package/server/src/Http/Controllers/Internal/v1/MaintenanceScheduleController.php +15 -0
  257. package/server/src/Http/Controllers/Internal/v1/ManifestController.php +15 -0
  258. package/server/src/Http/Controllers/Internal/v1/MetricsController.php +11 -0
  259. package/server/src/Http/Controllers/Internal/v1/NavigatorController.php +42 -1
  260. package/server/src/Http/Controllers/Internal/v1/OrchestrationController.php +12 -0
  261. package/server/src/Http/Controllers/Internal/v1/OrderController.php +56 -4
  262. package/server/src/Http/Controllers/Internal/v1/PaymentController.php +13 -0
  263. package/server/src/Http/Controllers/Internal/v1/RadarController.php +19 -0
  264. package/server/src/Http/Controllers/Internal/v1/ServiceAreaController.php +9 -3
  265. package/server/src/Http/Controllers/Internal/v1/SettingController.php +465 -14
  266. package/server/src/Http/Controllers/Internal/v1/TelematicController.php +21 -0
  267. package/server/src/Http/Controllers/Internal/v1/TrailerController.php +21 -0
  268. package/server/src/Http/Controllers/Internal/v1/VehicleController.php +21 -0
  269. package/server/src/Http/Controllers/Internal/v1/VendorController.php +17 -0
  270. package/server/src/Http/Controllers/Internal/v1/WorkOrderController.php +11 -0
  271. package/server/src/Jobs/DispatchTelematicsRetentionJobs.php +70 -0
  272. package/server/src/Jobs/PruneTelematicsDataJob.php +74 -0
  273. package/server/src/Listeners/NotifyDriverOnShiftChange.php +3 -3
  274. package/server/src/Mail/CustomerCredentialsMail.php +1 -1
  275. package/server/src/Models/Order.php +35 -3
  276. package/server/src/Models/OrderConfig.php +129 -0
  277. package/server/src/Models/TrackingNumber.php +8 -4
  278. package/server/src/Orchestration/Engines/VroomOrchestrationEngine.php +9 -1
  279. package/server/src/Providers/FleetOpsServiceProvider.php +3 -0
  280. package/server/src/Support/Analytics/LiveFleet.php +18 -2
  281. package/server/src/Support/Authorization.php +103 -0
  282. package/server/src/Support/Database/TableIndexes.php +66 -0
  283. package/server/src/Support/OrderTracker.php +2 -2
  284. package/server/src/Support/Reporting/FleetOpsReportSchema.php +476 -116
  285. package/server/src/Support/Telematics/Retention/RetentionPolicy.php +300 -0
  286. package/server/src/Support/Telematics/Retention/TelemetryActivity.php +40 -0
  287. package/server/src/Support/Telematics/TelematicService.php +12 -2
  288. package/server/src/Support/Telematics/Telemetry/Ingestor.php +4 -2
  289. package/server/src/Tracking/TrackingIntelligenceService.php +1 -1
  290. package/server/src/Tracking/TrackingOptions.php +2 -2
  291. package/server/src/Traits/AuthorizesMethods.php +37 -0
  292. package/server/src/routes.php +9 -1
  293. package/server/tests/AnalyticsRoutesTest.php +29 -2
  294. package/server/tests/Feature/Http/AfaqyRealtimeIngestionTest.php +16 -1
  295. package/server/tests/Feature/Http/Api/TelematicsRetentionIndexMigrationTest.php +115 -0
  296. package/server/tests/Feature/Http/Internal/OrderControllerActivityFlowsTest.php +72 -0
  297. package/server/tests/Feature/Http/Internal/OrderControllerCreateRecordTest.php +26 -0
  298. package/server/tests/Feature/Http/Internal/SettingControllerHelpersTest.php +71 -0
  299. package/server/tests/Feature/Http/Internal/TelematicsStorageDeadlinesTest.php +119 -0
  300. package/server/tests/InternalImportExportControllerContractsTest.php +5 -8
  301. package/server/tests/NavigatorControllerContractsTest.php +36 -4
  302. package/server/tests/NotificationAndMailContractsTest.php +31 -0
  303. package/server/tests/ObserverContractsTest.php +1 -1
  304. package/server/tests/OrchestratorConsumableApiTest.php +42 -0
  305. package/server/tests/OrderConfigLifecycleTest.php +120 -0
  306. package/server/tests/ProviderContractsTest.php +10 -0
  307. package/server/tests/ReportSchemaContractsTest.php +120 -6
  308. package/server/tests/SettingControllerContractsTest.php +429 -18
  309. package/server/tests/SmallControllerContractsTest.php +8 -5
  310. package/server/tests/Support/PruneTelematicsDataProbe.php +55 -0
  311. package/server/tests/Unit/Console/Commands/ProcessOperationalAlertsCommandTest.php +2 -2
  312. package/server/tests/Unit/Console/PruneTelematicsDataCommandTest.php +353 -0
  313. package/server/tests/Unit/Events/OrderDispatchFailedTest.php +2 -1
  314. package/server/tests/Unit/Jobs/DispatchTelematicsRetentionJobsTest.php +114 -0
  315. package/server/tests/Unit/Jobs/PruneTelematicsDataJobTest.php +60 -0
  316. package/server/tests/Unit/Orchestration/VroomEngineTransportAndSettingsTest.php +20 -0
  317. package/server/tests/Unit/Support/Analytics/LiveFleetTest.php +6 -0
  318. package/server/tests/Unit/Support/AuthorizationTest.php +142 -0
  319. package/server/tests/Unit/Support/MaintainableAndOperationalAlertsTest.php +12 -1
  320. package/server/tests/Unit/Support/MoreQuerySeamsTest.php +11 -2
  321. package/server/tests/Unit/Support/Telematics/Retention/RetentionPolicyTest.php +190 -0
  322. package/server/tests/Unit/Support/Telematics/Retention/TelemetryActivityTest.php +68 -0
  323. package/server/tests/Unit/Tracking/TrackingOptionsCompanySettingsTest.php +109 -0
  324. package/translations/en-us.yaml +108 -0
@@ -12,7 +12,28 @@ export default class ManagementContactsIndexController extends Controller {
12
12
  @service appCache;
13
13
 
14
14
  /** query params */
15
- @tracked queryParams = ['page', 'limit', 'sort', 'query', 'public_id', 'internal_id', 'created_by', 'updated_by', 'status', 'title', 'email', 'phone'];
15
+ /**
16
+ * This tab's table registry, e.g. `fleet-ops:contact:table`. The contacts
17
+ * header (`management/contacts.hbs`) renders for whichever tab is open.
18
+ */
19
+ get tableRegistry() {
20
+ return this.contactActions.tableRegistry;
21
+ }
22
+
23
+ @tracked queryParams = this.contactActions.queryParamsFor([
24
+ 'page',
25
+ 'limit',
26
+ 'sort',
27
+ 'query',
28
+ 'public_id',
29
+ 'internal_id',
30
+ 'created_by',
31
+ 'updated_by',
32
+ 'status',
33
+ 'title',
34
+ 'email',
35
+ 'phone',
36
+ ]);
16
37
  @tracked page = 1;
17
38
  @tracked limit;
18
39
  @tracked sort = '-created_at';
@@ -34,16 +55,19 @@ export default class ManagementContactsIndexController extends Controller {
34
55
  get actionButtons() {
35
56
  return [
36
57
  {
58
+ id: 'more',
37
59
  component: 'dropdown-button',
38
60
  icon: 'display',
39
61
  size: 'xs',
40
62
  items: [
41
63
  {
64
+ id: 'table-view',
42
65
  label: this.intl.t('common.table-view'),
43
66
  icon: 'table-list',
44
67
  onClick: () => this.setLayout('table'),
45
68
  },
46
69
  {
70
+ id: 'grid-view',
47
71
  label: this.intl.t('common.grid-view'),
48
72
  icon: 'grip',
49
73
  onClick: () => this.setLayout('grid'),
@@ -53,28 +77,35 @@ export default class ManagementContactsIndexController extends Controller {
53
77
  helpText: this.intl.t('common.change-layout'),
54
78
  },
55
79
  {
80
+ id: 'refresh',
56
81
  icon: 'refresh',
57
82
  onClick: this.contactActions.refresh,
58
83
  helpText: this.intl.t('common.refresh'),
59
84
  },
60
85
  {
86
+ id: 'create',
61
87
  text: this.intl.t('common.new'),
62
88
  type: 'primary',
63
89
  icon: 'plus',
64
90
  onClick: this.contactActions.transition.create,
91
+ permission: 'fleet-ops create contact',
65
92
  },
66
93
  {
94
+ id: 'import',
67
95
  text: this.intl.t('common.import'),
68
96
  type: 'magic',
69
97
  icon: 'upload',
70
98
  onClick: this.contactActions.import,
99
+ permission: 'fleet-ops import contact',
71
100
  },
72
101
  {
102
+ id: 'export',
73
103
  text: this.intl.t('common.export'),
74
104
  icon: 'long-arrow-up',
75
105
  iconClass: 'rotate-icon-45',
76
106
  wrapperClass: 'hidden md:flex',
77
107
  onClick: this.contactActions.export,
108
+ permission: 'fleet-ops export contact',
78
109
  },
79
110
  ];
80
111
  }
@@ -85,9 +116,11 @@ export default class ManagementContactsIndexController extends Controller {
85
116
 
86
117
  return [
87
118
  {
119
+ id: 'bulk-delete',
88
120
  label: this.intl.t('common.delete-selected-count', { count: selected.length }),
89
121
  class: 'text-red-500',
90
122
  fn: this.contactActions.bulkDelete,
123
+ permission: 'fleet-ops delete contact',
91
124
  },
92
125
  ];
93
126
  }
@@ -96,6 +129,7 @@ export default class ManagementContactsIndexController extends Controller {
96
129
  get columns() {
97
130
  return [
98
131
  {
132
+ id: 'name',
99
133
  sticky: true,
100
134
  label: this.intl.t('column.name'),
101
135
  valuePath: 'name',
@@ -108,6 +142,7 @@ export default class ManagementContactsIndexController extends Controller {
108
142
  filterComponent: 'filter/string',
109
143
  },
110
144
  {
145
+ id: 'public-id',
111
146
  label: this.intl.t('column.id'),
112
147
  valuePath: 'public_id',
113
148
  cellComponent: 'click-to-copy',
@@ -117,6 +152,7 @@ export default class ManagementContactsIndexController extends Controller {
117
152
  filterComponent: 'filter/string',
118
153
  },
119
154
  {
155
+ id: 'internal-id',
120
156
  label: this.intl.t('column.internal-id'),
121
157
  valuePath: 'internal_id',
122
158
  cellComponent: 'click-to-copy',
@@ -126,6 +162,7 @@ export default class ManagementContactsIndexController extends Controller {
126
162
  filterComponent: 'filter/string',
127
163
  },
128
164
  {
165
+ id: 'title',
129
166
  label: this.intl.t('column.title'),
130
167
  valuePath: 'title',
131
168
  cellComponent: 'click-to-copy',
@@ -136,6 +173,7 @@ export default class ManagementContactsIndexController extends Controller {
136
173
  filterComponent: 'filter/string',
137
174
  },
138
175
  {
176
+ id: 'email',
139
177
  label: this.intl.t('column.email'),
140
178
  valuePath: 'email',
141
179
  cellComponent: 'click-to-copy',
@@ -145,6 +183,7 @@ export default class ManagementContactsIndexController extends Controller {
145
183
  filterComponent: 'filter/string',
146
184
  },
147
185
  {
186
+ id: 'phone',
148
187
  label: this.intl.t('column.phone'),
149
188
  valuePath: 'phone',
150
189
  cellComponent: 'click-to-copy',
@@ -154,6 +193,7 @@ export default class ManagementContactsIndexController extends Controller {
154
193
  filterComponent: 'filter/string',
155
194
  },
156
195
  {
196
+ id: 'address',
157
197
  label: this.intl.t('column.address'),
158
198
  valuePath: 'address',
159
199
  cellComponent: 'cell/place-identity',
@@ -166,6 +206,7 @@ export default class ManagementContactsIndexController extends Controller {
166
206
  filterComponent: 'filter/string',
167
207
  },
168
208
  {
209
+ id: 'created-at',
169
210
  label: this.intl.t('column.created'),
170
211
  valuePath: 'createdAt',
171
212
  sortParam: 'created_at',
@@ -175,6 +216,7 @@ export default class ManagementContactsIndexController extends Controller {
175
216
  filterComponent: 'filter/date',
176
217
  },
177
218
  {
219
+ id: 'updated-at',
178
220
  label: this.intl.t('column.updated'),
179
221
  valuePath: 'updatedAt',
180
222
  sortParam: 'updated_at',
@@ -185,6 +227,7 @@ export default class ManagementContactsIndexController extends Controller {
185
227
  filterComponent: 'filter/date',
186
228
  },
187
229
  {
230
+ id: 'row-actions',
188
231
  label: '',
189
232
  cellComponent: 'table/cell/dropdown',
190
233
  ddButtonText: false,
@@ -197,12 +240,14 @@ export default class ManagementContactsIndexController extends Controller {
197
240
  width: 60,
198
241
  actions: [
199
242
  {
243
+ id: 'view',
200
244
  label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.contact') }),
201
245
  icon: 'eye',
202
246
  fn: this.contactActions.transition.view,
203
247
  permission: 'fleet-ops view contact',
204
248
  },
205
249
  {
250
+ id: 'edit',
206
251
  label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.contact') }),
207
252
  icon: 'pencil',
208
253
  fn: this.contactActions.transition.edit,
@@ -216,6 +261,7 @@ export default class ManagementContactsIndexController extends Controller {
216
261
  separator: true,
217
262
  },
218
263
  {
264
+ id: 'delete',
219
265
  label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.contact') }),
220
266
  icon: 'trash',
221
267
  fn: this.contactActions.delete,
@@ -39,6 +39,7 @@ export default class ManagementDriverIndexDetailsController extends Controller {
39
39
  permission: 'fleet-ops update driver',
40
40
  },
41
41
  {
42
+ id: 'more',
42
43
  icon: 'ellipsis-h',
43
44
  iconPrefix: 'fas',
44
45
  renderInPlace: true,
@@ -17,7 +17,7 @@ export default class ManagementDriversIndexController extends Controller {
17
17
  @service appCache;
18
18
 
19
19
  /** query params */
20
- @tracked queryParams = [
20
+ @tracked queryParams = this.driverActions.queryParamsFor([
21
21
  'page',
22
22
  'limit',
23
23
  'sort',
@@ -34,7 +34,7 @@ export default class ManagementDriversIndexController extends Controller {
34
34
  'created_at',
35
35
  'updated_at',
36
36
  'status',
37
- ];
37
+ ]);
38
38
  @tracked page = 1;
39
39
  @tracked limit;
40
40
  @tracked sort = '-created_at';
@@ -75,16 +75,19 @@ export default class ManagementDriversIndexController extends Controller {
75
75
  get actionButtons() {
76
76
  return [
77
77
  {
78
+ id: 'more',
78
79
  component: 'dropdown-button',
79
80
  icon: 'display',
80
81
  size: 'xs',
81
82
  items: [
82
83
  {
84
+ id: 'table-view',
83
85
  label: this.intl.t('common.table-view'),
84
86
  icon: 'table-list',
85
87
  onClick: () => this.changeLayout('table'),
86
88
  },
87
89
  {
90
+ id: 'grid-view',
88
91
  label: this.intl.t('common.grid-view'),
89
92
  icon: 'grip',
90
93
  onClick: () => this.changeLayout('grid'),
@@ -94,28 +97,35 @@ export default class ManagementDriversIndexController extends Controller {
94
97
  helpText: 'Change the layout',
95
98
  },
96
99
  {
100
+ id: 'refresh',
97
101
  icon: 'refresh',
98
102
  onClick: this.driverActions.refresh,
99
103
  helpText: this.intl.t('common.refresh'),
100
104
  },
101
105
  {
106
+ id: 'create',
102
107
  text: this.intl.t('common.new'),
103
108
  type: 'primary',
104
109
  icon: 'plus',
105
110
  onClick: this.driverActions.transition.create,
111
+ permission: 'fleet-ops create driver',
106
112
  },
107
113
  {
114
+ id: 'import',
108
115
  text: this.intl.t('common.import'),
109
116
  type: 'magic',
110
117
  icon: 'upload',
111
118
  onClick: this.driverActions.import,
119
+ permission: 'fleet-ops import driver',
112
120
  },
113
121
  {
122
+ id: 'export',
114
123
  text: this.intl.t('common.export'),
115
124
  icon: 'long-arrow-up',
116
125
  iconClass: 'rotate-icon-45',
117
126
  wrapperClass: 'hidden md:flex',
118
127
  onClick: this.driverActions.export,
128
+ permission: 'fleet-ops export driver',
119
129
  },
120
130
  ];
121
131
  }
@@ -126,9 +136,11 @@ export default class ManagementDriversIndexController extends Controller {
126
136
 
127
137
  return [
128
138
  {
139
+ id: 'bulk-delete',
129
140
  label: this.intl.t('common.delete-selected-count', { count: selected.length }),
130
141
  class: 'text-red-500',
131
142
  fn: this.driverActions.bulkDelete,
143
+ permission: 'fleet-ops delete driver',
132
144
  },
133
145
  ];
134
146
  }
@@ -137,6 +149,7 @@ export default class ManagementDriversIndexController extends Controller {
137
149
  get columns() {
138
150
  return [
139
151
  {
152
+ id: 'name',
140
153
  sticky: true,
141
154
  label: this.intl.t('column.name'),
142
155
  valuePath: 'name',
@@ -149,6 +162,7 @@ export default class ManagementDriversIndexController extends Controller {
149
162
  filterComponent: 'filter/string',
150
163
  },
151
164
  {
165
+ id: 'public-id',
152
166
  label: this.intl.t('column.id'),
153
167
  valuePath: 'public_id',
154
168
  cellComponent: 'click-to-copy',
@@ -159,6 +173,7 @@ export default class ManagementDriversIndexController extends Controller {
159
173
  filterComponent: 'filter/string',
160
174
  },
161
175
  {
176
+ id: 'phone',
162
177
  label: this.intl.t('column.phone'),
163
178
  valuePath: 'phone',
164
179
  cellComponent: 'table/cell/base',
@@ -169,6 +184,7 @@ export default class ManagementDriversIndexController extends Controller {
169
184
  filterComponent: 'filter/string',
170
185
  },
171
186
  {
187
+ id: 'drivers-license-number',
172
188
  label: this.intl.t('column.license'),
173
189
  valuePath: 'drivers_license_number',
174
190
  cellComponent: 'table/cell/base',
@@ -178,6 +194,7 @@ export default class ManagementDriversIndexController extends Controller {
178
194
  filterComponent: 'filter/string',
179
195
  },
180
196
  {
197
+ id: 'vehicle-display-name',
181
198
  label: this.intl.t('column.vehicle'),
182
199
  cellComponent: 'cell/vehicle-identity',
183
200
  permission: 'fleet-ops view vehicle',
@@ -202,6 +219,7 @@ export default class ManagementDriversIndexController extends Controller {
202
219
  model: 'vehicle',
203
220
  },
204
221
  {
222
+ id: 'internal-id',
205
223
  label: this.intl.t('column.internal-id'),
206
224
  valuePath: 'internal_id',
207
225
  cellComponent: 'click-to-copy',
@@ -211,6 +229,7 @@ export default class ManagementDriversIndexController extends Controller {
211
229
  filterComponent: 'filter/string',
212
230
  },
213
231
  {
232
+ id: 'vendor-name',
214
233
  label: this.intl.t('column.vendor'),
215
234
  cellComponent: 'cell/vendor-identity',
216
235
  permission: 'fleet-ops view vendor',
@@ -229,6 +248,7 @@ export default class ManagementDriversIndexController extends Controller {
229
248
  model: 'vendor',
230
249
  },
231
250
  {
251
+ id: 'fleets',
232
252
  label: this.intl.t('column.fleet'),
233
253
  cellComponent: 'table/cell/link-list',
234
254
  cellComponentLabelPath: 'name',
@@ -243,6 +263,7 @@ export default class ManagementDriversIndexController extends Controller {
243
263
  model: 'fleet',
244
264
  },
245
265
  {
266
+ id: 'country',
246
267
  label: this.intl.t('column.country'),
247
268
  valuePath: 'country',
248
269
  cellComponent: 'table/cell/country',
@@ -260,6 +281,7 @@ export default class ManagementDriversIndexController extends Controller {
260
281
  multiOptionSearchPlaceholder: this.intl.t('common.search-countries'),
261
282
  },
262
283
  {
284
+ id: 'status',
263
285
  label: this.intl.t('column.status'),
264
286
  valuePath: 'status',
265
287
  cellComponent: 'table/cell/status',
@@ -270,6 +292,7 @@ export default class ManagementDriversIndexController extends Controller {
270
292
  filterFetchOptions: 'drivers/statuses',
271
293
  },
272
294
  {
295
+ id: 'created-at',
273
296
  label: this.intl.t('column.created-at'),
274
297
  valuePath: 'createdAt',
275
298
  sortParam: 'created_at',
@@ -280,6 +303,7 @@ export default class ManagementDriversIndexController extends Controller {
280
303
  filterComponent: 'filter/date',
281
304
  },
282
305
  {
306
+ id: 'updated-at',
283
307
  label: this.intl.t('column.updated-at'),
284
308
  valuePath: 'updatedAt',
285
309
  sortParam: 'updated_at',
@@ -291,6 +315,7 @@ export default class ManagementDriversIndexController extends Controller {
291
315
  filterComponent: 'filter/date',
292
316
  },
293
317
  {
318
+ id: 'row-actions',
294
319
  label: '',
295
320
  cellComponent: 'table/cell/dropdown',
296
321
  ddButtonText: false,
@@ -303,12 +328,14 @@ export default class ManagementDriversIndexController extends Controller {
303
328
  width: 60,
304
329
  actions: [
305
330
  {
331
+ id: 'view',
306
332
  label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.driver') }),
307
333
  icon: 'eye',
308
334
  fn: this.driverActions.transition.view,
309
335
  permission: 'fleet-ops view driver',
310
336
  },
311
337
  {
338
+ id: 'edit',
312
339
  label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.driver') }),
313
340
  icon: 'pencil',
314
341
  fn: this.driverActions.transition.edit,
@@ -318,18 +345,21 @@ export default class ManagementDriversIndexController extends Controller {
318
345
  separator: true,
319
346
  },
320
347
  {
348
+ id: 'assign-order',
321
349
  label: this.intl.t('driver.actions.assign-order'),
322
350
  icon: 'clipboard-list',
323
351
  fn: this.driverActions.assignOrder,
324
352
  permission: 'fleet-ops assign-order-for driver',
325
353
  },
326
354
  {
355
+ id: 'assign-vehicle',
327
356
  label: this.intl.t('driver.actions.assign-vehicle'),
328
357
  icon: 'car',
329
358
  fn: this.driverActions.assignVehicle,
330
359
  permission: 'fleet-ops assign-vehicle-for driver',
331
360
  },
332
361
  {
362
+ id: 'unassign-orders',
333
363
  label: this.intl.t('driver.actions.unassign-orders'),
334
364
  icon: 'user-minus',
335
365
  fn: this.driverActions.unassignOrders,
@@ -337,6 +367,7 @@ export default class ManagementDriversIndexController extends Controller {
337
367
  isVisible: (driver) => Number(driver.assigned_orders_count) > 0,
338
368
  },
339
369
  {
370
+ id: 'unassign-vehicle',
340
371
  label: this.intl.t('driver.actions.unassign-vehicle'),
341
372
  icon: 'link-slash',
342
373
  fn: this.driverActions.unassignVehicle,
@@ -344,12 +375,14 @@ export default class ManagementDriversIndexController extends Controller {
344
375
  isVisible: (driver) => this.hasAssignedVehicle(driver),
345
376
  },
346
377
  {
378
+ id: 'locate',
347
379
  label: this.intl.t('driver.actions.locate-driver'),
348
380
  icon: 'location-dot',
349
381
  fn: this.driverActions.locate,
350
382
  permission: 'fleet-ops view driver',
351
383
  },
352
384
  {
385
+ id: 'create-issue',
353
386
  label: this.intl.t('driver.actions.create-issue'),
354
387
  icon: 'triangle-exclamation',
355
388
  fn: this.createIssue,
@@ -363,6 +396,7 @@ export default class ManagementDriversIndexController extends Controller {
363
396
  separator: true,
364
397
  },
365
398
  {
399
+ id: 'delete',
366
400
  label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.driver') }),
367
401
  icon: 'trash',
368
402
  fn: this.driverActions.delete,
@@ -35,6 +35,7 @@ export default class ManagementFleetsIndexDetailsController extends Controller {
35
35
  permission: 'fleet-ops update fleet',
36
36
  },
37
37
  {
38
+ id: 'more',
38
39
  icon: 'ellipsis-h',
39
40
  iconPrefix: 'fas',
40
41
  renderInPlace: true,
@@ -15,7 +15,22 @@ export default class ManagementFleetsIndexController extends Controller {
15
15
  @service intl;
16
16
 
17
17
  /** query params */
18
- @tracked queryParams = ['page', 'limit', 'sort', 'query', 'public_id', 'zone', 'service_area', 'parent_fleet', 'vendor', 'created_by', 'updated_by', 'status', 'task', 'name'];
18
+ @tracked queryParams = this.fleetActions.queryParamsFor([
19
+ 'page',
20
+ 'limit',
21
+ 'sort',
22
+ 'query',
23
+ 'public_id',
24
+ 'zone',
25
+ 'service_area',
26
+ 'parent_fleet',
27
+ 'vendor',
28
+ 'created_by',
29
+ 'updated_by',
30
+ 'status',
31
+ 'task',
32
+ 'name',
33
+ ]);
19
34
  @tracked page = 1;
20
35
  @tracked limit;
21
36
  @tracked sort = '-created_at';
@@ -33,28 +48,35 @@ export default class ManagementFleetsIndexController extends Controller {
33
48
  get actionButtons() {
34
49
  return [
35
50
  {
51
+ id: 'refresh',
36
52
  icon: 'refresh',
37
53
  onClick: this.fleetActions.refresh,
38
54
  helpText: this.intl.t('common.refresh'),
39
55
  },
40
56
  {
57
+ id: 'create',
41
58
  text: this.intl.t('common.new'),
42
59
  type: 'primary',
43
60
  icon: 'plus',
44
61
  onClick: this.fleetActions.transition.create,
62
+ permission: 'fleet-ops create fleet',
45
63
  },
46
64
  {
65
+ id: 'import',
47
66
  text: this.intl.t('common.import'),
48
67
  type: 'magic',
49
68
  icon: 'upload',
50
69
  onClick: this.fleetActions.import,
70
+ permission: 'fleet-ops import fleet',
51
71
  },
52
72
  {
73
+ id: 'export',
53
74
  text: this.intl.t('common.export'),
54
75
  icon: 'long-arrow-up',
55
76
  iconClass: 'rotate-icon-45',
56
77
  wrapperClass: 'hidden md:flex',
57
78
  onClick: this.fleetActions.export,
79
+ permission: 'fleet-ops export fleet',
58
80
  },
59
81
  ];
60
82
  }
@@ -65,9 +87,11 @@ export default class ManagementFleetsIndexController extends Controller {
65
87
 
66
88
  return [
67
89
  {
90
+ id: 'bulk-delete',
68
91
  label: this.intl.t('common.delete-selected-count', { count: selected.length }),
69
92
  class: 'text-red-500',
70
93
  fn: this.fleetActions.bulkDelete,
94
+ permission: 'fleet-ops delete fleet',
71
95
  },
72
96
  ];
73
97
  }
@@ -76,6 +100,7 @@ export default class ManagementFleetsIndexController extends Controller {
76
100
  get columns() {
77
101
  return [
78
102
  {
103
+ id: 'name',
79
104
  sticky: true,
80
105
  label: this.intl.t('column.name'),
81
106
  valuePath: 'name',
@@ -89,6 +114,7 @@ export default class ManagementFleetsIndexController extends Controller {
89
114
  filterComponent: 'filter/string',
90
115
  },
91
116
  {
117
+ id: 'service-area-name',
92
118
  label: this.intl.t('column.service-area'),
93
119
  cellComponent: 'cell/service-area-identity',
94
120
  permission: 'fleet-ops view service-area',
@@ -103,6 +129,7 @@ export default class ManagementFleetsIndexController extends Controller {
103
129
  model: 'service-area',
104
130
  },
105
131
  {
132
+ id: 'parent-fleet-name',
106
133
  label: this.intl.t('column.parent-fleet'),
107
134
  cellComponent: 'cell/fleet-identity',
108
135
  permission: 'fleet-ops view fleet',
@@ -116,6 +143,7 @@ export default class ManagementFleetsIndexController extends Controller {
116
143
  model: 'fleet',
117
144
  },
118
145
  {
146
+ id: 'vendor-name',
119
147
  label: this.intl.t('column.vendor'),
120
148
  cellComponent: 'cell/vendor-identity',
121
149
  permission: 'fleet-ops view vendor',
@@ -130,6 +158,7 @@ export default class ManagementFleetsIndexController extends Controller {
130
158
  model: 'vendor',
131
159
  },
132
160
  {
161
+ id: 'zone-name',
133
162
  label: this.intl.t('column.zone'),
134
163
  cellComponent: 'cell/zone-identity',
135
164
  permission: 'fleet-ops view zone',
@@ -143,6 +172,7 @@ export default class ManagementFleetsIndexController extends Controller {
143
172
  model: 'zone',
144
173
  },
145
174
  {
175
+ id: 'public-id',
146
176
  label: this.intl.t('column.id'),
147
177
  valuePath: 'public_id',
148
178
  cellComponent: 'click-to-copy',
@@ -154,6 +184,7 @@ export default class ManagementFleetsIndexController extends Controller {
154
184
  filterComponent: 'filter/string',
155
185
  },
156
186
  {
187
+ id: 'drivers-count',
157
188
  label: this.intl.t('column.manpower'),
158
189
  valuePath: 'drivers_count',
159
190
  resizable: true,
@@ -161,6 +192,7 @@ export default class ManagementFleetsIndexController extends Controller {
161
192
  filterable: false,
162
193
  },
163
194
  {
195
+ id: 'drivers-online-count',
164
196
  label: this.intl.t('column.active-manpower'),
165
197
  valuePath: 'drivers_online_count',
166
198
  hidden: true,
@@ -169,6 +201,7 @@ export default class ManagementFleetsIndexController extends Controller {
169
201
  filterable: false,
170
202
  },
171
203
  {
204
+ id: 'task',
172
205
  label: this.intl.t('column.task'),
173
206
  valuePath: 'task',
174
207
  cellComponent: 'table/cell/base',
@@ -178,6 +211,7 @@ export default class ManagementFleetsIndexController extends Controller {
178
211
  filterComponent: 'filter/string',
179
212
  },
180
213
  {
214
+ id: 'status',
181
215
  label: this.intl.t('column.status'),
182
216
  valuePath: 'status',
183
217
  cellComponent: 'table/cell/status',
@@ -190,6 +224,7 @@ export default class ManagementFleetsIndexController extends Controller {
190
224
  filterOptions: fleetOpsOptions('fleetStatuses'),
191
225
  },
192
226
  {
227
+ id: 'created-at',
193
228
  label: this.intl.t('column.created-at'),
194
229
  valuePath: 'createdAt',
195
230
  sortParam: 'created_at',
@@ -199,6 +234,7 @@ export default class ManagementFleetsIndexController extends Controller {
199
234
  filterComponent: 'filter/date',
200
235
  },
201
236
  {
237
+ id: 'updated-at',
202
238
  label: this.intl.t('column.updated-at'),
203
239
  valuePath: 'updatedAt',
204
240
  sortParam: 'updated_at',
@@ -209,6 +245,7 @@ export default class ManagementFleetsIndexController extends Controller {
209
245
  filterComponent: 'filter/date',
210
246
  },
211
247
  {
248
+ id: 'row-actions',
212
249
  label: '',
213
250
  cellComponent: 'table/cell/dropdown',
214
251
  ddButtonText: false,
@@ -221,21 +258,25 @@ export default class ManagementFleetsIndexController extends Controller {
221
258
  width: 60,
222
259
  actions: [
223
260
  {
261
+ id: 'view',
224
262
  label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.fleet') }),
225
263
  fn: this.fleetActions.transition.view,
226
264
  permission: 'fleet-ops view fleet',
227
265
  },
228
266
  {
267
+ id: 'edit',
229
268
  label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.fleet') }),
230
269
  fn: this.fleetActions.transition.edit,
231
270
  permission: 'fleet-ops update fleet',
232
271
  },
233
272
  {
273
+ id: 'assign-driver',
234
274
  label: this.intl.t('fleet.actions.assign-driver'),
235
275
  permission: 'fleet-ops assign-driver-for fleet',
236
276
  fn: this.fleetActions.assignDriver,
237
277
  },
238
278
  {
279
+ id: 'assign-vehicle',
239
280
  label: this.intl.t('fleet.actions.assign-vehicle'),
240
281
  permission: 'fleet-ops assign-vehicle-for fleet',
241
282
  fn: this.fleetActions.assignVehicle,
@@ -244,6 +285,7 @@ export default class ManagementFleetsIndexController extends Controller {
244
285
  separator: true,
245
286
  },
246
287
  {
288
+ id: 'delete',
247
289
  label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.fleet') }),
248
290
  fn: this.fleetActions.delete,
249
291
  permission: 'fleet-ops delete fleet',