@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.
- package/RELEASE.md +21 -14
- package/addon/components/admin/telematics-settings.hbs +143 -0
- package/addon/components/admin/telematics-settings.js +145 -0
- package/addon/components/fuel-integration/hub.hbs +1 -1
- package/addon/components/layout/fleet-ops-sidebar.js +37 -17
- package/addon/components/map/leaflet-live-map.hbs +4 -242
- package/addon/components/map/leaflet-live-map.js +2 -1
- package/addon/components/map/marker-card/driver.hbs +57 -0
- package/addon/components/map/marker-card/driver.js +3 -0
- package/addon/components/map/marker-card/vehicle.hbs +78 -0
- package/addon/components/map/marker-card/vehicle.js +3 -0
- package/addon/components/order/details/activity.hbs +8 -6
- package/addon/components/order/details/activity.js +9 -0
- package/addon/components/order/details.hbs +29 -0
- package/addon/components/order/details.js +26 -0
- package/addon/components/order/form/details.hbs +30 -4
- package/addon/components/order/form/details.js +46 -0
- package/addon/components/order/form/route.hbs +4 -2
- package/addon/components/order/form/route.js +11 -0
- package/addon/components/order/form.hbs +12 -0
- package/addon/components/order/form.js +21 -1
- package/addon/components/order/kanban.js +72 -0
- package/addon/components/order-config-manager/activity-flow.js +45 -10
- package/addon/components/order-config-manager/lifecycle.hbs +250 -0
- package/addon/components/order-config-manager/lifecycle.js +358 -0
- package/addon/components/order-config-manager.js +5 -1
- package/addon/components/telematic/hub.hbs +1 -1
- package/addon/components/widget/live-fleet.hbs +8 -40
- package/addon/controllers/analytics/reports/index.js +15 -1
- package/addon/controllers/connectivity/devices/index/details.js +1 -0
- package/addon/controllers/connectivity/devices/index.js +12 -2
- package/addon/controllers/connectivity/events/index.js +31 -1
- package/addon/controllers/connectivity/fuel-providers/index.js +6 -4
- package/addon/controllers/connectivity/sensors/index/details.js +1 -1
- package/addon/controllers/connectivity/sensors/index.js +41 -1
- package/addon/controllers/connectivity/telematics/index.js +4 -0
- package/addon/controllers/maintenance/equipment/index/details.js +2 -2
- package/addon/controllers/maintenance/equipment/index.js +36 -10
- package/addon/controllers/maintenance/inspection-forms/index.js +32 -12
- package/addon/controllers/maintenance/inspection-submissions/index/details.js +2 -1
- package/addon/controllers/maintenance/inspection-submissions/index.js +56 -10
- package/addon/controllers/maintenance/maintenances/index/details.js +2 -0
- package/addon/controllers/maintenance/maintenances/index.js +24 -1
- package/addon/controllers/maintenance/parts/index/details.js +2 -2
- package/addon/controllers/maintenance/parts/index.js +36 -9
- package/addon/controllers/maintenance/schedules/index.js +48 -6
- package/addon/controllers/maintenance/work-orders/index/details.js +3 -3
- package/addon/controllers/maintenance/work-orders/index.js +47 -9
- package/addon/controllers/management/contacts/customers.js +13 -0
- package/addon/controllers/management/contacts/index.js +47 -1
- package/addon/controllers/management/drivers/index/details.js +1 -0
- package/addon/controllers/management/drivers/index.js +36 -2
- package/addon/controllers/management/fleets/index/details.js +1 -0
- package/addon/controllers/management/fleets/index.js +43 -1
- package/addon/controllers/management/fuel-reports/index.js +26 -2
- package/addon/controllers/management/fuel-transactions/index.js +45 -7
- package/addon/controllers/management/issues/index/details.js +1 -0
- package/addon/controllers/management/issues/index.js +26 -2
- package/addon/controllers/management/places/index.js +40 -1
- package/addon/controllers/management/trailers/index/details.js +1 -0
- package/addon/controllers/management/trailers/index.js +50 -2
- package/addon/controllers/management/vehicles/index/details.js +1 -0
- package/addon/controllers/management/vehicles/index.js +37 -2
- package/addon/controllers/management/vendors/index.js +30 -2
- package/addon/controllers/operations/orders/index/details.js +61 -5
- package/addon/controllers/operations/orders/index.js +66 -4
- package/addon/controllers/operations/service-rates/index.js +18 -1
- package/addon/controllers/settings/index.js +13 -0
- package/addon/controllers/settings/telematics.js +113 -0
- package/addon/extension.js +70 -6
- package/addon/routes/analytics/index.js +14 -1
- package/addon/routes/analytics/reports/index/details.js +1 -1
- package/addon/routes/analytics/reports/index/edit.js +1 -1
- package/addon/routes/analytics/reports/index/new.js +14 -1
- package/addon/routes/analytics/reports.js +14 -1
- package/addon/routes/connectivity/devices/index/new.js +14 -1
- package/addon/routes/connectivity/devices.js +14 -1
- package/addon/routes/connectivity/events.js +14 -1
- package/addon/routes/connectivity/fuel-providers/details/transactions.js +12 -0
- package/addon/routes/connectivity/fuel-providers/details.js +9 -0
- package/addon/routes/connectivity/fuel-providers/edit.js +9 -0
- package/addon/routes/connectivity/fuel-providers/new.js +14 -1
- package/addon/routes/connectivity/fuel-providers.js +14 -1
- package/addon/routes/connectivity/sensors/index/new.js +14 -1
- package/addon/routes/connectivity/sensors.js +14 -1
- package/addon/routes/connectivity/telematics/new.js +14 -1
- package/addon/routes/connectivity/telematics.js +14 -1
- package/addon/routes/connectivity/tracking.js +14 -1
- package/addon/routes/maintenance/equipment/index/details.js +2 -2
- package/addon/routes/maintenance/equipment/index/edit.js +2 -2
- package/addon/routes/maintenance/equipment/index/new.js +14 -1
- package/addon/routes/maintenance/equipment.js +14 -1
- package/addon/routes/maintenance/index.js +14 -1
- package/addon/routes/maintenance/inspection-forms/index/details.js +10 -1
- package/addon/routes/maintenance/inspection-forms/index/edit.js +10 -1
- package/addon/routes/maintenance/inspection-forms/index/new.js +14 -1
- package/addon/routes/maintenance/inspection-forms.js +14 -1
- package/addon/routes/maintenance/inspection-submissions/index/details.js +10 -1
- package/addon/routes/maintenance/inspection-submissions/index/edit.js +10 -1
- package/addon/routes/maintenance/inspection-submissions/index/new.js +14 -1
- package/addon/routes/maintenance/inspection-submissions.js +14 -1
- package/addon/routes/maintenance/maintenances/index/details.js +2 -2
- package/addon/routes/maintenance/maintenances/index/edit.js +2 -2
- package/addon/routes/maintenance/maintenances/index/new.js +14 -1
- package/addon/routes/maintenance/maintenances.js +14 -1
- package/addon/routes/maintenance/parts/index/details.js +2 -2
- package/addon/routes/maintenance/parts/index/edit.js +2 -2
- package/addon/routes/maintenance/parts/index/new.js +14 -1
- package/addon/routes/maintenance/parts.js +14 -1
- package/addon/routes/maintenance/schedules/index/details.js +2 -2
- package/addon/routes/maintenance/schedules/index/edit.js +2 -2
- package/addon/routes/maintenance/schedules/index/new.js +15 -1
- package/addon/routes/maintenance/schedules.js +15 -1
- package/addon/routes/maintenance/work-orders/index/details.js +2 -2
- package/addon/routes/maintenance/work-orders/index/edit.js +2 -2
- package/addon/routes/maintenance/work-orders/index/new.js +14 -1
- package/addon/routes/maintenance/work-orders.js +14 -1
- package/addon/routes/management/fuel-transactions/index/details.js +9 -0
- package/addon/routes/management/fuel-transactions.js +14 -1
- package/addon/routes/management/index.js +13 -0
- package/addon/routes/management/trailers.js +16 -0
- package/addon/routes/management/vendors/integrated/details.js +14 -1
- package/addon/routes/management/vendors/integrated/edit.js +14 -1
- package/addon/routes/management/vendors/integrated/new.js +14 -1
- package/addon/routes/management/vendors/integrated.js +14 -1
- package/addon/routes/operations/orders/index/details.js +1 -0
- package/addon/routes/operations/orders.js +40 -1
- package/addon/routes/operations/routes/index/details.js +14 -1
- package/addon/routes/operations/routes/index/new.js +13 -0
- package/addon/routes/operations/routes.js +14 -1
- package/addon/routes/operations/service-rates/index/new.js +11 -0
- package/addon/routes/operations/service-rates.js +14 -1
- package/addon/routes/settings/avatars.js +14 -1
- package/addon/routes/settings/custom-fields.js +14 -1
- package/addon/routes/settings/map.js +14 -1
- package/addon/routes/settings/notifications.js +11 -0
- package/addon/routes/settings/orchestrator.js +1 -1
- package/addon/routes/settings/payments/index.js +1 -1
- package/addon/routes/settings/routing.js +14 -1
- package/addon/routes/settings/scheduling.js +14 -1
- package/addon/routes/settings/telematics.js +21 -0
- package/addon/routes/virtual.js +11 -0
- package/addon/routes.js +1 -0
- package/addon/services/contact-actions.js +1 -0
- package/addon/services/customer-actions.js +2 -1
- package/addon/services/device-actions.js +1 -0
- package/addon/services/device-event-actions.js +1 -0
- package/addon/services/driver-actions.js +4 -13
- package/addon/services/equipment-actions.js +1 -0
- package/addon/services/fleet-actions.js +1 -0
- package/addon/services/fuel-report-actions.js +1 -0
- package/addon/services/inspection-form-actions.js +1 -0
- package/addon/services/inspection-submission-actions.js +1 -0
- package/addon/services/integrated-vendor-actions.js +1 -0
- package/addon/services/issue-actions.js +1 -0
- package/addon/services/maintenance-actions.js +1 -0
- package/addon/services/maintenance-schedule-actions.js +2 -1
- package/addon/services/order-actions.js +7 -0
- package/addon/services/order-presentation.js +129 -0
- package/addon/services/part-actions.js +1 -0
- package/addon/services/place-actions.js +1 -0
- package/addon/services/sensor-actions.js +1 -0
- package/addon/services/service-area-actions.js +1 -0
- package/addon/services/service-rate-actions.js +1 -0
- package/addon/services/telematic-actions.js +1 -0
- package/addon/services/trailer-actions.js +4 -14
- package/addon/services/vehicle-actions.js +4 -13
- package/addon/services/vendor-actions.js +1 -0
- package/addon/services/work-order-actions.js +1 -0
- package/addon/services/zone-actions.js +1 -0
- package/addon/templates/analytics/reports/index/details.hbs +1 -0
- package/addon/templates/analytics/reports/index.hbs +1 -0
- package/addon/templates/connectivity/devices/index/details.hbs +1 -0
- package/addon/templates/connectivity/devices/index.hbs +1 -0
- package/addon/templates/connectivity/events/index.hbs +1 -0
- package/addon/templates/connectivity/sensors/index/details.hbs +1 -0
- package/addon/templates/connectivity/sensors/index.hbs +1 -0
- package/addon/templates/maintenance/equipment/index/details.hbs +1 -0
- package/addon/templates/maintenance/equipment/index.hbs +2 -0
- package/addon/templates/maintenance/inspection-forms/index/details.hbs +1 -0
- package/addon/templates/maintenance/inspection-forms/index.hbs +1 -0
- package/addon/templates/maintenance/inspection-submissions/index/details.hbs +1 -0
- package/addon/templates/maintenance/inspection-submissions/index.hbs +1 -0
- package/addon/templates/maintenance/maintenances/index/details.hbs +1 -0
- package/addon/templates/maintenance/maintenances/index.hbs +1 -0
- package/addon/templates/maintenance/parts/index/details.hbs +1 -0
- package/addon/templates/maintenance/parts/index.hbs +2 -0
- package/addon/templates/maintenance/schedules/index/details.hbs +1 -0
- package/addon/templates/maintenance/schedules/index.hbs +2 -0
- package/addon/templates/maintenance/work-orders/index/details.hbs +1 -0
- package/addon/templates/maintenance/work-orders/index.hbs +1 -0
- package/addon/templates/management/contacts/customers/details.hbs +1 -0
- package/addon/templates/management/contacts/customers.hbs +1 -0
- package/addon/templates/management/contacts/index/details.hbs +1 -0
- package/addon/templates/management/contacts/index.hbs +1 -0
- package/addon/templates/management/contacts.hbs +1 -0
- package/addon/templates/management/drivers/index/details.hbs +1 -0
- package/addon/templates/management/drivers/index.hbs +2 -0
- package/addon/templates/management/fleets/index/details.hbs +1 -0
- package/addon/templates/management/fleets/index.hbs +1 -0
- package/addon/templates/management/fuel-reports/index/details.hbs +1 -0
- package/addon/templates/management/fuel-reports/index.hbs +1 -0
- package/addon/templates/management/fuel-transactions/index.hbs +1 -0
- package/addon/templates/management/issues/index/details.hbs +1 -0
- package/addon/templates/management/issues/index.hbs +1 -0
- package/addon/templates/management/places/index/details.hbs +1 -0
- package/addon/templates/management/places/index.hbs +1 -0
- package/addon/templates/management/trailers/index/details.hbs +1 -0
- package/addon/templates/management/trailers/index.hbs +2 -0
- package/addon/templates/management/vehicles/index/details.hbs +1 -0
- package/addon/templates/management/vehicles/index.hbs +2 -0
- package/addon/templates/management/vendors/index/details.hbs +1 -0
- package/addon/templates/management/vendors/index.hbs +2 -0
- package/addon/templates/management/vendors/integrated.hbs +1 -0
- package/addon/templates/operations/orders/index/details.hbs +1 -0
- package/addon/templates/operations/orders/index.hbs +1 -0
- package/addon/templates/operations/service-rates/index/details.hbs +1 -0
- package/addon/templates/operations/service-rates/index.hbs +1 -0
- package/addon/templates/settings/telematics.hbs +70 -0
- package/addon/utils/normalize-order-config-flow.js +6 -1
- package/app/components/admin/telematics-settings.js +1 -0
- package/app/components/map/marker-card/driver.js +1 -0
- package/app/components/map/marker-card/vehicle.js +1 -0
- package/app/controllers/settings/telematics.js +1 -0
- package/app/routes/settings/telematics.js +1 -0
- package/app/services/order-presentation.js +1 -0
- package/app/templates/settings/telematics.js +1 -0
- package/composer.json +2 -2
- package/docs/AFAQY.md +1 -1
- package/docs/TELEMATICS_QUEUES.md +1 -1
- package/docs/TELEMETRY_ARCHITECTURE.md +72 -1
- package/extension.json +1 -1
- package/package.json +3 -3
- package/server/config/telemetry.php +12 -0
- package/server/migrations/2026_09_23_000001_add_retention_index_to_device_events.php +40 -0
- package/server/migrations/2026_09_23_000002_add_retention_index_to_positions.php +40 -0
- package/server/migrations/2026_09_23_000003_add_retention_index_to_telematic_sync_runs.php +40 -0
- package/server/src/Auth/Schemas/FleetOps.php +104 -5
- package/server/src/Console/Commands/DrainTelematicInbox.php +3 -13
- package/server/src/Console/Commands/ProcessOperationalAlerts.php +3 -3
- package/server/src/Console/Commands/PruneTelematicsData.php +318 -0
- package/server/src/Http/Controllers/Api/v1/OrchestrationController.php +9 -0
- package/server/src/Http/Controllers/FleetOpsController.php +21 -0
- package/server/src/Http/Controllers/Internal/v1/AnalyticsController.php +11 -0
- package/server/src/Http/Controllers/Internal/v1/ContactController.php +11 -0
- package/server/src/Http/Controllers/Internal/v1/CustomerController.php +14 -0
- package/server/src/Http/Controllers/Internal/v1/DeviceController.php +13 -0
- package/server/src/Http/Controllers/Internal/v1/DeviceEventController.php +11 -0
- package/server/src/Http/Controllers/Internal/v1/DriverController.php +22 -0
- package/server/src/Http/Controllers/Internal/v1/FuelProviderConnectionController.php +13 -0
- package/server/src/Http/Controllers/Internal/v1/FuelProviderTransactionController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/FuelReportController.php +9 -3
- package/server/src/Http/Controllers/Internal/v1/InspectionFormController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/LiveController.php +16 -0
- package/server/src/Http/Controllers/Internal/v1/MaintenanceController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/MaintenanceScheduleController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/ManifestController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/MetricsController.php +11 -0
- package/server/src/Http/Controllers/Internal/v1/NavigatorController.php +42 -1
- package/server/src/Http/Controllers/Internal/v1/OrchestrationController.php +12 -0
- package/server/src/Http/Controllers/Internal/v1/OrderController.php +56 -4
- package/server/src/Http/Controllers/Internal/v1/PaymentController.php +13 -0
- package/server/src/Http/Controllers/Internal/v1/RadarController.php +19 -0
- package/server/src/Http/Controllers/Internal/v1/ServiceAreaController.php +9 -3
- package/server/src/Http/Controllers/Internal/v1/SettingController.php +465 -14
- package/server/src/Http/Controllers/Internal/v1/TelematicController.php +21 -0
- package/server/src/Http/Controllers/Internal/v1/TrailerController.php +21 -0
- package/server/src/Http/Controllers/Internal/v1/VehicleController.php +21 -0
- package/server/src/Http/Controllers/Internal/v1/VendorController.php +17 -0
- package/server/src/Http/Controllers/Internal/v1/WorkOrderController.php +11 -0
- package/server/src/Jobs/DispatchTelematicsRetentionJobs.php +70 -0
- package/server/src/Jobs/PruneTelematicsDataJob.php +74 -0
- package/server/src/Listeners/NotifyDriverOnShiftChange.php +3 -3
- package/server/src/Mail/CustomerCredentialsMail.php +1 -1
- package/server/src/Models/Order.php +35 -3
- package/server/src/Models/OrderConfig.php +129 -0
- package/server/src/Models/TrackingNumber.php +8 -4
- package/server/src/Orchestration/Engines/VroomOrchestrationEngine.php +9 -1
- package/server/src/Providers/FleetOpsServiceProvider.php +3 -0
- package/server/src/Support/Analytics/LiveFleet.php +18 -2
- package/server/src/Support/Authorization.php +103 -0
- package/server/src/Support/Database/TableIndexes.php +66 -0
- package/server/src/Support/OrderTracker.php +2 -2
- package/server/src/Support/Reporting/FleetOpsReportSchema.php +476 -116
- package/server/src/Support/Telematics/Retention/RetentionPolicy.php +300 -0
- package/server/src/Support/Telematics/Retention/TelemetryActivity.php +40 -0
- package/server/src/Support/Telematics/TelematicService.php +12 -2
- package/server/src/Support/Telematics/Telemetry/Ingestor.php +4 -2
- package/server/src/Tracking/TrackingIntelligenceService.php +1 -1
- package/server/src/Tracking/TrackingOptions.php +2 -2
- package/server/src/Traits/AuthorizesMethods.php +37 -0
- package/server/src/routes.php +9 -1
- package/server/tests/AnalyticsRoutesTest.php +29 -2
- package/server/tests/Feature/Http/AfaqyRealtimeIngestionTest.php +16 -1
- package/server/tests/Feature/Http/Api/TelematicsRetentionIndexMigrationTest.php +115 -0
- package/server/tests/Feature/Http/Internal/OrderControllerActivityFlowsTest.php +72 -0
- package/server/tests/Feature/Http/Internal/OrderControllerCreateRecordTest.php +26 -0
- package/server/tests/Feature/Http/Internal/SettingControllerHelpersTest.php +71 -0
- package/server/tests/Feature/Http/Internal/TelematicsStorageDeadlinesTest.php +119 -0
- package/server/tests/InternalImportExportControllerContractsTest.php +5 -8
- package/server/tests/NavigatorControllerContractsTest.php +36 -4
- package/server/tests/NotificationAndMailContractsTest.php +31 -0
- package/server/tests/ObserverContractsTest.php +1 -1
- package/server/tests/OrchestratorConsumableApiTest.php +42 -0
- package/server/tests/OrderConfigLifecycleTest.php +120 -0
- package/server/tests/ProviderContractsTest.php +10 -0
- package/server/tests/ReportSchemaContractsTest.php +120 -6
- package/server/tests/SettingControllerContractsTest.php +429 -18
- package/server/tests/SmallControllerContractsTest.php +8 -5
- package/server/tests/Support/PruneTelematicsDataProbe.php +55 -0
- package/server/tests/Unit/Console/Commands/ProcessOperationalAlertsCommandTest.php +2 -2
- package/server/tests/Unit/Console/PruneTelematicsDataCommandTest.php +353 -0
- package/server/tests/Unit/Events/OrderDispatchFailedTest.php +2 -1
- package/server/tests/Unit/Jobs/DispatchTelematicsRetentionJobsTest.php +114 -0
- package/server/tests/Unit/Jobs/PruneTelematicsDataJobTest.php +60 -0
- package/server/tests/Unit/Orchestration/VroomEngineTransportAndSettingsTest.php +20 -0
- package/server/tests/Unit/Support/Analytics/LiveFleetTest.php +6 -0
- package/server/tests/Unit/Support/AuthorizationTest.php +142 -0
- package/server/tests/Unit/Support/MaintainableAndOperationalAlertsTest.php +12 -1
- package/server/tests/Unit/Support/MoreQuerySeamsTest.php +11 -2
- package/server/tests/Unit/Support/Telematics/Retention/RetentionPolicyTest.php +190 -0
- package/server/tests/Unit/Support/Telematics/Retention/TelemetryActivityTest.php +68 -0
- package/server/tests/Unit/Tracking/TrackingOptionsCompanySettingsTest.php +109 -0
- package/translations/en-us.yaml +108 -0
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
|
|
29
29
|
{{#if this.load.isIdle}}
|
|
30
30
|
{{! Drivers — fleetops' rotating tracking-marker matches the operational
|
|
31
|
-
live-map's look and animates on heading changes.
|
|
31
|
+
live-map's look and animates on heading changes. The popup and tooltip
|
|
32
|
+
are the live map's own cards, fed from each marker's index-resource card. }}
|
|
32
33
|
{{#each this.drivers as |driver|}}
|
|
33
34
|
<layers.tracking-marker
|
|
34
35
|
@id={{driver.uuid}}
|
|
@@ -39,28 +40,11 @@
|
|
|
39
40
|
@draggable={{false}}
|
|
40
41
|
as |marker|
|
|
41
42
|
>
|
|
42
|
-
<marker.popup @maxWidth="
|
|
43
|
-
<
|
|
44
|
-
<div class="w-9 h-9 flex-shrink-0">
|
|
45
|
-
<img src={{or driver.avatar_url driver.vehicle_avatar}} alt={{driver.name}} class="rounded-md w-9 h-9 object-cover shadow-sm" />
|
|
46
|
-
</div>
|
|
47
|
-
<div class="flex-1 min-w-0">
|
|
48
|
-
<div class="text-xs font-semibold truncate">{{or driver.name "Driver"}}</div>
|
|
49
|
-
<div class="text-[11px]">
|
|
50
|
-
{{#if driver.current_order_uuid}}
|
|
51
|
-
<span class="text-blue-500"><FaIcon @icon="bolt" class="mr-1" />On order</span>
|
|
52
|
-
{{else if driver.online}}
|
|
53
|
-
<span class="text-green-500"><FaIcon @icon="circle" @size="2xs" class="mr-1" />Online</span>
|
|
54
|
-
{{else}}
|
|
55
|
-
<span class="text-gray-400"><FaIcon @icon="circle" @size="2xs" class="mr-1" />Offline</span>
|
|
56
|
-
{{/if}}
|
|
57
|
-
</div>
|
|
58
|
-
<div class="text-[10px] text-gray-400 mt-0.5 truncate">{{driver.lat}}, {{driver.lng}}</div>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
43
|
+
<marker.popup @maxWidth="500" @minWidth="225">
|
|
44
|
+
<Map::MarkerCard::Driver @driver={{or driver.card driver}} />
|
|
61
45
|
</marker.popup>
|
|
62
46
|
<marker.tooltip @permanent={{false}} @sticky={{true}} @direction="top">
|
|
63
|
-
<
|
|
47
|
+
<Map::MarkerCard::Driver @driver={{or driver.card driver}} @variant="tooltip" />
|
|
64
48
|
</marker.tooltip>
|
|
65
49
|
</layers.tracking-marker>
|
|
66
50
|
{{/each}}
|
|
@@ -77,27 +61,11 @@
|
|
|
77
61
|
@draggable={{false}}
|
|
78
62
|
as |marker|
|
|
79
63
|
>
|
|
80
|
-
<marker.popup @maxWidth="
|
|
81
|
-
<
|
|
82
|
-
<div class="w-9 h-9 flex-shrink-0">
|
|
83
|
-
<img src={{or vehicle.photo_url vehicle.avatar_url}} alt={{vehicle.name}} class="rounded-md w-9 h-9 object-cover shadow-sm" />
|
|
84
|
-
</div>
|
|
85
|
-
<div class="flex-1 min-w-0">
|
|
86
|
-
<div class="text-xs font-semibold truncate">{{or vehicle.name "Vehicle"}}</div>
|
|
87
|
-
{{#if vehicle.plate_number}}
|
|
88
|
-
<div class="text-[10px] text-gray-500 truncate">{{vehicle.plate_number}}</div>
|
|
89
|
-
{{/if}}
|
|
90
|
-
{{#if vehicle.driver_name}}
|
|
91
|
-
<div class="text-[11px] text-gray-600 dark:text-gray-300 truncate">
|
|
92
|
-
<FaIcon @icon="id-card" class="mr-1 text-gray-400" />{{vehicle.driver_name}}
|
|
93
|
-
</div>
|
|
94
|
-
{{/if}}
|
|
95
|
-
<div class="text-[10px] text-gray-400 mt-0.5 truncate">{{vehicle.lat}}, {{vehicle.lng}}</div>
|
|
96
|
-
</div>
|
|
97
|
-
</div>
|
|
64
|
+
<marker.popup @maxWidth="500" @minWidth="225">
|
|
65
|
+
<Map::MarkerCard::Vehicle @vehicle={{or vehicle.card vehicle}} />
|
|
98
66
|
</marker.popup>
|
|
99
67
|
<marker.tooltip @permanent={{false}} @sticky={{true}} @direction="top">
|
|
100
|
-
<
|
|
68
|
+
<Map::MarkerCard::Vehicle @vehicle={{or vehicle.card vehicle}} @variant="tooltip" />
|
|
101
69
|
</marker.tooltip>
|
|
102
70
|
</layers.tracking-marker>
|
|
103
71
|
{{/each}}
|
|
@@ -8,7 +8,7 @@ export default class AnalyticsReportsIndexController extends Controller {
|
|
|
8
8
|
@service intl;
|
|
9
9
|
|
|
10
10
|
/** query params */
|
|
11
|
-
@tracked queryParams = ['page', 'limit', 'sort', 'query', 'public_id', 'name', 'created_at'];
|
|
11
|
+
@tracked queryParams = this.reportActions.queryParamsFor(['page', 'limit', 'sort', 'query', 'public_id', 'name', 'created_at']);
|
|
12
12
|
@tracked page = 1;
|
|
13
13
|
@tracked limit;
|
|
14
14
|
@tracked sort = '-created_at';
|
|
@@ -20,15 +20,18 @@ export default class AnalyticsReportsIndexController extends Controller {
|
|
|
20
20
|
get actionButtons() {
|
|
21
21
|
return [
|
|
22
22
|
{
|
|
23
|
+
id: 'refresh',
|
|
23
24
|
icon: 'refresh',
|
|
24
25
|
onClick: this.reportActions.refresh,
|
|
25
26
|
helpText: this.intl.t('common.refresh'),
|
|
26
27
|
},
|
|
27
28
|
{
|
|
29
|
+
id: 'create',
|
|
28
30
|
text: this.intl.t('common.new'),
|
|
29
31
|
type: 'primary',
|
|
30
32
|
icon: 'plus',
|
|
31
33
|
onClick: this.reportActions.transition.create,
|
|
34
|
+
permission: 'iam create report',
|
|
32
35
|
},
|
|
33
36
|
];
|
|
34
37
|
}
|
|
@@ -36,9 +39,11 @@ export default class AnalyticsReportsIndexController extends Controller {
|
|
|
36
39
|
get bulkActions() {
|
|
37
40
|
return [
|
|
38
41
|
{
|
|
42
|
+
id: 'bulk-delete',
|
|
39
43
|
label: 'Delete selected...',
|
|
40
44
|
class: 'text-red-500',
|
|
41
45
|
fn: this.reportActions.bulkDelete,
|
|
46
|
+
permission: 'iam delete report',
|
|
42
47
|
},
|
|
43
48
|
];
|
|
44
49
|
}
|
|
@@ -46,6 +51,7 @@ export default class AnalyticsReportsIndexController extends Controller {
|
|
|
46
51
|
get columns() {
|
|
47
52
|
return [
|
|
48
53
|
{
|
|
54
|
+
id: 'title',
|
|
49
55
|
sticky: true,
|
|
50
56
|
label: 'Title',
|
|
51
57
|
valuePath: 'title',
|
|
@@ -57,6 +63,7 @@ export default class AnalyticsReportsIndexController extends Controller {
|
|
|
57
63
|
filterComponent: 'filter/string',
|
|
58
64
|
},
|
|
59
65
|
{
|
|
66
|
+
id: 'public-id',
|
|
60
67
|
label: 'ID',
|
|
61
68
|
valuePath: 'public_id',
|
|
62
69
|
cellComponent: 'click-to-copy',
|
|
@@ -67,6 +74,7 @@ export default class AnalyticsReportsIndexController extends Controller {
|
|
|
67
74
|
filterComponent: 'filter/string',
|
|
68
75
|
},
|
|
69
76
|
{
|
|
77
|
+
id: 'row-actions',
|
|
70
78
|
label: '',
|
|
71
79
|
cellComponent: 'table/cell/dropdown',
|
|
72
80
|
ddButtonText: false,
|
|
@@ -79,19 +87,25 @@ export default class AnalyticsReportsIndexController extends Controller {
|
|
|
79
87
|
width: 60,
|
|
80
88
|
actions: [
|
|
81
89
|
{
|
|
90
|
+
id: 'view',
|
|
82
91
|
label: 'View report...',
|
|
83
92
|
fn: this.reportActions.transition.view,
|
|
93
|
+
permission: 'iam view report',
|
|
84
94
|
},
|
|
85
95
|
{
|
|
96
|
+
id: 'edit',
|
|
86
97
|
label: 'Edit report...',
|
|
87
98
|
fn: this.reportActions.transition.edit,
|
|
99
|
+
permission: 'iam update report',
|
|
88
100
|
},
|
|
89
101
|
{
|
|
90
102
|
separator: true,
|
|
91
103
|
},
|
|
92
104
|
{
|
|
105
|
+
id: 'delete',
|
|
93
106
|
label: 'Delete report...',
|
|
94
107
|
fn: this.reportActions.delete,
|
|
108
|
+
permission: 'iam delete report',
|
|
95
109
|
},
|
|
96
110
|
],
|
|
97
111
|
sortable: false,
|
|
@@ -17,7 +17,7 @@ export default class ConnectivityDevicesIndexController extends Controller {
|
|
|
17
17
|
@service trailerActions;
|
|
18
18
|
|
|
19
19
|
/** query params */
|
|
20
|
-
@tracked queryParams = [
|
|
20
|
+
@tracked queryParams = this.deviceActions.queryParamsFor([
|
|
21
21
|
'name',
|
|
22
22
|
'status',
|
|
23
23
|
'attachment_state',
|
|
@@ -36,7 +36,7 @@ export default class ConnectivityDevicesIndexController extends Controller {
|
|
|
36
36
|
'public_id',
|
|
37
37
|
'created_at',
|
|
38
38
|
'updated_at',
|
|
39
|
-
];
|
|
39
|
+
]);
|
|
40
40
|
@tracked page = 1;
|
|
41
41
|
@tracked limit;
|
|
42
42
|
@tracked sort = '-created_at';
|
|
@@ -56,37 +56,46 @@ export default class ConnectivityDevicesIndexController extends Controller {
|
|
|
56
56
|
/** action buttons */
|
|
57
57
|
@tracked actionButtons = [
|
|
58
58
|
{
|
|
59
|
+
id: 'refresh',
|
|
59
60
|
icon: 'refresh',
|
|
60
61
|
onClick: this.deviceActions.refresh,
|
|
61
62
|
helpText: this.intl.t('common.refresh'),
|
|
62
63
|
},
|
|
63
64
|
{
|
|
65
|
+
id: 'create',
|
|
64
66
|
text: this.intl.t('common.new'),
|
|
65
67
|
type: 'primary',
|
|
66
68
|
icon: 'plus',
|
|
67
69
|
onClick: this.deviceActions.transition.create,
|
|
70
|
+
permission: 'fleet-ops create device',
|
|
68
71
|
},
|
|
69
72
|
{
|
|
73
|
+
id: 'import',
|
|
70
74
|
text: this.intl.t('common.import'),
|
|
71
75
|
type: 'magic',
|
|
72
76
|
icon: 'upload',
|
|
73
77
|
onClick: this.deviceActions.import,
|
|
78
|
+
permission: 'fleet-ops import device',
|
|
74
79
|
},
|
|
75
80
|
{
|
|
81
|
+
id: 'export',
|
|
76
82
|
text: this.intl.t('common.export'),
|
|
77
83
|
icon: 'long-arrow-up',
|
|
78
84
|
iconClass: 'rotate-icon-45',
|
|
79
85
|
wrapperClass: 'hidden md:flex',
|
|
80
86
|
onClick: this.deviceActions.export,
|
|
87
|
+
permission: 'fleet-ops export device',
|
|
81
88
|
},
|
|
82
89
|
];
|
|
83
90
|
|
|
84
91
|
/** bulk action buttons */
|
|
85
92
|
@tracked bulkActions = [
|
|
86
93
|
{
|
|
94
|
+
id: 'bulk-delete',
|
|
87
95
|
label: 'Delete selected...',
|
|
88
96
|
class: 'text-red-500',
|
|
89
97
|
fn: this.deviceActions.bulkDelete,
|
|
98
|
+
permission: 'fleet-ops delete device',
|
|
90
99
|
},
|
|
91
100
|
];
|
|
92
101
|
|
|
@@ -107,6 +116,7 @@ export default class ConnectivityDevicesIndexController extends Controller {
|
|
|
107
116
|
separator: true,
|
|
108
117
|
},
|
|
109
118
|
{
|
|
119
|
+
id: 'delete',
|
|
110
120
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.device') }),
|
|
111
121
|
fn: this.deviceActions.delete,
|
|
112
122
|
permission: 'fleet-ops delete device',
|
|
@@ -78,7 +78,20 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
78
78
|
@service telematicActions;
|
|
79
79
|
|
|
80
80
|
/** query params */
|
|
81
|
-
@tracked queryParams = [
|
|
81
|
+
@tracked queryParams = this.deviceEventActions.queryParamsFor([
|
|
82
|
+
'page',
|
|
83
|
+
'limit',
|
|
84
|
+
'sort',
|
|
85
|
+
'query',
|
|
86
|
+
'telematic',
|
|
87
|
+
'device',
|
|
88
|
+
'event_type',
|
|
89
|
+
'severity',
|
|
90
|
+
'processed',
|
|
91
|
+
'occurred_at',
|
|
92
|
+
'created_at',
|
|
93
|
+
'updated_at',
|
|
94
|
+
]);
|
|
82
95
|
@tracked page = 1;
|
|
83
96
|
@tracked limit;
|
|
84
97
|
@tracked sort = '-created_at';
|
|
@@ -95,6 +108,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
95
108
|
/** action buttons */
|
|
96
109
|
@tracked actionButtons = [
|
|
97
110
|
{
|
|
111
|
+
id: 'refresh',
|
|
98
112
|
icon: 'refresh',
|
|
99
113
|
onClick: this.deviceEventActions.refresh,
|
|
100
114
|
helpText: this.intl.t('common.refresh'),
|
|
@@ -107,6 +121,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
107
121
|
/** columns */
|
|
108
122
|
@tracked columns = [
|
|
109
123
|
{
|
|
124
|
+
id: 'event-type',
|
|
110
125
|
sticky: true,
|
|
111
126
|
label: 'Event',
|
|
112
127
|
valuePath: 'event_type',
|
|
@@ -121,6 +136,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
121
136
|
filterComponent: 'filter/string',
|
|
122
137
|
},
|
|
123
138
|
{
|
|
139
|
+
id: 'device-display-name',
|
|
124
140
|
label: 'Device',
|
|
125
141
|
valuePath: 'device.displayName',
|
|
126
142
|
cellComponent: 'cell/device-identity',
|
|
@@ -137,6 +153,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
137
153
|
modelNamePath: 'displayName',
|
|
138
154
|
},
|
|
139
155
|
{
|
|
156
|
+
id: 'provider',
|
|
140
157
|
label: 'Provider',
|
|
141
158
|
valuePath: 'provider',
|
|
142
159
|
cellComponent: 'cell/telematic-identity',
|
|
@@ -152,6 +169,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
152
169
|
model: 'telematic',
|
|
153
170
|
},
|
|
154
171
|
{
|
|
172
|
+
id: 'severity',
|
|
155
173
|
label: 'Severity',
|
|
156
174
|
valuePath: 'severity',
|
|
157
175
|
cellComponent: 'table/cell/status',
|
|
@@ -165,12 +183,14 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
165
183
|
filterOptionValue: 'value',
|
|
166
184
|
},
|
|
167
185
|
{
|
|
186
|
+
id: 'message',
|
|
168
187
|
label: 'Message',
|
|
169
188
|
valuePath: 'message',
|
|
170
189
|
resizable: true,
|
|
171
190
|
sortable: false,
|
|
172
191
|
},
|
|
173
192
|
{
|
|
193
|
+
id: 'code',
|
|
174
194
|
label: 'Code',
|
|
175
195
|
valuePath: 'code',
|
|
176
196
|
resizable: true,
|
|
@@ -180,6 +200,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
180
200
|
filterComponent: 'filter/string',
|
|
181
201
|
},
|
|
182
202
|
{
|
|
203
|
+
id: 'ident',
|
|
183
204
|
label: 'IDENT',
|
|
184
205
|
valuePath: 'ident',
|
|
185
206
|
hidden: true,
|
|
@@ -187,6 +208,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
187
208
|
sortable: true,
|
|
188
209
|
},
|
|
189
210
|
{
|
|
211
|
+
id: 'protocol',
|
|
190
212
|
label: 'Protocol',
|
|
191
213
|
valuePath: 'protocol',
|
|
192
214
|
hidden: true,
|
|
@@ -194,6 +216,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
194
216
|
sortable: true,
|
|
195
217
|
},
|
|
196
218
|
{
|
|
219
|
+
id: 'state',
|
|
197
220
|
label: 'State',
|
|
198
221
|
valuePath: 'state',
|
|
199
222
|
hidden: true,
|
|
@@ -201,6 +224,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
201
224
|
sortable: true,
|
|
202
225
|
},
|
|
203
226
|
{
|
|
227
|
+
id: 'processed-at',
|
|
204
228
|
label: 'Processed',
|
|
205
229
|
valuePath: 'processedAt',
|
|
206
230
|
sortParam: 'processed_at',
|
|
@@ -214,6 +238,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
214
238
|
filterOptionValue: 'value',
|
|
215
239
|
},
|
|
216
240
|
{
|
|
241
|
+
id: 'occurred-at',
|
|
217
242
|
label: 'Occurred',
|
|
218
243
|
valuePath: 'occurredAt',
|
|
219
244
|
sortParam: 'occurred_at',
|
|
@@ -224,6 +249,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
224
249
|
filterComponent: 'filter/date',
|
|
225
250
|
},
|
|
226
251
|
{
|
|
252
|
+
id: 'created-at',
|
|
227
253
|
label: this.intl.t('column.created-at'),
|
|
228
254
|
valuePath: 'createdAt',
|
|
229
255
|
sortParam: 'created_at',
|
|
@@ -234,6 +260,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
234
260
|
filterComponent: 'filter/date',
|
|
235
261
|
},
|
|
236
262
|
{
|
|
263
|
+
id: 'updated-at',
|
|
237
264
|
label: this.intl.t('column.updated-at'),
|
|
238
265
|
valuePath: 'updatedAt',
|
|
239
266
|
sortParam: 'updated_at',
|
|
@@ -245,6 +272,7 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
245
272
|
hidden: true,
|
|
246
273
|
},
|
|
247
274
|
{
|
|
275
|
+
id: 'row-actions',
|
|
248
276
|
label: '',
|
|
249
277
|
cellComponent: 'table/cell/dropdown',
|
|
250
278
|
ddButtonText: false,
|
|
@@ -257,11 +285,13 @@ export default class ConnectivityEventsIndexController extends Controller {
|
|
|
257
285
|
width: 60,
|
|
258
286
|
actions: [
|
|
259
287
|
{
|
|
288
|
+
id: 'view',
|
|
260
289
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.device-event') }),
|
|
261
290
|
fn: this.deviceEventActions.transition.view,
|
|
262
291
|
permission: 'fleet-ops view device-event',
|
|
263
292
|
},
|
|
264
293
|
{
|
|
294
|
+
id: 'mark-processed',
|
|
265
295
|
label: 'Mark processed',
|
|
266
296
|
fn: this.markProcessed,
|
|
267
297
|
permission: 'fleet-ops update device-event',
|
|
@@ -40,6 +40,7 @@ export default class ConnectivityFuelProvidersIndexController extends Controller
|
|
|
40
40
|
text: 'Connect Integration',
|
|
41
41
|
type: 'primary',
|
|
42
42
|
onClick: () => this.fuelIntegrationActions.transition.create(),
|
|
43
|
+
permission: 'fleet-ops create fuel-provider-connection',
|
|
43
44
|
},
|
|
44
45
|
];
|
|
45
46
|
}
|
|
@@ -51,6 +52,7 @@ export default class ConnectivityFuelProvidersIndexController extends Controller
|
|
|
51
52
|
{
|
|
52
53
|
label: `Sync ${selected.length} selected`,
|
|
53
54
|
fn: () => selected.forEach((connection) => this.syncConnection(connection)),
|
|
55
|
+
permission: 'fleet-ops sync fuel-provider-connection',
|
|
54
56
|
},
|
|
55
57
|
];
|
|
56
58
|
}
|
|
@@ -125,11 +127,11 @@ export default class ConnectivityFuelProvidersIndexController extends Controller
|
|
|
125
127
|
sticky: 'right',
|
|
126
128
|
width: 60,
|
|
127
129
|
actions: [
|
|
128
|
-
{ label: 'Open Integration', fn: this.openConnection },
|
|
129
|
-
{ label: 'Edit Settings', fn: this.editConnection },
|
|
130
|
+
{ label: 'Open Integration', fn: this.openConnection, permission: 'fleet-ops view fuel-provider-connection' },
|
|
131
|
+
{ label: 'Edit Settings', fn: this.editConnection, permission: 'fleet-ops update fuel-provider-connection' },
|
|
130
132
|
{ separator: true },
|
|
131
|
-
{ label: 'Test Connection', fn: this.testConnection },
|
|
132
|
-
{ label: 'Sync Transactions', fn: this.syncConnection },
|
|
133
|
+
{ label: 'Test Connection', fn: this.testConnection, permission: 'fleet-ops update fuel-provider-connection' },
|
|
134
|
+
{ label: 'Sync Transactions', fn: this.syncConnection, permission: 'fleet-ops sync fuel-provider-connection' },
|
|
133
135
|
],
|
|
134
136
|
sortable: false,
|
|
135
137
|
filterable: false,
|
|
@@ -7,7 +7,7 @@ export default class ConnectivitySensorsIndexDetailsController extends Controlle
|
|
|
7
7
|
@service hostRouter;
|
|
8
8
|
|
|
9
9
|
get tabs() {
|
|
10
|
-
const registeredTabs = this.menuService.getMenuItems('fleet-ops:component:
|
|
10
|
+
const registeredTabs = this.menuService.getMenuItems('fleet-ops:component:sensor:details');
|
|
11
11
|
return [
|
|
12
12
|
{
|
|
13
13
|
route: 'connectivity.sensors.index.details.index',
|
|
@@ -65,7 +65,21 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
65
65
|
@service store;
|
|
66
66
|
|
|
67
67
|
/** query params */
|
|
68
|
-
@tracked queryParams = [
|
|
68
|
+
@tracked queryParams = this.sensorActions.queryParamsFor([
|
|
69
|
+
'page',
|
|
70
|
+
'limit',
|
|
71
|
+
'sort',
|
|
72
|
+
'query',
|
|
73
|
+
'telematic',
|
|
74
|
+
'device',
|
|
75
|
+
'type',
|
|
76
|
+
'status',
|
|
77
|
+
'serial_number',
|
|
78
|
+
'imei',
|
|
79
|
+
'last_reading_at',
|
|
80
|
+
'created_at',
|
|
81
|
+
'updated_at',
|
|
82
|
+
]);
|
|
69
83
|
@tracked page = 1;
|
|
70
84
|
@tracked limit;
|
|
71
85
|
@tracked sort = '-created_at';
|
|
@@ -83,43 +97,53 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
83
97
|
/** action buttons */
|
|
84
98
|
@tracked actionButtons = [
|
|
85
99
|
{
|
|
100
|
+
id: 'refresh',
|
|
86
101
|
icon: 'refresh',
|
|
87
102
|
onClick: this.sensorActions.refresh,
|
|
88
103
|
helpText: this.intl.t('common.refresh'),
|
|
89
104
|
},
|
|
90
105
|
{
|
|
106
|
+
id: 'create',
|
|
91
107
|
text: this.intl.t('common.new'),
|
|
92
108
|
type: 'primary',
|
|
93
109
|
icon: 'plus',
|
|
94
110
|
onClick: this.sensorActions.transition.create,
|
|
111
|
+
permission: 'fleet-ops create sensor',
|
|
95
112
|
},
|
|
96
113
|
{
|
|
114
|
+
id: 'import',
|
|
97
115
|
text: this.intl.t('common.import'),
|
|
98
116
|
type: 'magic',
|
|
99
117
|
icon: 'upload',
|
|
100
118
|
onClick: this.sensorActions.import,
|
|
119
|
+
permission: 'fleet-ops import sensor',
|
|
101
120
|
},
|
|
102
121
|
{
|
|
122
|
+
id: 'export',
|
|
103
123
|
text: this.intl.t('common.export'),
|
|
104
124
|
icon: 'long-arrow-up',
|
|
105
125
|
iconClass: 'rotate-icon-45',
|
|
106
126
|
wrapperClass: 'hidden md:flex',
|
|
107
127
|
onClick: this.sensorActions.export,
|
|
128
|
+
permission: 'fleet-ops export sensor',
|
|
108
129
|
},
|
|
109
130
|
];
|
|
110
131
|
|
|
111
132
|
/** bulk action buttons */
|
|
112
133
|
@tracked bulkActions = [
|
|
113
134
|
{
|
|
135
|
+
id: 'bulk-delete',
|
|
114
136
|
label: 'Delete selected...',
|
|
115
137
|
class: 'text-red-500',
|
|
116
138
|
fn: this.sensorActions.bulkDelete,
|
|
139
|
+
permission: 'fleet-ops delete sensor',
|
|
117
140
|
},
|
|
118
141
|
];
|
|
119
142
|
|
|
120
143
|
/** columns */
|
|
121
144
|
@tracked columns = [
|
|
122
145
|
{
|
|
146
|
+
id: 'display-name',
|
|
123
147
|
sticky: true,
|
|
124
148
|
label: this.intl.t('column.name'),
|
|
125
149
|
valuePath: 'displayName',
|
|
@@ -134,6 +158,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
134
158
|
filterComponent: 'filter/string',
|
|
135
159
|
},
|
|
136
160
|
{
|
|
161
|
+
id: 'telematic-provider',
|
|
137
162
|
label: 'Telematic',
|
|
138
163
|
valuePath: 'telematic.provider',
|
|
139
164
|
cellComponent: 'cell/telematic-identity',
|
|
@@ -149,6 +174,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
149
174
|
model: 'telematic',
|
|
150
175
|
},
|
|
151
176
|
{
|
|
177
|
+
id: 'device-display-name',
|
|
152
178
|
label: 'Device',
|
|
153
179
|
valuePath: 'device.displayName',
|
|
154
180
|
cellComponent: 'cell/device-identity',
|
|
@@ -166,6 +192,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
166
192
|
query: this.telematic ? { telematic_uuid: this.telematic } : undefined,
|
|
167
193
|
},
|
|
168
194
|
{
|
|
195
|
+
id: 'type',
|
|
169
196
|
label: 'Type',
|
|
170
197
|
valuePath: 'type',
|
|
171
198
|
cellComponent: 'table/cell/base',
|
|
@@ -180,18 +207,21 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
180
207
|
filterOptionValue: 'value',
|
|
181
208
|
},
|
|
182
209
|
{
|
|
210
|
+
id: 'last-value',
|
|
183
211
|
label: 'Last Value',
|
|
184
212
|
valuePath: 'last_value',
|
|
185
213
|
resizable: true,
|
|
186
214
|
sortable: true,
|
|
187
215
|
},
|
|
188
216
|
{
|
|
217
|
+
id: 'unit',
|
|
189
218
|
label: 'Unit',
|
|
190
219
|
valuePath: 'unit',
|
|
191
220
|
resizable: true,
|
|
192
221
|
sortable: true,
|
|
193
222
|
},
|
|
194
223
|
{
|
|
224
|
+
id: 'status',
|
|
195
225
|
label: this.intl.t('column.status'),
|
|
196
226
|
valuePath: 'status',
|
|
197
227
|
cellComponent: 'table/cell/status',
|
|
@@ -204,6 +234,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
204
234
|
filterOptionValue: 'value',
|
|
205
235
|
},
|
|
206
236
|
{
|
|
237
|
+
id: 'threshold-status',
|
|
207
238
|
label: 'Threshold',
|
|
208
239
|
valuePath: 'threshold_status',
|
|
209
240
|
cellComponent: 'table/cell/status',
|
|
@@ -211,6 +242,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
211
242
|
sortable: true,
|
|
212
243
|
},
|
|
213
244
|
{
|
|
245
|
+
id: 'serial-number',
|
|
214
246
|
label: 'Serial Number',
|
|
215
247
|
valuePath: 'serial_number',
|
|
216
248
|
resizable: true,
|
|
@@ -220,6 +252,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
220
252
|
filterComponent: 'filter/string',
|
|
221
253
|
},
|
|
222
254
|
{
|
|
255
|
+
id: 'imei',
|
|
223
256
|
label: 'IMEI',
|
|
224
257
|
valuePath: 'imei',
|
|
225
258
|
resizable: true,
|
|
@@ -229,6 +262,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
229
262
|
filterComponent: 'filter/string',
|
|
230
263
|
},
|
|
231
264
|
{
|
|
265
|
+
id: 'last-reading-at',
|
|
232
266
|
label: 'Last Reading',
|
|
233
267
|
valuePath: 'lastReadingAt',
|
|
234
268
|
sortParam: 'last_reading_at',
|
|
@@ -239,6 +273,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
239
273
|
filterComponent: 'filter/date',
|
|
240
274
|
},
|
|
241
275
|
{
|
|
276
|
+
id: 'created-at',
|
|
242
277
|
label: this.intl.t('column.created-at'),
|
|
243
278
|
valuePath: 'createdAt',
|
|
244
279
|
sortParam: 'created_at',
|
|
@@ -249,6 +284,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
249
284
|
filterComponent: 'filter/date',
|
|
250
285
|
},
|
|
251
286
|
{
|
|
287
|
+
id: 'updated-at',
|
|
252
288
|
label: this.intl.t('column.updated-at'),
|
|
253
289
|
valuePath: 'updatedAt',
|
|
254
290
|
sortParam: 'updated_at',
|
|
@@ -260,6 +296,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
260
296
|
filterComponent: 'filter/date',
|
|
261
297
|
},
|
|
262
298
|
{
|
|
299
|
+
id: 'row-actions',
|
|
263
300
|
label: '',
|
|
264
301
|
cellComponent: 'table/cell/dropdown',
|
|
265
302
|
ddButtonText: false,
|
|
@@ -272,11 +309,13 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
272
309
|
width: 60,
|
|
273
310
|
actions: [
|
|
274
311
|
{
|
|
312
|
+
id: 'view',
|
|
275
313
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.sensor') }),
|
|
276
314
|
fn: this.sensorActions.transition.view,
|
|
277
315
|
permission: 'fleet-ops view sensor',
|
|
278
316
|
},
|
|
279
317
|
{
|
|
318
|
+
id: 'edit',
|
|
280
319
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.sensor') }),
|
|
281
320
|
fn: this.sensorActions.transition.edit,
|
|
282
321
|
permission: 'fleet-ops update sensor',
|
|
@@ -285,6 +324,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
285
324
|
separator: true,
|
|
286
325
|
},
|
|
287
326
|
{
|
|
327
|
+
id: 'delete',
|
|
288
328
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.sensor') }),
|
|
289
329
|
fn: this.sensorActions.delete,
|
|
290
330
|
permission: 'fleet-ops delete sensor',
|
|
@@ -38,12 +38,14 @@ export default class ConnectivityTelematicsIndexController extends Controller {
|
|
|
38
38
|
type: 'primary',
|
|
39
39
|
icon: 'plus',
|
|
40
40
|
onClick: this.telematicActions.transition.create,
|
|
41
|
+
permission: 'fleet-ops create telematic',
|
|
41
42
|
},
|
|
42
43
|
{
|
|
43
44
|
text: this.intl.t('common.import'),
|
|
44
45
|
type: 'magic',
|
|
45
46
|
icon: 'upload',
|
|
46
47
|
onClick: this.telematicActions.import,
|
|
48
|
+
permission: 'fleet-ops import telematic',
|
|
47
49
|
},
|
|
48
50
|
{
|
|
49
51
|
text: this.intl.t('common.export'),
|
|
@@ -51,6 +53,7 @@ export default class ConnectivityTelematicsIndexController extends Controller {
|
|
|
51
53
|
iconClass: 'rotate-icon-45',
|
|
52
54
|
wrapperClass: 'hidden md:flex',
|
|
53
55
|
onClick: this.telematicActions.export,
|
|
56
|
+
permission: 'fleet-ops export telematic',
|
|
54
57
|
},
|
|
55
58
|
];
|
|
56
59
|
|
|
@@ -60,6 +63,7 @@ export default class ConnectivityTelematicsIndexController extends Controller {
|
|
|
60
63
|
label: 'Delete selected...',
|
|
61
64
|
class: 'text-red-500',
|
|
62
65
|
fn: this.telematicActions.bulkDelete,
|
|
66
|
+
permission: 'fleet-ops delete telematic',
|
|
63
67
|
},
|
|
64
68
|
];
|
|
65
69
|
|