@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
@@ -19,8 +19,8 @@ export default class MaintenanceEquipmentIndexDetailsController extends Controll
19
19
 
20
20
  get actionButtons() {
21
21
  return [
22
- { icon: 'edit', fn: this.edit, permission: 'fleet-ops update equipment' },
23
- { icon: 'trash', fn: this.delete, type: 'danger', permission: 'fleet-ops delete equipment' },
22
+ { id: 'edit', icon: 'edit', fn: this.edit, permission: 'fleet-ops update equipment' },
23
+ { id: 'delete', icon: 'trash', fn: this.delete, type: 'danger', permission: 'fleet-ops delete equipment' },
24
24
  ];
25
25
  }
26
26
 
@@ -7,7 +7,7 @@ export default class MaintenanceEquipmentIndexController extends Controller {
7
7
  @service intl;
8
8
  @service appCache;
9
9
 
10
- @tracked queryParams = ['type', 'status', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at'];
10
+ @tracked queryParams = this.equipmentActions.queryParamsFor(['type', 'status', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at']);
11
11
  @tracked page = 1;
12
12
  @tracked limit;
13
13
  @tracked sort = '-created_at';
@@ -21,6 +21,7 @@ export default class MaintenanceEquipmentIndexController extends Controller {
21
21
  get actionButtons() {
22
22
  return [
23
23
  {
24
+ id: 'more',
24
25
  component: 'dropdown-button',
25
26
  icon: 'display',
26
27
  size: 'xs',
@@ -45,20 +46,29 @@ export default class MaintenanceEquipmentIndexController extends Controller {
45
46
  renderInPlace: true,
46
47
  helpText: 'Change the layout',
47
48
  },
48
- { icon: 'refresh', onClick: this.equipmentActions.refresh, helpText: this.intl.t('common.refresh') },
49
- { text: this.intl.t('common.new'), type: 'primary', icon: 'plus', onClick: this.equipmentActions.transition.create },
50
- { text: this.intl.t('common.import'), type: 'magic', icon: 'upload', onClick: this.equipmentActions.import },
51
- { text: this.intl.t('common.export'), icon: 'long-arrow-up', iconClass: 'rotate-icon-45', wrapperClass: 'hidden md:flex', onClick: this.equipmentActions.export },
49
+ { id: 'refresh', icon: 'refresh', onClick: this.equipmentActions.refresh, helpText: this.intl.t('common.refresh') },
50
+ { id: 'create', text: this.intl.t('common.new'), type: 'primary', icon: 'plus', onClick: this.equipmentActions.transition.create, permission: 'fleet-ops create equipment' },
51
+ { id: 'import', text: this.intl.t('common.import'), type: 'magic', icon: 'upload', onClick: this.equipmentActions.import, permission: 'fleet-ops import equipment' },
52
+ {
53
+ id: 'export',
54
+ text: this.intl.t('common.export'),
55
+ icon: 'long-arrow-up',
56
+ iconClass: 'rotate-icon-45',
57
+ wrapperClass: 'hidden md:flex',
58
+ onClick: this.equipmentActions.export,
59
+ permission: 'fleet-ops export equipment',
60
+ },
52
61
  ];
53
62
  }
54
63
 
55
64
  get bulkActions() {
56
- return [{ label: 'Delete selected...', class: 'text-red-500', fn: this.equipmentActions.bulkDelete }];
65
+ return [{ id: 'bulk-delete', label: 'Delete selected...', class: 'text-red-500', fn: this.equipmentActions.bulkDelete, permission: 'fleet-ops delete equipment' }];
57
66
  }
58
67
 
59
68
  get columns() {
60
69
  return [
61
70
  {
71
+ id: 'name',
62
72
  label: this.intl.t('column.name'),
63
73
  valuePath: 'name',
64
74
  cellComponent: 'cell/equipment-identity',
@@ -70,8 +80,9 @@ export default class MaintenanceEquipmentIndexController extends Controller {
70
80
  filterParam: 'name',
71
81
  filterComponent: 'filter/string',
72
82
  },
73
- { label: this.intl.t('column.code'), valuePath: 'code', resizable: true, sortable: true, filterable: true, filterParam: 'code', filterComponent: 'filter/string' },
83
+ { id: 'code', label: this.intl.t('column.code'), valuePath: 'code', resizable: true, sortable: true, filterable: true, filterParam: 'code', filterComponent: 'filter/string' },
74
84
  {
85
+ id: 'type',
75
86
  label: this.intl.t('column.type'),
76
87
  valuePath: 'type',
77
88
  cellComponent: 'table/cell/base',
@@ -83,6 +94,7 @@ export default class MaintenanceEquipmentIndexController extends Controller {
83
94
  filterComponent: 'filter/string',
84
95
  },
85
96
  {
97
+ id: 'status',
86
98
  label: this.intl.t('column.status'),
87
99
  valuePath: 'status',
88
100
  cellComponent: 'table/cell/status',
@@ -92,10 +104,20 @@ export default class MaintenanceEquipmentIndexController extends Controller {
92
104
  filterParam: 'status',
93
105
  filterComponent: 'filter/string',
94
106
  },
95
- { label: this.intl.t('column.serial-number'), valuePath: 'serial_number', resizable: true, sortable: true },
96
- { label: this.intl.t('column.manufacturer'), valuePath: 'manufacturer', resizable: true, sortable: true },
97
- { label: this.intl.t('column.created-at'), valuePath: 'createdAt', sortParam: 'created_at', resizable: true, sortable: true, filterable: true, filterComponent: 'filter/date' },
107
+ { id: 'serial-number', label: this.intl.t('column.serial-number'), valuePath: 'serial_number', resizable: true, sortable: true },
108
+ { id: 'manufacturer', label: this.intl.t('column.manufacturer'), valuePath: 'manufacturer', resizable: true, sortable: true },
109
+ {
110
+ id: 'created-at',
111
+ label: this.intl.t('column.created-at'),
112
+ valuePath: 'createdAt',
113
+ sortParam: 'created_at',
114
+ resizable: true,
115
+ sortable: true,
116
+ filterable: true,
117
+ filterComponent: 'filter/date',
118
+ },
98
119
  {
120
+ id: 'updated-at',
99
121
  label: this.intl.t('column.updated-at'),
100
122
  valuePath: 'updatedAt',
101
123
  sortParam: 'updated_at',
@@ -106,6 +128,7 @@ export default class MaintenanceEquipmentIndexController extends Controller {
106
128
  filterComponent: 'filter/date',
107
129
  },
108
130
  {
131
+ id: 'row-actions',
109
132
  label: '',
110
133
  cellComponent: 'table/cell/dropdown',
111
134
  ddButtonText: false,
@@ -116,17 +139,20 @@ export default class MaintenanceEquipmentIndexController extends Controller {
116
139
  wrapperClass: 'flex items-center justify-end mx-2',
117
140
  actions: [
118
141
  {
142
+ id: 'view',
119
143
  label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.equipment') }),
120
144
  fn: this.equipmentActions.transition.view,
121
145
  permission: 'fleet-ops view equipment',
122
146
  },
123
147
  {
148
+ id: 'edit',
124
149
  label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.equipment') }),
125
150
  fn: this.equipmentActions.transition.edit,
126
151
  permission: 'fleet-ops update equipment',
127
152
  },
128
153
  { separator: true },
129
154
  {
155
+ id: 'delete',
130
156
  label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.equipment') }),
131
157
  fn: this.equipmentActions.delete,
132
158
  permission: 'fleet-ops delete equipment',
@@ -6,7 +6,7 @@ export default class MaintenanceInspectionFormsIndexController extends Controlle
6
6
  @service inspectionFormActions;
7
7
  @service intl;
8
8
 
9
- @tracked queryParams = ['status', 'type', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at'];
9
+ @tracked queryParams = this.inspectionFormActions.queryParamsFor(['status', 'type', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at']);
10
10
  @tracked page = 1;
11
11
  @tracked limit;
12
12
  @tracked sort = '-created_at';
@@ -16,18 +16,26 @@ export default class MaintenanceInspectionFormsIndexController extends Controlle
16
16
 
17
17
  get actionButtons() {
18
18
  return [
19
- { icon: 'refresh', onClick: this.inspectionFormActions.refresh, helpText: this.intl.t('common.refresh') },
20
- { text: this.intl.t('common.new'), type: 'primary', icon: 'plus', onClick: this.inspectionFormActions.transition.create },
19
+ { id: 'refresh', icon: 'refresh', onClick: this.inspectionFormActions.refresh, helpText: this.intl.t('common.refresh') },
20
+ {
21
+ id: 'create',
22
+ text: this.intl.t('common.new'),
23
+ type: 'primary',
24
+ icon: 'plus',
25
+ onClick: this.inspectionFormActions.transition.create,
26
+ permission: 'fleet-ops create inspection-form',
27
+ },
21
28
  ];
22
29
  }
23
30
 
24
31
  get bulkActions() {
25
- return [{ label: 'Delete selected...', class: 'text-red-500', fn: this.inspectionFormActions.bulkDelete }];
32
+ return [{ id: 'bulk-delete', label: 'Delete selected...', class: 'text-red-500', fn: this.inspectionFormActions.bulkDelete, permission: 'fleet-ops delete inspection-form' }];
26
33
  }
27
34
 
28
35
  get columns() {
29
36
  return [
30
37
  {
38
+ id: 'name',
31
39
  label: 'Name',
32
40
  valuePath: 'name',
33
41
  cellComponent: 'table/cell/anchor',
@@ -40,6 +48,7 @@ export default class MaintenanceInspectionFormsIndexController extends Controlle
40
48
  filterComponent: 'filter/string',
41
49
  },
42
50
  {
51
+ id: 'type',
43
52
  label: 'Type',
44
53
  valuePath: 'type',
45
54
  cellComponent: 'table/cell/fleet-ops-option',
@@ -51,6 +60,7 @@ export default class MaintenanceInspectionFormsIndexController extends Controlle
51
60
  filterComponent: 'filter/string',
52
61
  },
53
62
  {
63
+ id: 'status',
54
64
  label: 'Status',
55
65
  valuePath: 'status',
56
66
  cellComponent: 'table/cell/status',
@@ -60,9 +70,19 @@ export default class MaintenanceInspectionFormsIndexController extends Controlle
60
70
  filterParam: 'status',
61
71
  filterComponent: 'filter/string',
62
72
  },
63
- { label: 'Items', valuePath: 'item_count', resizable: true, sortable: false },
64
- { label: this.intl.t('column.created-at'), valuePath: 'createdAt', sortParam: 'created_at', resizable: true, sortable: true, filterable: true, filterComponent: 'filter/date' },
73
+ { id: 'item-count', label: 'Items', valuePath: 'item_count', resizable: true, sortable: false },
74
+ {
75
+ id: 'created-at',
76
+ label: this.intl.t('column.created-at'),
77
+ valuePath: 'createdAt',
78
+ sortParam: 'created_at',
79
+ resizable: true,
80
+ sortable: true,
81
+ filterable: true,
82
+ filterComponent: 'filter/date',
83
+ },
65
84
  {
85
+ id: 'row-actions',
66
86
  label: '',
67
87
  cellComponent: 'table/cell/dropdown',
68
88
  ddButtonText: false,
@@ -71,14 +91,14 @@ export default class MaintenanceInspectionFormsIndexController extends Controlle
71
91
  cellClassNames: 'overflow-visible',
72
92
  wrapperClass: 'flex items-center justify-end mx-2',
73
93
  actions: [
74
- { label: 'View form', fn: this.inspectionFormActions.transition.view, permission: 'fleet-ops view inspection-form' },
75
- { label: 'Edit form', fn: this.inspectionFormActions.transition.edit, permission: 'fleet-ops update inspection-form' },
94
+ { id: 'view', label: 'View form', fn: this.inspectionFormActions.transition.view, permission: 'fleet-ops view inspection-form' },
95
+ { id: 'edit', label: 'Edit form', fn: this.inspectionFormActions.transition.edit, permission: 'fleet-ops update inspection-form' },
76
96
  { separator: true },
77
- { label: 'Publish', fn: this.inspectionFormActions.publish, permission: 'fleet-ops publish inspection-form' },
78
- { label: 'Archive', fn: this.inspectionFormActions.archive, permission: 'fleet-ops archive inspection-form' },
79
- { label: 'Generate inspection link', fn: this.inspectionFormActions.generateLink, permission: 'fleet-ops view inspection-form' },
97
+ { id: 'publish', label: 'Publish', fn: this.inspectionFormActions.publish, permission: 'fleet-ops publish inspection-form' },
98
+ { id: 'archive', label: 'Archive', fn: this.inspectionFormActions.archive, permission: 'fleet-ops archive inspection-form' },
99
+ { id: 'generate-link', label: 'Generate inspection link', fn: this.inspectionFormActions.generateLink, permission: 'fleet-ops view inspection-form' },
80
100
  { separator: true },
81
- { label: 'Delete form', fn: this.inspectionFormActions.delete, class: 'text-red-500', permission: 'fleet-ops delete inspection-form' },
101
+ { id: 'delete', label: 'Delete form', fn: this.inspectionFormActions.delete, class: 'text-red-500', permission: 'fleet-ops delete inspection-form' },
82
102
  ],
83
103
  sortable: false,
84
104
  filterable: false,
@@ -24,8 +24,9 @@ export default class MaintenanceInspectionSubmissionsIndexDetailsController exte
24
24
  */
25
25
  get actionButtons() {
26
26
  return [
27
- { icon: 'edit', fn: this.edit, permission: 'fleet-ops update inspection-submission' },
27
+ { id: 'edit', icon: 'edit', fn: this.edit, permission: 'fleet-ops update inspection-submission' },
28
28
  {
29
+ id: 'more',
29
30
  icon: 'ellipsis-h',
30
31
  iconPrefix: 'fas',
31
32
  renderInPlace: true,
@@ -9,7 +9,20 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
9
9
  @service inspectionSubmissionActions;
10
10
  @service intl;
11
11
 
12
- @tracked queryParams = ['status', 'result', 'type', 'page', 'limit', 'sort', 'query', 'public_id', 'vehicle', 'driver', 'created_at', 'updated_at'];
12
+ @tracked queryParams = this.inspectionSubmissionActions.queryParamsFor([
13
+ 'status',
14
+ 'result',
15
+ 'type',
16
+ 'page',
17
+ 'limit',
18
+ 'sort',
19
+ 'query',
20
+ 'public_id',
21
+ 'vehicle',
22
+ 'driver',
23
+ 'created_at',
24
+ 'updated_at',
25
+ ]);
13
26
  @tracked page = 1;
14
27
  @tracked limit;
15
28
  @tracked sort = '-created_at';
@@ -22,18 +35,28 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
22
35
 
23
36
  get actionButtons() {
24
37
  return [
25
- { icon: 'refresh', onClick: this.inspectionSubmissionActions.refresh, helpText: this.intl.t('common.refresh') },
26
- { text: this.intl.t('common.new'), type: 'primary', icon: 'plus', onClick: this.inspectionSubmissionActions.transition.create },
38
+ { id: 'refresh', icon: 'refresh', onClick: this.inspectionSubmissionActions.refresh, helpText: this.intl.t('common.refresh') },
39
+ {
40
+ id: 'create',
41
+ text: this.intl.t('common.new'),
42
+ type: 'primary',
43
+ icon: 'plus',
44
+ onClick: this.inspectionSubmissionActions.transition.create,
45
+ permission: 'fleet-ops create inspection-submission',
46
+ },
27
47
  ];
28
48
  }
29
49
 
30
50
  get bulkActions() {
31
- return [{ label: 'Delete selected...', class: 'text-red-500', fn: this.inspectionSubmissionActions.bulkDelete }];
51
+ return [
52
+ { id: 'bulk-delete', label: 'Delete selected...', class: 'text-red-500', fn: this.inspectionSubmissionActions.bulkDelete, permission: 'fleet-ops delete inspection-submission' },
53
+ ];
32
54
  }
33
55
 
34
56
  get columns() {
35
57
  return [
36
58
  {
59
+ id: 'public-id',
37
60
  label: 'Inspection',
38
61
  valuePath: 'public_id',
39
62
  cellComponent: 'table/cell/anchor',
@@ -46,6 +69,7 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
46
69
  filterComponent: 'filter/string',
47
70
  },
48
71
  {
72
+ id: 'form-name',
49
73
  label: 'Form',
50
74
  valuePath: 'form_name',
51
75
  cellComponent: 'cell/inspection-form-identity',
@@ -55,6 +79,7 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
55
79
  sortable: false,
56
80
  },
57
81
  {
82
+ id: 'vehicle-name',
58
83
  label: 'Vehicle',
59
84
  valuePath: 'vehicle_name',
60
85
  cellComponent: 'cell/vehicle-identity',
@@ -66,6 +91,7 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
66
91
  sortable: false,
67
92
  },
68
93
  {
94
+ id: 'driver-name',
69
95
  label: 'Driver',
70
96
  valuePath: 'driver_name',
71
97
  cellComponent: 'cell/driver-identity',
@@ -77,6 +103,7 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
77
103
  sortable: false,
78
104
  },
79
105
  {
106
+ id: 'result',
80
107
  label: 'Result',
81
108
  valuePath: 'result',
82
109
  cellComponent: 'table/cell/status',
@@ -86,9 +113,19 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
86
113
  filterParam: 'result',
87
114
  filterComponent: 'filter/string',
88
115
  },
89
- { label: 'Failed', valuePath: 'failed_items', resizable: true, sortable: true },
90
- { label: 'Submitted', valuePath: 'submittedAt', sortParam: 'submitted_at', resizable: true, sortable: true, filterable: true, filterComponent: 'filter/date' },
116
+ { id: 'failed-items', label: 'Failed', valuePath: 'failed_items', resizable: true, sortable: true },
91
117
  {
118
+ id: 'submitted-at',
119
+ label: 'Submitted',
120
+ valuePath: 'submittedAt',
121
+ sortParam: 'submitted_at',
122
+ resizable: true,
123
+ sortable: true,
124
+ filterable: true,
125
+ filterComponent: 'filter/date',
126
+ },
127
+ {
128
+ id: 'row-actions',
92
129
  label: '',
93
130
  cellComponent: 'table/cell/dropdown',
94
131
  ddButtonText: false,
@@ -97,8 +134,8 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
97
134
  cellClassNames: 'overflow-visible',
98
135
  wrapperClass: 'flex items-center justify-end mx-2',
99
136
  actions: [
100
- { label: 'View inspection', fn: this.inspectionSubmissionActions.transition.view, permission: 'fleet-ops view inspection-submission' },
101
- { label: 'Edit inspection', fn: this.inspectionSubmissionActions.transition.edit, permission: 'fleet-ops update inspection-submission' },
137
+ { id: 'view', label: 'View inspection', fn: this.inspectionSubmissionActions.transition.view, permission: 'fleet-ops view inspection-submission' },
138
+ { id: 'edit', label: 'Edit inspection', fn: this.inspectionSubmissionActions.transition.edit, permission: 'fleet-ops update inspection-submission' },
102
139
  {
103
140
  separator: true,
104
141
  // Everything below this rule is conditional. On a row
@@ -108,6 +145,7 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
108
145
  isVisible: (row) => row?.status === 'draft' || row?.status !== 'resolved' || Boolean(row?.has_failures && (!row?.issue_uuid || !row?.work_order_uuid)),
109
146
  },
110
147
  {
148
+ id: 'submit',
111
149
  label: 'Submit',
112
150
  fn: this.inspectionSubmissionActions.submit,
113
151
  permission: 'fleet-ops submit inspection-submission',
@@ -117,20 +155,28 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
117
155
  isVisible: (row) => row?.status === 'draft',
118
156
  },
119
157
  {
158
+ id: 'create-issue',
120
159
  label: 'Create issue',
121
160
  fn: this.inspectionSubmissionActions.createIssue,
122
161
  permission: 'fleet-ops create-issue inspection-submission',
123
162
  isVisible: (row) => row?.has_failures && !row?.issue_uuid,
124
163
  },
125
164
  {
165
+ id: 'create-work-order',
126
166
  label: 'Create work order',
127
167
  fn: this.inspectionSubmissionActions.createWorkOrder,
128
168
  permission: 'fleet-ops create-work-order inspection-submission',
129
169
  isVisible: (row) => row?.has_failures && !row?.work_order_uuid,
130
170
  },
131
- { label: 'Resolve', fn: this.inspectionSubmissionActions.resolve, permission: 'fleet-ops resolve inspection-submission', isVisible: (row) => row?.status !== 'resolved' },
171
+ {
172
+ id: 'resolve',
173
+ label: 'Resolve',
174
+ fn: this.inspectionSubmissionActions.resolve,
175
+ permission: 'fleet-ops resolve inspection-submission',
176
+ isVisible: (row) => row?.status !== 'resolved',
177
+ },
132
178
  { separator: true },
133
- { label: 'Delete inspection', fn: this.inspectionSubmissionActions.delete, class: 'text-red-500', permission: 'fleet-ops delete inspection-submission' },
179
+ { id: 'delete', label: 'Delete inspection', fn: this.inspectionSubmissionActions.delete, class: 'text-red-500', permission: 'fleet-ops delete inspection-submission' },
134
180
  ],
135
181
  sortable: false,
136
182
  filterable: false,
@@ -27,11 +27,13 @@ export default class MaintenanceMaintenancesIndexDetailsController extends Contr
27
27
  get actionButtons() {
28
28
  return [
29
29
  {
30
+ id: 'edit',
30
31
  icon: 'edit',
31
32
  fn: this.edit,
32
33
  permission: 'fleet-ops update maintenance',
33
34
  },
34
35
  {
36
+ id: 'delete',
35
37
  icon: 'trash',
36
38
  fn: this.delete,
37
39
  type: 'danger',
@@ -9,7 +9,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
9
9
  @service intl;
10
10
 
11
11
  /** query params */
12
- @tracked queryParams = ['type', 'status', 'priority', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at'];
12
+ @tracked queryParams = this.maintenanceActions.queryParamsFor(['type', 'status', 'priority', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at']);
13
13
  @tracked page = 1;
14
14
  @tracked limit;
15
15
  @tracked sort = '-created_at';
@@ -22,28 +22,35 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
22
22
  get actionButtons() {
23
23
  return [
24
24
  {
25
+ id: 'refresh',
25
26
  icon: 'refresh',
26
27
  onClick: this.maintenanceActions.refresh,
27
28
  helpText: this.intl.t('common.refresh'),
28
29
  },
29
30
  {
31
+ id: 'create',
30
32
  text: this.intl.t('common.new'),
31
33
  type: 'primary',
32
34
  icon: 'plus',
33
35
  onClick: this.maintenanceActions.transition.create,
36
+ permission: 'fleet-ops create maintenance',
34
37
  },
35
38
  {
39
+ id: 'import',
36
40
  text: this.intl.t('common.import'),
37
41
  type: 'magic',
38
42
  icon: 'upload',
39
43
  onClick: this.maintenanceActions.import,
44
+ permission: 'fleet-ops import maintenance',
40
45
  },
41
46
  {
47
+ id: 'export',
42
48
  text: this.intl.t('common.export'),
43
49
  icon: 'long-arrow-up',
44
50
  iconClass: 'rotate-icon-45',
45
51
  wrapperClass: 'hidden md:flex',
46
52
  onClick: this.maintenanceActions.export,
53
+ permission: 'fleet-ops export maintenance',
47
54
  },
48
55
  ];
49
56
  }
@@ -52,9 +59,11 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
52
59
  get bulkActions() {
53
60
  return [
54
61
  {
62
+ id: 'bulk-delete',
55
63
  label: 'Delete selected...',
56
64
  class: 'text-red-500',
57
65
  fn: this.maintenanceActions.bulkDelete,
66
+ permission: 'fleet-ops delete maintenance',
58
67
  },
59
68
  ];
60
69
  }
@@ -63,6 +72,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
63
72
  get columns() {
64
73
  return [
65
74
  {
75
+ id: 'summary',
66
76
  label: this.intl.t('column.summary'),
67
77
  valuePath: 'summary',
68
78
  cellComponent: 'table/cell/anchor',
@@ -76,6 +86,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
76
86
  filterComponent: 'filter/string',
77
87
  },
78
88
  {
89
+ id: 'maintainable-name',
79
90
  label: this.intl.t('column.asset'),
80
91
  valuePath: 'maintainable.name',
81
92
  cellComponent: 'cell/maintenance-subject-identity',
@@ -84,6 +95,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
84
95
  sortable: true,
85
96
  },
86
97
  {
98
+ id: 'performed-by-name',
87
99
  label: this.intl.t('column.performed-by'),
88
100
  valuePath: 'performed_by.name',
89
101
  cellComponent: 'cell/facilitator-identity',
@@ -92,6 +104,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
92
104
  sortable: true,
93
105
  },
94
106
  {
107
+ id: 'type',
95
108
  label: this.intl.t('column.type'),
96
109
  valuePath: 'type',
97
110
  cellComponent: 'table/cell/base',
@@ -103,6 +116,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
103
116
  filterComponent: 'filter/string',
104
117
  },
105
118
  {
119
+ id: 'status',
106
120
  label: this.intl.t('column.status'),
107
121
  valuePath: 'status',
108
122
  cellComponent: 'table/cell/status',
@@ -113,6 +127,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
113
127
  filterComponent: 'filter/string',
114
128
  },
115
129
  {
130
+ id: 'priority',
116
131
  label: this.intl.t('column.priority'),
117
132
  valuePath: 'priority',
118
133
  cellComponent: 'table/cell/base',
@@ -124,6 +139,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
124
139
  filterComponent: 'filter/string',
125
140
  },
126
141
  {
142
+ id: 'scheduled-at',
127
143
  label: this.intl.t('column.scheduled-at'),
128
144
  valuePath: 'scheduledAt',
129
145
  sortParam: 'scheduled_at',
@@ -133,6 +149,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
133
149
  filterComponent: 'filter/date',
134
150
  },
135
151
  {
152
+ id: 'total-cost',
136
153
  label: this.intl.t('column.total-cost'),
137
154
  valuePath: 'total_cost',
138
155
  cellComponent: 'table/cell/currency',
@@ -140,6 +157,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
140
157
  sortable: true,
141
158
  },
142
159
  {
160
+ id: 'created-at',
143
161
  label: this.intl.t('column.created-at'),
144
162
  valuePath: 'createdAt',
145
163
  sortParam: 'created_at',
@@ -149,6 +167,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
149
167
  filterComponent: 'filter/date',
150
168
  },
151
169
  {
170
+ id: 'updated-at',
152
171
  label: this.intl.t('column.updated-at'),
153
172
  valuePath: 'updatedAt',
154
173
  sortParam: 'updated_at',
@@ -159,6 +178,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
159
178
  filterComponent: 'filter/date',
160
179
  },
161
180
  {
181
+ id: 'row-actions',
162
182
  label: '',
163
183
  cellComponent: 'table/cell/dropdown',
164
184
  ddButtonText: false,
@@ -169,17 +189,20 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
169
189
  wrapperClass: 'flex items-center justify-end mx-2',
170
190
  actions: [
171
191
  {
192
+ id: 'view',
172
193
  label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.maintenance') }),
173
194
  fn: this.maintenanceActions.transition.view,
174
195
  permission: 'fleet-ops view maintenance',
175
196
  },
176
197
  {
198
+ id: 'edit',
177
199
  label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.maintenance') }),
178
200
  fn: this.maintenanceActions.transition.edit,
179
201
  permission: 'fleet-ops update maintenance',
180
202
  },
181
203
  { separator: true },
182
204
  {
205
+ id: 'delete',
183
206
  label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.maintenance') }),
184
207
  fn: this.maintenanceActions.delete,
185
208
  permission: 'fleet-ops delete maintenance',
@@ -19,8 +19,8 @@ export default class MaintenancePartsIndexDetailsController extends Controller {
19
19
 
20
20
  get actionButtons() {
21
21
  return [
22
- { icon: 'edit', fn: this.edit, permission: 'fleet-ops update part' },
23
- { icon: 'trash', fn: this.delete, type: 'danger', permission: 'fleet-ops delete part' },
22
+ { id: 'edit', icon: 'edit', fn: this.edit, permission: 'fleet-ops update part' },
23
+ { id: 'delete', icon: 'trash', fn: this.delete, type: 'danger', permission: 'fleet-ops delete part' },
24
24
  ];
25
25
  }
26
26