@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
|
@@ -16,7 +16,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
16
16
|
@service store;
|
|
17
17
|
|
|
18
18
|
/** query params */
|
|
19
|
-
@tracked queryParams = [
|
|
19
|
+
@tracked queryParams = this.trailerActions.queryParamsFor([
|
|
20
20
|
'page',
|
|
21
21
|
'limit',
|
|
22
22
|
'sort',
|
|
@@ -42,7 +42,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
42
42
|
'last_online_at',
|
|
43
43
|
'created_at',
|
|
44
44
|
'updated_at',
|
|
45
|
-
];
|
|
45
|
+
]);
|
|
46
46
|
@tracked query = null;
|
|
47
47
|
@tracked page = 1;
|
|
48
48
|
@tracked limit;
|
|
@@ -75,16 +75,19 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
75
75
|
get actionButtons() {
|
|
76
76
|
return [
|
|
77
77
|
{
|
|
78
|
+
id: 'more',
|
|
78
79
|
component: 'dropdown-button',
|
|
79
80
|
icon: 'display',
|
|
80
81
|
size: 'xs',
|
|
81
82
|
items: [
|
|
82
83
|
{
|
|
84
|
+
id: 'table-view',
|
|
83
85
|
label: this.intl.t('common.table-view'),
|
|
84
86
|
icon: 'table-list',
|
|
85
87
|
onClick: () => this.setLayout('table'),
|
|
86
88
|
},
|
|
87
89
|
{
|
|
90
|
+
id: 'grid-view',
|
|
88
91
|
label: this.intl.t('common.grid-view'),
|
|
89
92
|
icon: 'grip',
|
|
90
93
|
onClick: () => this.setLayout('grid'),
|
|
@@ -94,11 +97,13 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
94
97
|
helpText: this.intl.t('common.change-layout'),
|
|
95
98
|
},
|
|
96
99
|
{
|
|
100
|
+
id: 'refresh',
|
|
97
101
|
icon: 'refresh',
|
|
98
102
|
onClick: this.trailerActions.refresh,
|
|
99
103
|
helpText: this.intl.t('common.refresh'),
|
|
100
104
|
},
|
|
101
105
|
{
|
|
106
|
+
id: 'create',
|
|
102
107
|
text: this.intl.t('common.new'),
|
|
103
108
|
type: 'primary',
|
|
104
109
|
icon: 'plus',
|
|
@@ -106,6 +111,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
106
111
|
permission: 'fleet-ops create trailer',
|
|
107
112
|
},
|
|
108
113
|
{
|
|
114
|
+
id: 'import',
|
|
109
115
|
text: this.intl.t('common.import'),
|
|
110
116
|
type: 'magic',
|
|
111
117
|
icon: 'upload',
|
|
@@ -113,6 +119,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
113
119
|
permission: 'fleet-ops import trailer',
|
|
114
120
|
},
|
|
115
121
|
{
|
|
122
|
+
id: 'export',
|
|
116
123
|
text: this.intl.t('common.export'),
|
|
117
124
|
icon: 'long-arrow-up',
|
|
118
125
|
iconClass: 'rotate-icon-45',
|
|
@@ -129,6 +136,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
129
136
|
|
|
130
137
|
return [
|
|
131
138
|
{
|
|
139
|
+
id: 'bulk-delete',
|
|
132
140
|
label: this.intl.t('common.delete-selected-count', { count: selected.length }),
|
|
133
141
|
class: 'text-red-500',
|
|
134
142
|
fn: this.trailerActions.bulkDelete,
|
|
@@ -161,6 +169,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
161
169
|
get columns() {
|
|
162
170
|
return [
|
|
163
171
|
{
|
|
172
|
+
id: 'display-name',
|
|
164
173
|
sticky: true,
|
|
165
174
|
label: this.intl.t('trailer.columns.name'),
|
|
166
175
|
valuePath: 'displayName',
|
|
@@ -175,6 +184,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
175
184
|
filterParam: 'name',
|
|
176
185
|
},
|
|
177
186
|
{
|
|
187
|
+
id: 'type',
|
|
178
188
|
label: this.intl.t('trailer.columns.type'),
|
|
179
189
|
valuePath: 'type',
|
|
180
190
|
cellComponent: 'cell/translated-value',
|
|
@@ -190,6 +200,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
190
200
|
width: 130,
|
|
191
201
|
},
|
|
192
202
|
{
|
|
203
|
+
id: 'plate-number',
|
|
193
204
|
label: this.intl.t('trailer.columns.plate-number'),
|
|
194
205
|
valuePath: 'plate_number',
|
|
195
206
|
cellComponent: 'table/cell/base',
|
|
@@ -201,6 +212,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
201
212
|
filterParam: 'plate_number',
|
|
202
213
|
},
|
|
203
214
|
{
|
|
215
|
+
id: 'code',
|
|
204
216
|
label: this.intl.t('trailer.columns.code'),
|
|
205
217
|
valuePath: 'code',
|
|
206
218
|
cellComponent: 'table/cell/base',
|
|
@@ -211,6 +223,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
211
223
|
filterParam: 'code',
|
|
212
224
|
},
|
|
213
225
|
{
|
|
226
|
+
id: 'current-vehicle-name',
|
|
214
227
|
label: this.intl.t('trailer.columns.vehicle'),
|
|
215
228
|
valuePath: 'current_vehicle_name',
|
|
216
229
|
cellComponent: 'cell/vehicle-identity',
|
|
@@ -232,6 +245,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
232
245
|
model: 'vehicle',
|
|
233
246
|
},
|
|
234
247
|
{
|
|
248
|
+
id: 'attachment-state',
|
|
235
249
|
label: this.intl.t('trailer.columns.attachment-state'),
|
|
236
250
|
valuePath: 'attachment_state',
|
|
237
251
|
cellComponent: 'cell/translated-value',
|
|
@@ -248,6 +262,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
248
262
|
width: 120,
|
|
249
263
|
},
|
|
250
264
|
{
|
|
265
|
+
id: 'status',
|
|
251
266
|
label: this.intl.t('trailer.columns.status'),
|
|
252
267
|
valuePath: 'status',
|
|
253
268
|
cellComponent: 'cell/translated-value',
|
|
@@ -264,6 +279,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
264
279
|
width: 120,
|
|
265
280
|
},
|
|
266
281
|
{
|
|
282
|
+
id: 'connectivity-status',
|
|
267
283
|
label: this.intl.t('trailer.columns.connectivity'),
|
|
268
284
|
valuePath: 'connectivity_status',
|
|
269
285
|
cellComponent: 'cell/translated-value',
|
|
@@ -279,6 +295,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
279
295
|
width: 140,
|
|
280
296
|
},
|
|
281
297
|
{
|
|
298
|
+
id: 'last-online-at',
|
|
282
299
|
label: this.intl.t('trailer.columns.last-online'),
|
|
283
300
|
valuePath: 'lastOnlineAt',
|
|
284
301
|
sortParam: 'last_online_at',
|
|
@@ -290,6 +307,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
290
307
|
filterComponent: 'filter/date',
|
|
291
308
|
},
|
|
292
309
|
{
|
|
310
|
+
id: 'location',
|
|
293
311
|
label: this.intl.t('trailer.columns.location'),
|
|
294
312
|
valuePath: 'location',
|
|
295
313
|
cellComponent: 'table/cell/point',
|
|
@@ -300,6 +318,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
300
318
|
sortable: false,
|
|
301
319
|
},
|
|
302
320
|
{
|
|
321
|
+
id: 'devices-count',
|
|
303
322
|
label: this.intl.t('trailer.columns.devices'),
|
|
304
323
|
valuePath: 'devices_count',
|
|
305
324
|
cellComponent: 'table/cell/base',
|
|
@@ -309,6 +328,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
309
328
|
width: 90,
|
|
310
329
|
},
|
|
311
330
|
{
|
|
331
|
+
id: 'equipment-count',
|
|
312
332
|
label: this.intl.t('trailer.columns.equipment'),
|
|
313
333
|
valuePath: 'equipment_count',
|
|
314
334
|
cellComponent: 'table/cell/base',
|
|
@@ -318,6 +338,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
318
338
|
width: 100,
|
|
319
339
|
},
|
|
320
340
|
{
|
|
341
|
+
id: 'public-id',
|
|
321
342
|
label: this.intl.t('trailer.columns.id'),
|
|
322
343
|
valuePath: 'public_id',
|
|
323
344
|
cellComponent: 'click-to-copy',
|
|
@@ -329,6 +350,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
329
350
|
filterParam: 'public_id',
|
|
330
351
|
},
|
|
331
352
|
{
|
|
353
|
+
id: 'vin',
|
|
332
354
|
label: this.intl.t('trailer.columns.vin'),
|
|
333
355
|
valuePath: 'vin',
|
|
334
356
|
cellComponent: 'table/cell/base',
|
|
@@ -340,6 +362,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
340
362
|
filterParam: 'vin',
|
|
341
363
|
},
|
|
342
364
|
{
|
|
365
|
+
id: 'serial-number',
|
|
343
366
|
label: this.intl.t('trailer.columns.serial-number'),
|
|
344
367
|
valuePath: 'serial_number',
|
|
345
368
|
cellComponent: 'table/cell/base',
|
|
@@ -351,6 +374,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
351
374
|
filterParam: 'serial_number',
|
|
352
375
|
},
|
|
353
376
|
{
|
|
377
|
+
id: 'make',
|
|
354
378
|
label: this.intl.t('trailer.columns.make'),
|
|
355
379
|
valuePath: 'make',
|
|
356
380
|
cellComponent: 'table/cell/base',
|
|
@@ -362,6 +386,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
362
386
|
filterParam: 'trailer_make',
|
|
363
387
|
},
|
|
364
388
|
{
|
|
389
|
+
id: 'model',
|
|
365
390
|
label: this.intl.t('trailer.columns.model'),
|
|
366
391
|
valuePath: 'model',
|
|
367
392
|
cellComponent: 'table/cell/base',
|
|
@@ -373,6 +398,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
373
398
|
filterParam: 'trailer_model',
|
|
374
399
|
},
|
|
375
400
|
{
|
|
401
|
+
id: 'year',
|
|
376
402
|
label: this.intl.t('trailer.columns.year'),
|
|
377
403
|
valuePath: 'year',
|
|
378
404
|
cellComponent: 'table/cell/base',
|
|
@@ -384,6 +410,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
384
410
|
filterParam: 'trailer_year',
|
|
385
411
|
},
|
|
386
412
|
{
|
|
413
|
+
id: 'vendor-name',
|
|
387
414
|
label: this.intl.t('trailer.columns.vendor'),
|
|
388
415
|
valuePath: 'vendor_name',
|
|
389
416
|
cellComponent: 'cell/vendor-identity',
|
|
@@ -401,6 +428,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
401
428
|
model: 'vendor',
|
|
402
429
|
},
|
|
403
430
|
{
|
|
431
|
+
id: 'ownership-type',
|
|
404
432
|
label: this.intl.t('trailer.columns.ownership'),
|
|
405
433
|
valuePath: 'ownership_type',
|
|
406
434
|
cellComponent: 'cell/translated-value',
|
|
@@ -416,6 +444,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
416
444
|
filterOptionValue: 'value',
|
|
417
445
|
},
|
|
418
446
|
{
|
|
447
|
+
id: 'axle-count',
|
|
419
448
|
label: this.intl.t('trailer.columns.axles'),
|
|
420
449
|
valuePath: 'axle_count',
|
|
421
450
|
cellComponent: 'table/cell/base',
|
|
@@ -426,6 +455,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
426
455
|
width: 90,
|
|
427
456
|
},
|
|
428
457
|
{
|
|
458
|
+
id: 'gvwr',
|
|
429
459
|
label: this.intl.t('trailer.columns.gvwr'),
|
|
430
460
|
valuePath: 'gvwr',
|
|
431
461
|
cellComponent: 'table/cell/base',
|
|
@@ -435,6 +465,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
435
465
|
filterable: false,
|
|
436
466
|
},
|
|
437
467
|
{
|
|
468
|
+
id: 'payload-capacity',
|
|
438
469
|
label: this.intl.t('trailer.columns.payload-capacity'),
|
|
439
470
|
valuePath: 'payload_capacity',
|
|
440
471
|
cellComponent: 'table/cell/base',
|
|
@@ -444,6 +475,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
444
475
|
filterable: false,
|
|
445
476
|
},
|
|
446
477
|
{
|
|
478
|
+
id: 'length',
|
|
447
479
|
label: this.intl.t('trailer.columns.length'),
|
|
448
480
|
valuePath: 'length',
|
|
449
481
|
cellComponent: 'table/cell/base',
|
|
@@ -453,6 +485,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
453
485
|
filterable: false,
|
|
454
486
|
},
|
|
455
487
|
{
|
|
488
|
+
id: 'created-at',
|
|
456
489
|
label: this.intl.t('trailer.columns.created-at'),
|
|
457
490
|
valuePath: 'createdAt',
|
|
458
491
|
sortParam: 'created_at',
|
|
@@ -464,6 +497,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
464
497
|
filterComponent: 'filter/date',
|
|
465
498
|
},
|
|
466
499
|
{
|
|
500
|
+
id: 'updated-at',
|
|
467
501
|
label: this.intl.t('trailer.columns.updated-at'),
|
|
468
502
|
valuePath: 'updatedAt',
|
|
469
503
|
sortParam: 'updated_at',
|
|
@@ -476,6 +510,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
476
510
|
filterComponent: 'filter/date',
|
|
477
511
|
},
|
|
478
512
|
{
|
|
513
|
+
id: 'row-actions',
|
|
479
514
|
label: '',
|
|
480
515
|
cellComponent: 'table/cell/dropdown',
|
|
481
516
|
ddButtonText: false,
|
|
@@ -488,16 +523,19 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
488
523
|
width: 60,
|
|
489
524
|
actions: [
|
|
490
525
|
{
|
|
526
|
+
id: 'view',
|
|
491
527
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.trailer') }),
|
|
492
528
|
fn: this.trailerActions.transition.view,
|
|
493
529
|
permission: 'fleet-ops view trailer',
|
|
494
530
|
},
|
|
495
531
|
{
|
|
532
|
+
id: 'edit',
|
|
496
533
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.trailer') }),
|
|
497
534
|
fn: this.trailerActions.transition.edit,
|
|
498
535
|
permission: 'fleet-ops update trailer',
|
|
499
536
|
},
|
|
500
537
|
{
|
|
538
|
+
id: 'locate',
|
|
501
539
|
label: this.intl.t('trailer.actions.locate'),
|
|
502
540
|
fn: this.trailerActions.locate,
|
|
503
541
|
permission: 'fleet-ops view trailer',
|
|
@@ -507,23 +545,27 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
507
545
|
separator: true,
|
|
508
546
|
},
|
|
509
547
|
{
|
|
548
|
+
id: 'attach-vehicle',
|
|
510
549
|
label: this.intl.t('trailer.actions.attach-vehicle'),
|
|
511
550
|
fn: this.trailerActions.attachVehicle,
|
|
512
551
|
permission: 'fleet-ops attach-vehicle-for trailer',
|
|
513
552
|
isVisible: (trailer) => trailer.attachment_state !== 'attached',
|
|
514
553
|
},
|
|
515
554
|
{
|
|
555
|
+
id: 'detach-vehicle',
|
|
516
556
|
label: this.intl.t('trailer.actions.detach-vehicle'),
|
|
517
557
|
fn: this.trailerActions.detachVehicle,
|
|
518
558
|
permission: 'fleet-ops detach-vehicle-for trailer',
|
|
519
559
|
isVisible: (trailer) => trailer.attachment_state === 'attached',
|
|
520
560
|
},
|
|
521
561
|
{
|
|
562
|
+
id: 'attach-device',
|
|
522
563
|
label: this.intl.t('trailer.actions.attach-device'),
|
|
523
564
|
fn: this.trailerActions.attachDevice,
|
|
524
565
|
permission: 'fleet-ops attach-device-for trailer',
|
|
525
566
|
},
|
|
526
567
|
{
|
|
568
|
+
id: 'attach-equipment',
|
|
527
569
|
label: this.intl.t('trailer.actions.attach-equipment'),
|
|
528
570
|
fn: this.trailerActions.attachEquipment,
|
|
529
571
|
permission: 'fleet-ops attach-equipment-for trailer',
|
|
@@ -532,16 +574,19 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
532
574
|
separator: true,
|
|
533
575
|
},
|
|
534
576
|
{
|
|
577
|
+
id: 'schedule-maintenance',
|
|
535
578
|
label: this.intl.t('trailer.actions.schedule-maintenance'),
|
|
536
579
|
fn: this.trailerActions.scheduleMaintenance,
|
|
537
580
|
permission: 'fleet-ops create maintenance-schedule',
|
|
538
581
|
},
|
|
539
582
|
{
|
|
583
|
+
id: 'create-work-order',
|
|
540
584
|
label: this.intl.t('trailer.actions.create-work-order'),
|
|
541
585
|
fn: this.trailerActions.createWorkOrder,
|
|
542
586
|
permission: 'fleet-ops create work-order',
|
|
543
587
|
},
|
|
544
588
|
{
|
|
589
|
+
id: 'log-maintenance',
|
|
545
590
|
label: this.intl.t('trailer.actions.log-maintenance'),
|
|
546
591
|
fn: this.trailerActions.logMaintenance,
|
|
547
592
|
permission: 'fleet-ops create maintenance',
|
|
@@ -550,6 +595,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
550
595
|
separator: true,
|
|
551
596
|
},
|
|
552
597
|
{
|
|
598
|
+
id: 'delete',
|
|
553
599
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.trailer') }),
|
|
554
600
|
fn: this.trailerActions.delete,
|
|
555
601
|
permission: 'fleet-ops delete trailer',
|
|
@@ -562,6 +608,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
562
608
|
searchable: false,
|
|
563
609
|
},
|
|
564
610
|
{
|
|
611
|
+
id: 'devices',
|
|
565
612
|
label: this.intl.t('resource.devices'),
|
|
566
613
|
valuePath: 'devices',
|
|
567
614
|
cellComponent: 'cell/resource-list',
|
|
@@ -575,6 +622,7 @@ export default class ManagementTrailersIndexController extends Controller {
|
|
|
575
622
|
modelNamePath: 'displayName',
|
|
576
623
|
},
|
|
577
624
|
{
|
|
625
|
+
id: 'refrigerated',
|
|
578
626
|
label: this.intl.t('trailer.columns.refrigerated'),
|
|
579
627
|
valuePath: 'refrigerated',
|
|
580
628
|
cellComponent: 'table/cell/checkbox',
|
|
@@ -16,7 +16,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
16
16
|
@service appCache;
|
|
17
17
|
|
|
18
18
|
/** query params */
|
|
19
|
-
@tracked queryParams = [
|
|
19
|
+
@tracked queryParams = this.vehicleActions.queryParamsFor([
|
|
20
20
|
'page',
|
|
21
21
|
'limit',
|
|
22
22
|
'sort',
|
|
@@ -38,7 +38,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
38
38
|
'has_trailer',
|
|
39
39
|
'has_driver',
|
|
40
40
|
'has_device',
|
|
41
|
-
];
|
|
41
|
+
]);
|
|
42
42
|
@tracked query = null;
|
|
43
43
|
@tracked page = 1;
|
|
44
44
|
@tracked limit;
|
|
@@ -68,6 +68,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
68
68
|
get actionButtons() {
|
|
69
69
|
return [
|
|
70
70
|
{
|
|
71
|
+
id: 'more',
|
|
71
72
|
component: 'dropdown-button',
|
|
72
73
|
icon: 'display',
|
|
73
74
|
size: 'xs',
|
|
@@ -93,11 +94,13 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
93
94
|
helpText: 'Change the layout',
|
|
94
95
|
},
|
|
95
96
|
{
|
|
97
|
+
id: 'refresh',
|
|
96
98
|
icon: 'refresh',
|
|
97
99
|
onClick: this.vehicleActions.refresh,
|
|
98
100
|
helpText: this.intl.t('common.refresh'),
|
|
99
101
|
},
|
|
100
102
|
{
|
|
103
|
+
id: 'create',
|
|
101
104
|
text: this.intl.t('common.new'),
|
|
102
105
|
type: 'primary',
|
|
103
106
|
icon: 'plus',
|
|
@@ -105,6 +108,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
105
108
|
permission: 'fleet-ops create vehicle',
|
|
106
109
|
},
|
|
107
110
|
{
|
|
111
|
+
id: 'import',
|
|
108
112
|
text: this.intl.t('common.import'),
|
|
109
113
|
type: 'magic',
|
|
110
114
|
icon: 'upload',
|
|
@@ -112,6 +116,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
112
116
|
permission: 'fleet-ops import vehicle',
|
|
113
117
|
},
|
|
114
118
|
{
|
|
119
|
+
id: 'export',
|
|
115
120
|
text: this.intl.t('common.export'),
|
|
116
121
|
icon: 'long-arrow-up',
|
|
117
122
|
iconClass: 'rotate-icon-45',
|
|
@@ -128,6 +133,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
128
133
|
|
|
129
134
|
return [
|
|
130
135
|
{
|
|
136
|
+
id: 'bulk-delete',
|
|
131
137
|
label: this.intl.t('common.delete-selected-count', { count: selected.length }),
|
|
132
138
|
class: 'text-red-500',
|
|
133
139
|
fn: this.vehicleActions.bulkDelete,
|
|
@@ -151,6 +157,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
151
157
|
get columns() {
|
|
152
158
|
return [
|
|
153
159
|
{
|
|
160
|
+
id: 'display-name',
|
|
154
161
|
sticky: true,
|
|
155
162
|
label: this.intl.t('column.name'),
|
|
156
163
|
valuePath: 'displayName',
|
|
@@ -165,6 +172,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
165
172
|
filterParam: 'name',
|
|
166
173
|
},
|
|
167
174
|
{
|
|
175
|
+
id: 'plate-number',
|
|
168
176
|
label: this.intl.t('column.plate-number'),
|
|
169
177
|
valuePath: 'plate_number',
|
|
170
178
|
cellComponent: 'table/cell/base',
|
|
@@ -176,6 +184,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
176
184
|
filterParam: 'plate_number',
|
|
177
185
|
},
|
|
178
186
|
{
|
|
187
|
+
id: 'internal-id',
|
|
179
188
|
label: this.intl.t('column.internal-id'),
|
|
180
189
|
valuePath: 'internal_id',
|
|
181
190
|
cellComponent: 'table/cell/base',
|
|
@@ -188,6 +197,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
188
197
|
filterParam: 'internal_id',
|
|
189
198
|
},
|
|
190
199
|
{
|
|
200
|
+
id: 'driver-name',
|
|
191
201
|
label: this.intl.t('column.driver-assigned'),
|
|
192
202
|
cellComponent: 'cell/driver-identity',
|
|
193
203
|
permission: 'fleet-ops view driver',
|
|
@@ -203,6 +213,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
203
213
|
model: 'driver',
|
|
204
214
|
},
|
|
205
215
|
{
|
|
216
|
+
id: 'trailers',
|
|
206
217
|
label: this.intl.t('resource.trailers'),
|
|
207
218
|
valuePath: 'trailers',
|
|
208
219
|
cellComponent: 'cell/resource-list',
|
|
@@ -216,6 +227,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
216
227
|
modelNamePath: 'displayName',
|
|
217
228
|
},
|
|
218
229
|
{
|
|
230
|
+
id: 'devices',
|
|
219
231
|
label: this.intl.t('resource.devices'),
|
|
220
232
|
valuePath: 'devices',
|
|
221
233
|
cellComponent: 'cell/resource-list',
|
|
@@ -229,6 +241,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
229
241
|
modelNamePath: 'displayName',
|
|
230
242
|
},
|
|
231
243
|
{
|
|
244
|
+
id: 'public-id',
|
|
232
245
|
label: this.intl.t('column.id'),
|
|
233
246
|
valuePath: 'public_id',
|
|
234
247
|
cellComponent: 'click-to-copy',
|
|
@@ -238,6 +251,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
238
251
|
filterComponent: 'filter/string',
|
|
239
252
|
},
|
|
240
253
|
{
|
|
254
|
+
id: 'make',
|
|
241
255
|
label: this.intl.t('column.make'),
|
|
242
256
|
valuePath: 'make',
|
|
243
257
|
cellComponent: 'table/cell/base',
|
|
@@ -249,6 +263,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
249
263
|
filterComponent: 'filter/string',
|
|
250
264
|
},
|
|
251
265
|
{
|
|
266
|
+
id: 'model',
|
|
252
267
|
label: this.intl.t('column.model'),
|
|
253
268
|
valuePath: 'model',
|
|
254
269
|
cellComponent: 'table/cell/base',
|
|
@@ -260,6 +275,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
260
275
|
filterComponent: 'filter/string',
|
|
261
276
|
},
|
|
262
277
|
{
|
|
278
|
+
id: 'year',
|
|
263
279
|
label: this.intl.t('column.year'),
|
|
264
280
|
valuePath: 'year',
|
|
265
281
|
cellComponent: 'table/cell/base',
|
|
@@ -270,6 +286,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
270
286
|
filterComponent: 'filter/string',
|
|
271
287
|
},
|
|
272
288
|
{
|
|
289
|
+
id: 'vendor-name',
|
|
273
290
|
label: this.intl.t('column.vendor'),
|
|
274
291
|
cellComponent: 'cell/vendor-identity',
|
|
275
292
|
permission: 'fleet-ops view vendor',
|
|
@@ -287,6 +304,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
287
304
|
model: 'vendor',
|
|
288
305
|
},
|
|
289
306
|
{
|
|
307
|
+
id: 'status',
|
|
290
308
|
label: this.intl.t('column.status'),
|
|
291
309
|
valuePath: 'status',
|
|
292
310
|
cellComponent: 'table/cell/status',
|
|
@@ -297,6 +315,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
297
315
|
filterFetchOptions: 'vehicles/statuses',
|
|
298
316
|
},
|
|
299
317
|
{
|
|
318
|
+
id: 'created-at',
|
|
300
319
|
label: this.intl.t('column.created-at'),
|
|
301
320
|
valuePath: 'createdAt',
|
|
302
321
|
sortParam: 'created_at',
|
|
@@ -308,6 +327,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
308
327
|
filterComponent: 'filter/date',
|
|
309
328
|
},
|
|
310
329
|
{
|
|
330
|
+
id: 'updated-at',
|
|
311
331
|
label: this.intl.t('column.updated-at'),
|
|
312
332
|
valuePath: 'updatedAt',
|
|
313
333
|
sortParam: 'updated_at',
|
|
@@ -351,6 +371,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
351
371
|
filterParam: 'has_device',
|
|
352
372
|
},
|
|
353
373
|
{
|
|
374
|
+
id: 'row-actions',
|
|
354
375
|
label: '',
|
|
355
376
|
cellComponent: 'table/cell/dropdown',
|
|
356
377
|
ddButtonText: false,
|
|
@@ -363,26 +384,31 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
363
384
|
width: 60,
|
|
364
385
|
actions: [
|
|
365
386
|
{
|
|
387
|
+
id: 'view',
|
|
366
388
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.vehicle') }),
|
|
367
389
|
fn: this.vehicleActions.transition.view,
|
|
368
390
|
permission: 'fleet-ops view vehicle',
|
|
369
391
|
},
|
|
370
392
|
{
|
|
393
|
+
id: 'edit',
|
|
371
394
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.vehicle') }),
|
|
372
395
|
fn: this.vehicleActions.transition.edit,
|
|
373
396
|
permission: 'fleet-ops update vehicle',
|
|
374
397
|
},
|
|
375
398
|
{
|
|
399
|
+
id: 'locate',
|
|
376
400
|
label: this.intl.t('vehicle.actions.locate-vehicle'),
|
|
377
401
|
fn: this.vehicleActions.locate,
|
|
378
402
|
permission: 'fleet-ops view vehicle',
|
|
379
403
|
},
|
|
380
404
|
{
|
|
405
|
+
id: 'attach-device',
|
|
381
406
|
label: this.intl.t('vehicle.actions.attach-device'),
|
|
382
407
|
fn: this.vehicleActions.attachDevice,
|
|
383
408
|
permission: 'fleet-ops update vehicle',
|
|
384
409
|
},
|
|
385
410
|
{
|
|
411
|
+
id: 'unassign-orders',
|
|
386
412
|
label: this.intl.t('vehicle.actions.unassign-orders'),
|
|
387
413
|
fn: this.vehicleActions.unassignOrders,
|
|
388
414
|
permission: 'fleet-ops update vehicle',
|
|
@@ -392,21 +418,25 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
392
418
|
separator: true,
|
|
393
419
|
},
|
|
394
420
|
{
|
|
421
|
+
id: 'schedule-maintenance',
|
|
395
422
|
label: this.intl.t('vehicle.actions.schedule-maintenance'),
|
|
396
423
|
fn: this.vehicleActions.scheduleMaintenance,
|
|
397
424
|
permission: 'fleet-ops create maintenance-schedule',
|
|
398
425
|
},
|
|
399
426
|
{
|
|
427
|
+
id: 'create-work-order',
|
|
400
428
|
label: this.intl.t('vehicle.actions.create-work-order'),
|
|
401
429
|
fn: this.vehicleActions.createWorkOrder,
|
|
402
430
|
permission: 'fleet-ops create work-order',
|
|
403
431
|
},
|
|
404
432
|
{
|
|
433
|
+
id: 'log-maintenance',
|
|
405
434
|
label: this.intl.t('vehicle.actions.log-maintenance'),
|
|
406
435
|
fn: this.vehicleActions.logMaintenance,
|
|
407
436
|
permission: 'fleet-ops create maintenance',
|
|
408
437
|
},
|
|
409
438
|
{
|
|
439
|
+
id: 'create-issue',
|
|
410
440
|
label: this.intl.t('vehicle.actions.create-issue'),
|
|
411
441
|
fn: this.createIssue,
|
|
412
442
|
permission: 'fleet-ops create issue',
|
|
@@ -415,6 +445,7 @@ export default class ManagementVehiclesIndexController extends Controller {
|
|
|
415
445
|
separator: true,
|
|
416
446
|
},
|
|
417
447
|
{
|
|
448
|
+
id: 'delete',
|
|
418
449
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.vehicle') }),
|
|
419
450
|
fn: this.vehicleActions.delete,
|
|
420
451
|
permission: 'fleet-ops delete vehicle',
|