@fleetbase/fleetops-engine 0.6.70 → 0.6.72
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 +18 -47
- package/addon/components/admin/tracking-page-settings.hbs +56 -0
- package/addon/components/admin/tracking-page-settings.js +67 -0
- package/addon/components/device/form.hbs +2 -2
- package/addon/components/driver/details.hbs +1 -1
- package/addon/components/driver/form.hbs +1 -1
- package/addon/components/equipment/form.hbs +1 -1
- package/addon/components/layout/fleet-ops-sidebar.js +11 -3
- package/addon/components/maintenance/form.hbs +3 -3
- package/addon/components/map/google-live-map.js +2 -2
- package/addon/components/map/leaflet-live-map.js +45 -32
- package/addon/components/orchestrator/phase-builder.js +2 -1
- package/addon/components/orchestrator-workbench.hbs +7 -1
- package/addon/components/orchestrator-workbench.js +16 -2
- 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 +5 -3
- package/addon/components/order/form/route.js +24 -1
- 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/service-rate/details.hbs +1 -1
- package/addon/components/service-rate/form.hbs +1 -1
- package/addon/components/tracking-page/full-view.hbs +276 -0
- package/addon/components/tracking-page/full-view.js +474 -0
- package/addon/components/tracking-page/locale-selector.js +30 -0
- package/addon/components/tracking-page/map.hbs +44 -0
- package/addon/components/tracking-page/map.js +328 -0
- package/addon/components/tracking-page/order-list.hbs +35 -0
- package/addon/components/tracking-page/public-view.hbs +60 -0
- package/addon/components/tracking-page/settings-preview.hbs +21 -0
- package/addon/components/tracking-page/settings-preview.js +23 -0
- package/addon/components/tracking-page/verify-panel.hbs +109 -0
- package/addon/components/tracking-page.hbs +142 -0
- package/addon/components/tracking-page.js +564 -0
- package/addon/components/trailer/form.hbs +2 -2
- package/addon/components/vehicle/form.hbs +3 -3
- package/addon/components/warranty/form.hbs +2 -2
- package/addon/components/widget/live-fleet.js +54 -6
- package/addon/components/widget/proof-of-delivery.hbs +49 -0
- package/addon/components/widget/proof-of-delivery.js +62 -0
- package/addon/components/work-order/form.hbs +3 -3
- package/addon/controllers/analytics/reports/index.js +10 -1
- package/addon/controllers/connectivity/devices/index/details.js +1 -0
- package/addon/controllers/connectivity/devices/index.js +8 -2
- package/addon/controllers/connectivity/events/index.js +31 -1
- package/addon/controllers/connectivity/sensors/index/details.js +1 -1
- package/addon/controllers/connectivity/sensors/index.js +37 -1
- package/addon/controllers/maintenance/equipment/index/details.js +2 -2
- package/addon/controllers/maintenance/equipment/index.js +28 -9
- 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 +49 -9
- package/addon/controllers/maintenance/maintenances/index/details.js +2 -0
- package/addon/controllers/maintenance/maintenances/index.js +20 -1
- package/addon/controllers/maintenance/parts/index/details.js +2 -2
- package/addon/controllers/maintenance/parts/index.js +28 -8
- package/addon/controllers/maintenance/schedules/index.js +33 -4
- package/addon/controllers/maintenance/work-orders/index/details.js +3 -3
- package/addon/controllers/maintenance/work-orders/index.js +39 -8
- package/addon/controllers/management/contacts/customers.js +13 -0
- package/addon/controllers/management/contacts/index.js +43 -1
- package/addon/controllers/management/drivers/index/details.js +1 -0
- package/addon/controllers/management/drivers/index.js +32 -2
- package/addon/controllers/management/fleets/index/details.js +1 -0
- package/addon/controllers/management/fleets/index.js +39 -1
- package/addon/controllers/management/fuel-reports/index.js +22 -2
- package/addon/controllers/management/fuel-transactions/index.js +43 -7
- package/addon/controllers/management/issues/index/details.js +1 -0
- package/addon/controllers/management/issues/index.js +22 -2
- package/addon/controllers/management/places/index.js +36 -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 +33 -2
- package/addon/controllers/management/vendors/index.js +26 -2
- package/addon/controllers/operations/orders/index/details.js +50 -7
- package/addon/controllers/operations/orders/index.js +59 -4
- package/addon/controllers/operations/scheduler/index.js +45 -14
- package/addon/controllers/operations/service-rates/index.js +15 -1
- package/addon/controllers/settings/index.js +6 -0
- package/addon/controllers/settings/map.js +75 -0
- package/addon/controllers/settings/orchestrator.js +8 -6
- package/addon/controllers/settings/tracking-page.js +212 -0
- package/addon/extension.js +97 -1
- package/addon/helpers/parcel-box-image.js +16 -0
- package/addon/routes/operations/orders/index/details.js +1 -0
- package/addon/routes/operations/orders/index/new.js +5 -4
- package/addon/routes/operations/scheduler/index.js +1 -1
- package/addon/routes/settings/tracking-page.js +31 -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/location.js +69 -21
- package/addon/services/maintenance-actions.js +1 -0
- package/addon/services/maintenance-schedule-actions.js +2 -1
- package/addon/services/map-settings.js +28 -0
- package/addon/services/order-actions.js +7 -0
- package/addon/services/order-allocation.js +1 -1
- 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/styles/fleetops-engine.css +1391 -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/map.hbs +46 -0
- package/addon/templates/settings/tracking-page.hbs +318 -0
- package/addon/utils/identity-cell-resource.js +2 -56
- package/addon/utils/map-default-view.js +132 -0
- package/addon/utils/normalize-order-config-flow.js +6 -1
- package/addon/utils/placeholder-images.js +4 -69
- package/addon/utils/resource-descriptors/assets.js +2 -57
- package/addon/utils/resource-descriptors/helpers.js +23 -122
- package/addon/utils/resource-descriptors/operations.js +2 -61
- package/addon/utils/resource-descriptors/people.js +3 -142
- package/addon/utils/resource-descriptors/shared.js +18 -0
- package/addon/utils/tracking-live-source.js +123 -0
- package/addon/utils/tracking-page-theme.js +123 -0
- package/app/components/admin/tracking-page-settings.js +1 -0
- package/app/components/tracking-page/full-view.js +1 -0
- package/app/components/tracking-page/locale-selector.js +1 -0
- package/app/components/tracking-page/map.js +1 -0
- package/app/components/tracking-page/order-list.js +1 -0
- package/app/components/tracking-page/public-view.js +1 -0
- package/app/components/tracking-page/settings-preview.js +1 -0
- package/app/components/tracking-page/verify-panel.js +1 -0
- package/app/components/tracking-page.js +1 -0
- package/app/components/widget/proof-of-delivery.js +1 -0
- package/app/controllers/settings/tracking-page.js +1 -0
- package/app/helpers/parcel-box-image.js +1 -0
- package/app/routes/settings/tracking-page.js +1 -0
- package/app/services/order-presentation.js +1 -0
- package/app/templates/settings/tracking-page.js +1 -0
- package/app/utils/map-default-view.js +1 -0
- package/app/utils/tracking-live-source.js +1 -0
- package/app/utils/tracking-page-theme.js +1 -0
- package/composer.json +2 -2
- package/extension.json +1 -1
- package/package.json +4 -4
- package/scripts/pest-bootstrap.php +4 -0
- package/server/config/fleetops.php +4 -0
- package/server/migrations/2026_10_08_000001_create_tracking_sessions_tables.php +51 -0
- package/server/migrations/2026_10_10_000001_add_trashed_index_to_device_events.php +40 -0
- package/server/migrations/2026_10_10_000002_add_trashed_index_to_positions.php +40 -0
- package/server/migrations/2026_10_12_000001_add_deleted_at_to_tracking_sessions_tables.php +32 -0
- package/server/resources/views/labels/default.php +2 -2
- package/server/resources/views/labels/entity-label.php +2 -2
- package/server/resources/views/labels/waypoint-label.php +2 -2
- package/server/src/Auth/Schemas/FleetOps.php +5 -0
- package/server/src/Console/Commands/ProcessOperationalAlerts.php +1 -0
- package/server/src/Console/Commands/PruneTelematicsData.php +101 -26
- package/server/src/Events/OrderChanged.php +257 -0
- package/server/src/Events/OrderDriverUnassigned.php +68 -0
- package/server/src/Exceptions/OrderEditLockedException.php +32 -0
- package/server/src/Expansions/CompanyExpansion.php +3 -2
- package/server/src/Expansions/UserExpansion.php +12 -10
- package/server/src/Http/Controllers/Api/v1/CustomerController.php +108 -18
- package/server/src/Http/Controllers/Api/v1/DriverController.php +95 -10
- package/server/src/Http/Controllers/Api/v1/EntityController.php +66 -0
- package/server/src/Http/Controllers/Api/v1/FleetController.php +10 -4
- package/server/src/Http/Controllers/Api/v1/OrderController.php +139 -36
- package/server/src/Http/Controllers/Api/v1/PayloadController.php +76 -8
- package/server/src/Http/Controllers/Api/v1/PlaceController.php +3 -3
- package/server/src/Http/Controllers/Api/v1/TrackingNumberController.php +6 -32
- package/server/src/Http/Controllers/Api/v1/VehicleController.php +5 -0
- package/server/src/Http/Controllers/Internal/v1/ContactController.php +3 -0
- package/server/src/Http/Controllers/Internal/v1/DriverController.php +10 -0
- package/server/src/Http/Controllers/Internal/v1/FleetController.php +16 -2
- package/server/src/Http/Controllers/Internal/v1/InspectionSubmissionController.php +13 -8
- package/server/src/Http/Controllers/Internal/v1/IssueController.php +2 -0
- package/server/src/Http/Controllers/Internal/v1/MaintenanceController.php +4 -2
- package/server/src/Http/Controllers/Internal/v1/OrchestrationController.php +93 -11
- package/server/src/Http/Controllers/Internal/v1/OrderController.php +118 -28
- package/server/src/Http/Controllers/Internal/v1/PositionController.php +22 -0
- package/server/src/Http/Controllers/Internal/v1/ProofController.php +55 -4
- package/server/src/Http/Controllers/Internal/v1/SettingController.php +303 -10
- package/server/src/Http/Controllers/Internal/v1/TrailerController.php +1 -0
- package/server/src/Http/Controllers/Internal/v1/VehicleController.php +1 -0
- package/server/src/Http/Controllers/Public/TrackingController.php +518 -0
- package/server/src/Http/Filter/ContactFilter.php +1 -1
- package/server/src/Http/Filter/InspectionFormFilter.php +23 -0
- package/server/src/Http/Filter/InspectionSubmissionFilter.php +23 -0
- package/server/src/Http/Filter/MaintenanceFilter.php +23 -0
- package/server/src/Http/Filter/OrderFilter.php +39 -4
- package/server/src/Http/Filter/ProofFilter.php +18 -0
- package/server/src/Http/Filter/RouteFilter.php +18 -0
- package/server/src/Http/Filter/TelematicFilter.php +23 -0
- package/server/src/Http/Filter/WarrantyFilter.php +23 -0
- package/server/src/Http/Requests/CancelOrderRequest.php +2 -1
- package/server/src/Http/Resources/v1/Concerns/ResolvesPublicRelationFields.php +14 -1
- package/server/src/Http/Resources/v1/Index/Customer.php +18 -0
- package/server/src/Http/Resources/v1/Index/Order.php +11 -2
- package/server/src/Http/Resources/v1/PublicOrderTracking.php +153 -0
- package/server/src/Http/Resources/v1/TrackingNumber.php +8 -34
- package/server/src/Http/Resources/v1/Zone.php +31 -23
- package/server/src/Jobs/FinalizeApiOrderCreation.php +3 -1
- package/server/src/Jobs/ProcessAllocationJob.php +16 -6
- package/server/src/Jobs/PublishTrackingUpdate.php +50 -0
- package/server/src/Listeners/HandleGeofenceEntered.php +31 -15
- package/server/src/Listeners/HandleOrderCanceled.php +9 -1
- package/server/src/Listeners/HandleUserRemovedFromCompany.php +2 -1
- package/server/src/Listeners/PublishTrackingUpdates.php +27 -0
- package/server/src/Mail/CustomerCredentialsMail.php +4 -2
- package/server/src/Models/AssetConnection.php +3 -0
- package/server/src/Models/Contact.php +3 -0
- package/server/src/Models/Device.php +28 -0
- package/server/src/Models/DeviceEvent.php +7 -0
- package/server/src/Models/Driver.php +20 -7
- package/server/src/Models/Entity.php +12 -4
- package/server/src/Models/Fleet.php +11 -32
- package/server/src/Models/FleetDriver.php +3 -0
- package/server/src/Models/FleetVehicle.php +3 -0
- package/server/src/Models/FuelReport.php +5 -13
- package/server/src/Models/Issue.php +4 -16
- package/server/src/Models/Order.php +234 -11
- package/server/src/Models/OrderConfig.php +129 -0
- package/server/src/Models/Payload.php +227 -35
- package/server/src/Models/Place.php +7 -1
- package/server/src/Models/ServiceArea.php +7 -0
- package/server/src/Models/ServiceRate.php +7 -17
- package/server/src/Models/TrackingNumber.php +109 -6
- package/server/src/Models/TrackingSession.php +33 -0
- package/server/src/Models/TrackingSessionGrant.php +22 -0
- package/server/src/Models/TrackingStatus.php +6 -0
- package/server/src/Models/Vehicle.php +21 -2
- package/server/src/Models/Vendor.php +7 -0
- package/server/src/Models/Waypoint.php +13 -4
- package/server/src/Notifications/OrderAssigned.php +2 -1
- package/server/src/Notifications/OrderCanceled.php +7 -1
- package/server/src/Notifications/OrderChanged.php +87 -0
- package/server/src/Notifications/OrderCompleted.php +2 -1
- package/server/src/Notifications/OrderDispatchFailed.php +2 -1
- package/server/src/Notifications/OrderDispatched.php +2 -1
- package/server/src/Notifications/OrderFailed.php +2 -1
- package/server/src/Notifications/OrderUnassigned.php +66 -0
- package/server/src/Notifications/WaypointCompleted.php +2 -1
- package/server/src/Observers/CompanyUserObserver.php +8 -7
- package/server/src/Observers/DriverObserver.php +6 -1
- package/server/src/Observers/OrderObserver.php +141 -1
- package/server/src/Observers/TrackingNumberObserver.php +18 -6
- package/server/src/Observers/UserObserver.php +2 -1
- package/server/src/Observers/VehicleObserver.php +8 -3
- package/server/src/Orchestration/Engines/RouteSequencingEngine.php +21 -3
- package/server/src/Orchestration/Engines/VroomOrchestrationEngine.php +38 -8
- package/server/src/Orchestration/OrchestrationEngineRegistry.php +61 -1
- package/server/src/Orchestration/Support/OrchestratorSettings.php +61 -0
- package/server/src/Orchestration/Support/RouteMetrics.php +165 -0
- package/server/src/Providers/EventServiceProvider.php +11 -0
- package/server/src/Providers/FleetOpsServiceProvider.php +13 -0
- package/server/src/Support/ApiCacheThrottle.php +76 -0
- package/server/src/Support/LiveOrderQuery.php +3 -1
- package/server/src/Support/OrderEdit.php +365 -0
- package/server/src/Support/OrderEditPolicy.php +292 -0
- package/server/src/Support/ProfileAccountManager.php +54 -1
- package/server/src/Support/ResolvesOrderServiceStops.php +5 -0
- package/server/src/Support/SocketChannels.php +346 -0
- package/server/src/Support/Telematics/TelematicService.php +7 -2
- package/server/src/Support/Telematics/Telemetry/Inbox.php +8 -1
- package/server/src/Support/TrackingChannel.php +55 -0
- package/server/src/Support/TrackingCode.php +242 -0
- package/server/src/Support/TrackingPage/TrackingAccess.php +356 -0
- package/server/src/Support/TrackingPage/TrackingPageConfig.php +264 -0
- package/server/src/Support/TrackingPage/TrackingRecipient.php +111 -0
- package/server/src/Support/TrackingPage/TrackingResolver.php +201 -0
- package/server/src/Support/TrackingPage/TrackingTarget.php +40 -0
- package/server/src/Support/TrackingPage/TrackingView.php +543 -0
- package/server/src/Support/TrackingPublisher.php +261 -0
- package/server/src/Support/TrackingScope.php +182 -0
- package/server/src/Support/TrackingUpdate.php +402 -0
- package/server/src/Support/Utils.php +15 -3
- package/server/src/Traits/HasTrackingNumber.php +2 -0
- package/server/src/routes.php +39 -7
- package/server/tests/ApiCustomerControllerContractsTest.php +54 -7
- package/server/tests/ApiDriverPasswordContractsTest.php +25 -21
- package/server/tests/ApiEntityControllerContractsTest.php +84 -0
- package/server/tests/ApiOrderControllerContractsTest.php +245 -0
- package/server/tests/ApiPayloadControllerContractsTest.php +121 -0
- package/server/tests/ApiPlaceControllerContractsTest.php +1 -1
- package/server/tests/ApiTrackingNumberControllerContractsTest.php +6 -9
- package/server/tests/CompactResourceSerializationTest.php +23 -59
- package/server/tests/ControllerFilterContractsTest.php +1 -1
- package/server/tests/CustomerContactIdentitySafetyTest.php +1 -1
- package/server/tests/EventContractsTest.php +26 -60
- package/server/tests/ExpansionContractsTest.php +15 -2
- package/server/tests/Feature/Http/Api/CustomerControllerHelperSeamsTest.php +29 -3
- package/server/tests/Feature/Http/Api/DriverControllerAuthFlowsTest.php +23 -0
- package/server/tests/Feature/Http/Api/OrderControllerNearbyFiltersTest.php +16 -16
- package/server/tests/Feature/Http/Api/OrderControllerQueryFiltersTest.php +41 -14
- package/server/tests/Feature/Http/Api/TrackingNumberControllerHelpersTest.php +57 -22
- package/server/tests/Feature/Http/Internal/DriverControllerCreateRecordTest.php +23 -9
- package/server/tests/Feature/Http/Internal/OrchestrationControllerContractsTest.php +171 -1
- package/server/tests/Feature/Http/Internal/OrderControllerActivityFlowsTest.php +72 -0
- package/server/tests/Feature/Http/Internal/OrderControllerContractsTest.php +110 -14
- package/server/tests/Feature/Http/Internal/OrderControllerCreateRecordTest.php +26 -0
- package/server/tests/Feature/Http/Internal/OrderControllerHelpersTest.php +7 -5
- package/server/tests/Feature/Http/Internal/PositionControllerReplayChannelTest.php +135 -0
- package/server/tests/Feature/Http/Internal/ProofControllerContractsTest.php +3 -3
- package/server/tests/Feature/Http/Internal/ProofControllerRecentTest.php +170 -0
- package/server/tests/Feature/Http/Public/TrackingControllerTest.php +495 -0
- package/server/tests/IndexCustomerPhotoTest.php +151 -0
- package/server/tests/ModelAccessorContractsTest.php +4 -3
- package/server/tests/NotificationAndMailContractsTest.php +5 -8
- package/server/tests/ObserverContractsTest.php +72 -10
- package/server/tests/OrderActivityFlowRegressionTest.php +3 -2
- package/server/tests/OrderConfigLifecycleTest.php +120 -0
- package/server/tests/OrderFilterExecutionTest.php +167 -2
- package/server/tests/ProcessAllocationJobContractsTest.php +20 -0
- package/server/tests/PublicOrderTrackingResourceTest.php +221 -0
- package/server/tests/QueueJobContractsTest.php +2 -1
- package/server/tests/RequestContractsTest.php +1 -1
- package/server/tests/RouteRegistrationExecutionTest.php +26 -0
- package/server/tests/RouteSequencingEngineTest.php +17 -0
- package/server/tests/SettingControllerContractsTest.php +110 -0
- package/server/tests/Support/TrackingPageDatabase.php +200 -0
- package/server/tests/TenantScopingTest.php +206 -0
- package/server/tests/TrackingPageSettingsTest.php +343 -0
- package/server/tests/Unit/Console/PruneTelematicsDataCommandTest.php +51 -0
- package/server/tests/Unit/Events/OrderDispatchFailedTest.php +2 -1
- package/server/tests/Unit/Http/Filter/ContactFilterAddressTest.php +61 -0
- package/server/tests/Unit/Http/Resources/IndexOrderResourceTest.php +30 -0
- package/server/tests/Unit/Jobs/FinalizeApiOrderCreationDispatchGuardTest.php +266 -0
- package/server/tests/Unit/Listeners/HandleGeofenceEnteredTest.php +182 -22
- package/server/tests/Unit/Listeners/HandleUserRemovedFromCompanyTest.php +5 -0
- package/server/tests/Unit/Models/DriverAssignVehicleTest.php +81 -0
- package/server/tests/Unit/Models/FleetTest.php +4 -3
- package/server/tests/Unit/Models/OrderCancelReasonTest.php +143 -0
- package/server/tests/Unit/Models/OrderPayloadConfigAndDistanceTest.php +60 -0
- package/server/tests/Unit/Models/OrderPayloadRouteTest.php +4 -2
- package/server/tests/Unit/Models/PayloadTest.php +18 -4
- package/server/tests/Unit/Models/ServiceRatePersistenceAndServicabilityTest.php +2 -2
- package/server/tests/Unit/Models/TrackingNumberTest.php +67 -6
- package/server/tests/Unit/Models/VehicleTest.php +16 -2
- package/server/tests/Unit/Models/WaypointTest.php +4 -3
- package/server/tests/Unit/Notifications/OrderChangeNotificationsTest.php +59 -0
- package/server/tests/Unit/Notifications/TerminalOrderNotificationsTest.php +3 -3
- package/server/tests/Unit/Observers/DriverDeletionCleanupTest.php +158 -0
- package/server/tests/Unit/Observers/FleetOpsCompanyUserAndServiceAreaObserversTest.php +20 -0
- package/server/tests/Unit/Observers/ObserverListenerSeamsTest.php +3 -3
- package/server/tests/Unit/Observers/OrderAssignmentObserverTest.php +100 -0
- package/server/tests/Unit/Observers/OrderDeleteCascadeTest.php +213 -0
- package/server/tests/Unit/Observers/VehicleObserverDeleteTest.php +67 -0
- package/server/tests/Unit/Orchestration/EngineSelectionAndRouteMetricsTest.php +336 -0
- package/server/tests/Unit/Orchestration/Engines/VroomOrchestrationEngineLifecycleTest.php +8 -1
- package/server/tests/Unit/Support/ApiCacheDependenciesTest.php +347 -0
- package/server/tests/Unit/Support/OrderEditPolicyTest.php +156 -0
- package/server/tests/Unit/Support/OrderOperationsTest.php +514 -0
- package/server/tests/Unit/Support/OsrmProofAndIssueFilterTest.php +4 -3
- package/server/tests/Unit/Support/ProfileAccountManagerTest.php +141 -0
- package/server/tests/Unit/Support/QuerySeamsTest.php +5 -1
- package/server/tests/Unit/Support/SocketChannelsTest.php +396 -0
- package/server/tests/Unit/Support/TrackingChannelTest.php +232 -0
- package/server/tests/Unit/Support/TrackingCodeTest.php +186 -0
- package/server/tests/Unit/Support/TrackingPage/TrackingAccessTest.php +200 -0
- package/server/tests/Unit/Support/TrackingPage/TrackingRecipientTest.php +51 -0
- package/server/tests/Unit/Support/TrackingPage/TrackingResolverTest.php +181 -0
- package/server/tests/Unit/Support/TrackingPage/TrackingViewTest.php +479 -0
- package/server/tests/Unit/Support/TrackingPublisherTest.php +425 -0
- package/server/tests/Unit/Support/TrackingUpdateTest.php +363 -0
- package/server/tests/Unit/Support/UtilsAdditionalTest.php +9 -0
- package/server/tests/Unit/Support/UtilsGeoMatrixAndVendorTest.php +25 -0
- package/server/tests/VehicleResourceContractsTest.php +46 -0
- package/server/tests/VroomOrchestrationEngineTest.php +34 -1
- package/server/tests/ZoneGeofenceSettingsResourceTest.php +121 -0
- package/translations/ar-ae.yml +274 -0
- package/translations/bg-bg.yaml +274 -0
- package/translations/en-us.yaml +347 -0
- package/translations/es-pa.yaml +274 -0
- package/translations/fr-fr.yaml +274 -0
- package/translations/mn-mn.yaml +274 -0
- package/translations/pt-br.yaml +274 -0
- package/translations/ru-ru.yaml +276 -2
- package/translations/uk-ua.yaml +275 -1
- package/translations/vi-vn.yaml +274 -0
- package/addon/components/cell/contact-identity.hbs +0 -1
- package/addon/components/cell/customer-identity.hbs +0 -1
- package/addon/components/cell/driver-identity.hbs +0 -1
- package/addon/components/cell/fleet-identity.hbs +0 -1
- package/addon/components/cell/order-identity.hbs +0 -1
- package/addon/components/cell/place-identity.hbs +0 -1
- package/addon/components/cell/vehicle-identity.hbs +0 -1
- package/addon/components/cell/vendor-identity.hbs +0 -1
- package/addon/components/contact/pill.hbs +0 -24
- package/addon/components/contact/summary.hbs +0 -1
- package/addon/components/customer/pill.hbs +0 -24
- package/addon/components/customer/summary.hbs +0 -1
- package/addon/components/driver/pill.hbs +0 -24
- package/addon/components/driver/summary.hbs +0 -1
- package/addon/components/fleet/pill.hbs +0 -24
- package/addon/components/fleet/summary.hbs +0 -1
- package/addon/components/order/pill.hbs +0 -24
- package/addon/components/order/summary.hbs +0 -1
- package/addon/components/place/pill.hbs +0 -24
- package/addon/components/place/summary.hbs +0 -1
- package/addon/components/select-option/contact.hbs +0 -12
- package/addon/components/select-option/customer.hbs +0 -12
- package/addon/components/select-option/driver.hbs +0 -12
- package/addon/components/select-option/fleet.hbs +0 -12
- package/addon/components/select-option/order.hbs +0 -12
- package/addon/components/select-option/place.hbs +0 -12
- package/addon/components/select-option/vehicle.hbs +0 -12
- package/addon/components/select-option/vendor.hbs +0 -12
- package/addon/components/vehicle/pill.hbs +0 -24
- package/addon/components/vehicle/summary.hbs +0 -1
- package/addon/components/vendor/pill.hbs +0 -24
- package/addon/components/vendor/summary.hbs +0 -1
- package/app/components/cell/contact-identity.js +0 -1
- package/app/components/cell/customer-identity.js +0 -1
- package/app/components/cell/driver-identity.js +0 -1
- package/app/components/cell/fleet-identity.js +0 -1
- package/app/components/cell/order-identity.js +0 -1
- package/app/components/cell/place-identity.js +0 -1
- package/app/components/cell/vehicle-identity.js +0 -1
- package/app/components/cell/vendor-identity.js +0 -1
- package/app/components/contact/pill.js +0 -1
- package/app/components/contact/summary.js +0 -1
- package/app/components/customer/pill.js +0 -1
- package/app/components/customer/summary.js +0 -1
- package/app/components/driver/pill.js +0 -1
- package/app/components/driver/summary.js +0 -1
- package/app/components/fleet/pill.js +0 -1
- package/app/components/fleet/summary.js +0 -1
- package/app/components/order/pill.js +0 -1
- package/app/components/order/summary.js +0 -1
- package/app/components/place/pill.js +0 -1
- package/app/components/place/summary.js +0 -1
- package/app/components/select-option/contact.js +0 -1
- package/app/components/select-option/customer.js +0 -1
- package/app/components/select-option/driver.js +0 -1
- package/app/components/select-option/fleet.js +0 -1
- package/app/components/select-option/order.js +0 -1
- package/app/components/select-option/place.js +0 -1
- package/app/components/select-option/vehicle.js +0 -1
- package/app/components/select-option/vendor.js +0 -1
- package/app/components/vehicle/pill.js +0 -1
- package/app/components/vehicle/summary.js +0 -1
- package/app/components/vendor/pill.js +0 -1
- package/app/components/vendor/summary.js +0 -1
|
@@ -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,11 +97,13 @@ 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',
|
|
@@ -95,6 +111,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
95
111
|
permission: 'fleet-ops create sensor',
|
|
96
112
|
},
|
|
97
113
|
{
|
|
114
|
+
id: 'import',
|
|
98
115
|
text: this.intl.t('common.import'),
|
|
99
116
|
type: 'magic',
|
|
100
117
|
icon: 'upload',
|
|
@@ -102,6 +119,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
102
119
|
permission: 'fleet-ops import sensor',
|
|
103
120
|
},
|
|
104
121
|
{
|
|
122
|
+
id: 'export',
|
|
105
123
|
text: this.intl.t('common.export'),
|
|
106
124
|
icon: 'long-arrow-up',
|
|
107
125
|
iconClass: 'rotate-icon-45',
|
|
@@ -114,6 +132,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
114
132
|
/** bulk action buttons */
|
|
115
133
|
@tracked bulkActions = [
|
|
116
134
|
{
|
|
135
|
+
id: 'bulk-delete',
|
|
117
136
|
label: 'Delete selected...',
|
|
118
137
|
class: 'text-red-500',
|
|
119
138
|
fn: this.sensorActions.bulkDelete,
|
|
@@ -124,6 +143,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
124
143
|
/** columns */
|
|
125
144
|
@tracked columns = [
|
|
126
145
|
{
|
|
146
|
+
id: 'display-name',
|
|
127
147
|
sticky: true,
|
|
128
148
|
label: this.intl.t('column.name'),
|
|
129
149
|
valuePath: 'displayName',
|
|
@@ -138,6 +158,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
138
158
|
filterComponent: 'filter/string',
|
|
139
159
|
},
|
|
140
160
|
{
|
|
161
|
+
id: 'telematic-provider',
|
|
141
162
|
label: 'Telematic',
|
|
142
163
|
valuePath: 'telematic.provider',
|
|
143
164
|
cellComponent: 'cell/telematic-identity',
|
|
@@ -153,6 +174,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
153
174
|
model: 'telematic',
|
|
154
175
|
},
|
|
155
176
|
{
|
|
177
|
+
id: 'device-display-name',
|
|
156
178
|
label: 'Device',
|
|
157
179
|
valuePath: 'device.displayName',
|
|
158
180
|
cellComponent: 'cell/device-identity',
|
|
@@ -170,6 +192,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
170
192
|
query: this.telematic ? { telematic_uuid: this.telematic } : undefined,
|
|
171
193
|
},
|
|
172
194
|
{
|
|
195
|
+
id: 'type',
|
|
173
196
|
label: 'Type',
|
|
174
197
|
valuePath: 'type',
|
|
175
198
|
cellComponent: 'table/cell/base',
|
|
@@ -184,18 +207,21 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
184
207
|
filterOptionValue: 'value',
|
|
185
208
|
},
|
|
186
209
|
{
|
|
210
|
+
id: 'last-value',
|
|
187
211
|
label: 'Last Value',
|
|
188
212
|
valuePath: 'last_value',
|
|
189
213
|
resizable: true,
|
|
190
214
|
sortable: true,
|
|
191
215
|
},
|
|
192
216
|
{
|
|
217
|
+
id: 'unit',
|
|
193
218
|
label: 'Unit',
|
|
194
219
|
valuePath: 'unit',
|
|
195
220
|
resizable: true,
|
|
196
221
|
sortable: true,
|
|
197
222
|
},
|
|
198
223
|
{
|
|
224
|
+
id: 'status',
|
|
199
225
|
label: this.intl.t('column.status'),
|
|
200
226
|
valuePath: 'status',
|
|
201
227
|
cellComponent: 'table/cell/status',
|
|
@@ -208,6 +234,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
208
234
|
filterOptionValue: 'value',
|
|
209
235
|
},
|
|
210
236
|
{
|
|
237
|
+
id: 'threshold-status',
|
|
211
238
|
label: 'Threshold',
|
|
212
239
|
valuePath: 'threshold_status',
|
|
213
240
|
cellComponent: 'table/cell/status',
|
|
@@ -215,6 +242,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
215
242
|
sortable: true,
|
|
216
243
|
},
|
|
217
244
|
{
|
|
245
|
+
id: 'serial-number',
|
|
218
246
|
label: 'Serial Number',
|
|
219
247
|
valuePath: 'serial_number',
|
|
220
248
|
resizable: true,
|
|
@@ -224,6 +252,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
224
252
|
filterComponent: 'filter/string',
|
|
225
253
|
},
|
|
226
254
|
{
|
|
255
|
+
id: 'imei',
|
|
227
256
|
label: 'IMEI',
|
|
228
257
|
valuePath: 'imei',
|
|
229
258
|
resizable: true,
|
|
@@ -233,6 +262,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
233
262
|
filterComponent: 'filter/string',
|
|
234
263
|
},
|
|
235
264
|
{
|
|
265
|
+
id: 'last-reading-at',
|
|
236
266
|
label: 'Last Reading',
|
|
237
267
|
valuePath: 'lastReadingAt',
|
|
238
268
|
sortParam: 'last_reading_at',
|
|
@@ -243,6 +273,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
243
273
|
filterComponent: 'filter/date',
|
|
244
274
|
},
|
|
245
275
|
{
|
|
276
|
+
id: 'created-at',
|
|
246
277
|
label: this.intl.t('column.created-at'),
|
|
247
278
|
valuePath: 'createdAt',
|
|
248
279
|
sortParam: 'created_at',
|
|
@@ -253,6 +284,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
253
284
|
filterComponent: 'filter/date',
|
|
254
285
|
},
|
|
255
286
|
{
|
|
287
|
+
id: 'updated-at',
|
|
256
288
|
label: this.intl.t('column.updated-at'),
|
|
257
289
|
valuePath: 'updatedAt',
|
|
258
290
|
sortParam: 'updated_at',
|
|
@@ -264,6 +296,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
264
296
|
filterComponent: 'filter/date',
|
|
265
297
|
},
|
|
266
298
|
{
|
|
299
|
+
id: 'row-actions',
|
|
267
300
|
label: '',
|
|
268
301
|
cellComponent: 'table/cell/dropdown',
|
|
269
302
|
ddButtonText: false,
|
|
@@ -276,11 +309,13 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
276
309
|
width: 60,
|
|
277
310
|
actions: [
|
|
278
311
|
{
|
|
312
|
+
id: 'view',
|
|
279
313
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.sensor') }),
|
|
280
314
|
fn: this.sensorActions.transition.view,
|
|
281
315
|
permission: 'fleet-ops view sensor',
|
|
282
316
|
},
|
|
283
317
|
{
|
|
318
|
+
id: 'edit',
|
|
284
319
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.sensor') }),
|
|
285
320
|
fn: this.sensorActions.transition.edit,
|
|
286
321
|
permission: 'fleet-ops update sensor',
|
|
@@ -289,6 +324,7 @@ export default class ConnectivitySensorsIndexController extends Controller {
|
|
|
289
324
|
separator: true,
|
|
290
325
|
},
|
|
291
326
|
{
|
|
327
|
+
id: 'delete',
|
|
292
328
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.sensor') }),
|
|
293
329
|
fn: this.sensorActions.delete,
|
|
294
330
|
permission: 'fleet-ops delete sensor',
|
|
@@ -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,10 +46,11 @@ 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, permission: 'fleet-ops create equipment' },
|
|
50
|
-
{ text: this.intl.t('common.import'), type: 'magic', icon: 'upload', onClick: this.equipmentActions.import, permission: 'fleet-ops import equipment' },
|
|
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' },
|
|
51
52
|
{
|
|
53
|
+
id: 'export',
|
|
52
54
|
text: this.intl.t('common.export'),
|
|
53
55
|
icon: 'long-arrow-up',
|
|
54
56
|
iconClass: 'rotate-icon-45',
|
|
@@ -60,12 +62,13 @@ export default class MaintenanceEquipmentIndexController extends Controller {
|
|
|
60
62
|
}
|
|
61
63
|
|
|
62
64
|
get bulkActions() {
|
|
63
|
-
return [{ label: 'Delete selected...', class: 'text-red-500', fn: this.equipmentActions.bulkDelete, permission: 'fleet-ops delete equipment' }];
|
|
65
|
+
return [{ id: 'bulk-delete', label: 'Delete selected...', class: 'text-red-500', fn: this.equipmentActions.bulkDelete, permission: 'fleet-ops delete equipment' }];
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
get columns() {
|
|
67
69
|
return [
|
|
68
70
|
{
|
|
71
|
+
id: 'name',
|
|
69
72
|
label: this.intl.t('column.name'),
|
|
70
73
|
valuePath: 'name',
|
|
71
74
|
cellComponent: 'cell/equipment-identity',
|
|
@@ -77,8 +80,9 @@ export default class MaintenanceEquipmentIndexController extends Controller {
|
|
|
77
80
|
filterParam: 'name',
|
|
78
81
|
filterComponent: 'filter/string',
|
|
79
82
|
},
|
|
80
|
-
{ 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' },
|
|
81
84
|
{
|
|
85
|
+
id: 'type',
|
|
82
86
|
label: this.intl.t('column.type'),
|
|
83
87
|
valuePath: 'type',
|
|
84
88
|
cellComponent: 'table/cell/base',
|
|
@@ -90,6 +94,7 @@ export default class MaintenanceEquipmentIndexController extends Controller {
|
|
|
90
94
|
filterComponent: 'filter/string',
|
|
91
95
|
},
|
|
92
96
|
{
|
|
97
|
+
id: 'status',
|
|
93
98
|
label: this.intl.t('column.status'),
|
|
94
99
|
valuePath: 'status',
|
|
95
100
|
cellComponent: 'table/cell/status',
|
|
@@ -99,10 +104,20 @@ export default class MaintenanceEquipmentIndexController extends Controller {
|
|
|
99
104
|
filterParam: 'status',
|
|
100
105
|
filterComponent: 'filter/string',
|
|
101
106
|
},
|
|
102
|
-
{ label: this.intl.t('column.serial-number'), valuePath: 'serial_number', resizable: true, sortable: true },
|
|
103
|
-
{ label: this.intl.t('column.manufacturer'), valuePath: 'manufacturer', resizable: true, sortable: true },
|
|
104
|
-
{ 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 },
|
|
105
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
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: 'updated-at',
|
|
106
121
|
label: this.intl.t('column.updated-at'),
|
|
107
122
|
valuePath: 'updatedAt',
|
|
108
123
|
sortParam: 'updated_at',
|
|
@@ -113,6 +128,7 @@ export default class MaintenanceEquipmentIndexController extends Controller {
|
|
|
113
128
|
filterComponent: 'filter/date',
|
|
114
129
|
},
|
|
115
130
|
{
|
|
131
|
+
id: 'row-actions',
|
|
116
132
|
label: '',
|
|
117
133
|
cellComponent: 'table/cell/dropdown',
|
|
118
134
|
ddButtonText: false,
|
|
@@ -123,17 +139,20 @@ export default class MaintenanceEquipmentIndexController extends Controller {
|
|
|
123
139
|
wrapperClass: 'flex items-center justify-end mx-2',
|
|
124
140
|
actions: [
|
|
125
141
|
{
|
|
142
|
+
id: 'view',
|
|
126
143
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.equipment') }),
|
|
127
144
|
fn: this.equipmentActions.transition.view,
|
|
128
145
|
permission: 'fleet-ops view equipment',
|
|
129
146
|
},
|
|
130
147
|
{
|
|
148
|
+
id: 'edit',
|
|
131
149
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.equipment') }),
|
|
132
150
|
fn: this.equipmentActions.transition.edit,
|
|
133
151
|
permission: 'fleet-ops update equipment',
|
|
134
152
|
},
|
|
135
153
|
{ separator: true },
|
|
136
154
|
{
|
|
155
|
+
id: 'delete',
|
|
137
156
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.equipment') }),
|
|
138
157
|
fn: this.equipmentActions.delete,
|
|
139
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
|
-
{
|
|
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, permission: 'fleet-ops delete inspection-form' }];
|
|
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
|
-
{
|
|
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 = [
|
|
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,8 +35,9 @@ 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') },
|
|
38
|
+
{ id: 'refresh', icon: 'refresh', onClick: this.inspectionSubmissionActions.refresh, helpText: this.intl.t('common.refresh') },
|
|
26
39
|
{
|
|
40
|
+
id: 'create',
|
|
27
41
|
text: this.intl.t('common.new'),
|
|
28
42
|
type: 'primary',
|
|
29
43
|
icon: 'plus',
|
|
@@ -34,12 +48,15 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
|
|
|
34
48
|
}
|
|
35
49
|
|
|
36
50
|
get bulkActions() {
|
|
37
|
-
return [
|
|
51
|
+
return [
|
|
52
|
+
{ id: 'bulk-delete', label: 'Delete selected...', class: 'text-red-500', fn: this.inspectionSubmissionActions.bulkDelete, permission: 'fleet-ops delete inspection-submission' },
|
|
53
|
+
];
|
|
38
54
|
}
|
|
39
55
|
|
|
40
56
|
get columns() {
|
|
41
57
|
return [
|
|
42
58
|
{
|
|
59
|
+
id: 'public-id',
|
|
43
60
|
label: 'Inspection',
|
|
44
61
|
valuePath: 'public_id',
|
|
45
62
|
cellComponent: 'table/cell/anchor',
|
|
@@ -52,6 +69,7 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
|
|
|
52
69
|
filterComponent: 'filter/string',
|
|
53
70
|
},
|
|
54
71
|
{
|
|
72
|
+
id: 'form-name',
|
|
55
73
|
label: 'Form',
|
|
56
74
|
valuePath: 'form_name',
|
|
57
75
|
cellComponent: 'cell/inspection-form-identity',
|
|
@@ -61,6 +79,7 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
|
|
|
61
79
|
sortable: false,
|
|
62
80
|
},
|
|
63
81
|
{
|
|
82
|
+
id: 'vehicle-name',
|
|
64
83
|
label: 'Vehicle',
|
|
65
84
|
valuePath: 'vehicle_name',
|
|
66
85
|
cellComponent: 'cell/vehicle-identity',
|
|
@@ -72,6 +91,7 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
|
|
|
72
91
|
sortable: false,
|
|
73
92
|
},
|
|
74
93
|
{
|
|
94
|
+
id: 'driver-name',
|
|
75
95
|
label: 'Driver',
|
|
76
96
|
valuePath: 'driver_name',
|
|
77
97
|
cellComponent: 'cell/driver-identity',
|
|
@@ -83,6 +103,7 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
|
|
|
83
103
|
sortable: false,
|
|
84
104
|
},
|
|
85
105
|
{
|
|
106
|
+
id: 'result',
|
|
86
107
|
label: 'Result',
|
|
87
108
|
valuePath: 'result',
|
|
88
109
|
cellComponent: 'table/cell/status',
|
|
@@ -92,9 +113,19 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
|
|
|
92
113
|
filterParam: 'result',
|
|
93
114
|
filterComponent: 'filter/string',
|
|
94
115
|
},
|
|
95
|
-
{ label: 'Failed', valuePath: 'failed_items', resizable: true, sortable: true },
|
|
96
|
-
{ 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 },
|
|
97
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',
|
|
98
129
|
label: '',
|
|
99
130
|
cellComponent: 'table/cell/dropdown',
|
|
100
131
|
ddButtonText: false,
|
|
@@ -103,8 +134,8 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
|
|
|
103
134
|
cellClassNames: 'overflow-visible',
|
|
104
135
|
wrapperClass: 'flex items-center justify-end mx-2',
|
|
105
136
|
actions: [
|
|
106
|
-
{ label: 'View inspection', fn: this.inspectionSubmissionActions.transition.view, permission: 'fleet-ops view inspection-submission' },
|
|
107
|
-
{ 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' },
|
|
108
139
|
{
|
|
109
140
|
separator: true,
|
|
110
141
|
// Everything below this rule is conditional. On a row
|
|
@@ -114,6 +145,7 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
|
|
|
114
145
|
isVisible: (row) => row?.status === 'draft' || row?.status !== 'resolved' || Boolean(row?.has_failures && (!row?.issue_uuid || !row?.work_order_uuid)),
|
|
115
146
|
},
|
|
116
147
|
{
|
|
148
|
+
id: 'submit',
|
|
117
149
|
label: 'Submit',
|
|
118
150
|
fn: this.inspectionSubmissionActions.submit,
|
|
119
151
|
permission: 'fleet-ops submit inspection-submission',
|
|
@@ -123,20 +155,28 @@ export default class MaintenanceInspectionSubmissionsIndexController extends Con
|
|
|
123
155
|
isVisible: (row) => row?.status === 'draft',
|
|
124
156
|
},
|
|
125
157
|
{
|
|
158
|
+
id: 'create-issue',
|
|
126
159
|
label: 'Create issue',
|
|
127
160
|
fn: this.inspectionSubmissionActions.createIssue,
|
|
128
161
|
permission: 'fleet-ops create-issue inspection-submission',
|
|
129
162
|
isVisible: (row) => row?.has_failures && !row?.issue_uuid,
|
|
130
163
|
},
|
|
131
164
|
{
|
|
165
|
+
id: 'create-work-order',
|
|
132
166
|
label: 'Create work order',
|
|
133
167
|
fn: this.inspectionSubmissionActions.createWorkOrder,
|
|
134
168
|
permission: 'fleet-ops create-work-order inspection-submission',
|
|
135
169
|
isVisible: (row) => row?.has_failures && !row?.work_order_uuid,
|
|
136
170
|
},
|
|
137
|
-
{
|
|
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
|
+
},
|
|
138
178
|
{ separator: true },
|
|
139
|
-
{ 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' },
|
|
140
180
|
],
|
|
141
181
|
sortable: false,
|
|
142
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',
|