@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
|
@@ -18,6 +18,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
18
18
|
get columns() {
|
|
19
19
|
return [
|
|
20
20
|
{
|
|
21
|
+
id: 'name',
|
|
21
22
|
sticky: true,
|
|
22
23
|
label: this.intl.t('column.name'),
|
|
23
24
|
valuePath: 'name',
|
|
@@ -31,6 +32,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
31
32
|
filterComponent: 'filter/string',
|
|
32
33
|
},
|
|
33
34
|
{
|
|
35
|
+
id: 'public-id',
|
|
34
36
|
label: this.intl.t('column.id'),
|
|
35
37
|
valuePath: 'public_id',
|
|
36
38
|
cellComponent: 'click-to-copy',
|
|
@@ -41,6 +43,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
41
43
|
filterComponent: 'filter/string',
|
|
42
44
|
},
|
|
43
45
|
{
|
|
46
|
+
id: 'internal-id',
|
|
44
47
|
label: this.intl.t('column.internal-id'),
|
|
45
48
|
valuePath: 'internal_id',
|
|
46
49
|
cellComponent: 'click-to-copy',
|
|
@@ -51,6 +54,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
51
54
|
filterComponent: 'filter/string',
|
|
52
55
|
},
|
|
53
56
|
{
|
|
57
|
+
id: 'title',
|
|
54
58
|
label: this.intl.t('column.title'),
|
|
55
59
|
valuePath: 'title',
|
|
56
60
|
cellComponent: 'click-to-copy',
|
|
@@ -62,6 +66,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
62
66
|
filterComponent: 'filter/string',
|
|
63
67
|
},
|
|
64
68
|
{
|
|
69
|
+
id: 'email',
|
|
65
70
|
label: this.intl.t('column.email'),
|
|
66
71
|
valuePath: 'email',
|
|
67
72
|
cellComponent: 'click-to-copy',
|
|
@@ -72,6 +77,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
72
77
|
filterComponent: 'filter/string',
|
|
73
78
|
},
|
|
74
79
|
{
|
|
80
|
+
id: 'phone',
|
|
75
81
|
label: this.intl.t('column.phone'),
|
|
76
82
|
valuePath: 'phone',
|
|
77
83
|
cellComponent: 'click-to-copy',
|
|
@@ -82,6 +88,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
82
88
|
filterComponent: 'filter/string',
|
|
83
89
|
},
|
|
84
90
|
{
|
|
91
|
+
id: 'address',
|
|
85
92
|
label: this.intl.t('column.address'),
|
|
86
93
|
valuePath: 'address',
|
|
87
94
|
cellComponent: 'cell/place-identity',
|
|
@@ -94,6 +101,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
94
101
|
filterComponent: 'filter/string',
|
|
95
102
|
},
|
|
96
103
|
{
|
|
104
|
+
id: 'created-at',
|
|
97
105
|
label: this.intl.t('column.created'),
|
|
98
106
|
valuePath: 'createdAt',
|
|
99
107
|
sortParam: 'created_at',
|
|
@@ -104,6 +112,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
104
112
|
filterComponent: 'filter/date',
|
|
105
113
|
},
|
|
106
114
|
{
|
|
115
|
+
id: 'updated-at',
|
|
107
116
|
label: this.intl.t('column.updated'),
|
|
108
117
|
valuePath: 'updatedAt',
|
|
109
118
|
sortParam: 'updated_at',
|
|
@@ -115,6 +124,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
115
124
|
filterComponent: 'filter/date',
|
|
116
125
|
},
|
|
117
126
|
{
|
|
127
|
+
id: 'row-actions',
|
|
118
128
|
label: '',
|
|
119
129
|
cellComponent: 'table/cell/dropdown',
|
|
120
130
|
ddButtonText: false,
|
|
@@ -127,12 +137,14 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
127
137
|
width: 60,
|
|
128
138
|
actions: [
|
|
129
139
|
{
|
|
140
|
+
id: 'view',
|
|
130
141
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.customer') }),
|
|
131
142
|
icon: 'eye',
|
|
132
143
|
fn: this.customerActions.transition.view,
|
|
133
144
|
permission: 'fleet-ops view contact',
|
|
134
145
|
},
|
|
135
146
|
{
|
|
147
|
+
id: 'edit',
|
|
136
148
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.customer') }),
|
|
137
149
|
icon: 'pencil',
|
|
138
150
|
fn: this.customerActions.transition.edit,
|
|
@@ -146,6 +158,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
|
|
|
146
158
|
separator: true,
|
|
147
159
|
},
|
|
148
160
|
{
|
|
161
|
+
id: 'delete',
|
|
149
162
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.customer') }),
|
|
150
163
|
icon: 'trash',
|
|
151
164
|
fn: this.customerActions.delete,
|
|
@@ -12,7 +12,28 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
12
12
|
@service appCache;
|
|
13
13
|
|
|
14
14
|
/** query params */
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* This tab's table registry, e.g. `fleet-ops:contact:table`. The contacts
|
|
17
|
+
* header (`management/contacts.hbs`) renders for whichever tab is open.
|
|
18
|
+
*/
|
|
19
|
+
get tableRegistry() {
|
|
20
|
+
return this.contactActions.tableRegistry;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@tracked queryParams = this.contactActions.queryParamsFor([
|
|
24
|
+
'page',
|
|
25
|
+
'limit',
|
|
26
|
+
'sort',
|
|
27
|
+
'query',
|
|
28
|
+
'public_id',
|
|
29
|
+
'internal_id',
|
|
30
|
+
'created_by',
|
|
31
|
+
'updated_by',
|
|
32
|
+
'status',
|
|
33
|
+
'title',
|
|
34
|
+
'email',
|
|
35
|
+
'phone',
|
|
36
|
+
]);
|
|
16
37
|
@tracked page = 1;
|
|
17
38
|
@tracked limit;
|
|
18
39
|
@tracked sort = '-created_at';
|
|
@@ -34,16 +55,19 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
34
55
|
get actionButtons() {
|
|
35
56
|
return [
|
|
36
57
|
{
|
|
58
|
+
id: 'more',
|
|
37
59
|
component: 'dropdown-button',
|
|
38
60
|
icon: 'display',
|
|
39
61
|
size: 'xs',
|
|
40
62
|
items: [
|
|
41
63
|
{
|
|
64
|
+
id: 'table-view',
|
|
42
65
|
label: this.intl.t('common.table-view'),
|
|
43
66
|
icon: 'table-list',
|
|
44
67
|
onClick: () => this.setLayout('table'),
|
|
45
68
|
},
|
|
46
69
|
{
|
|
70
|
+
id: 'grid-view',
|
|
47
71
|
label: this.intl.t('common.grid-view'),
|
|
48
72
|
icon: 'grip',
|
|
49
73
|
onClick: () => this.setLayout('grid'),
|
|
@@ -53,11 +77,13 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
53
77
|
helpText: this.intl.t('common.change-layout'),
|
|
54
78
|
},
|
|
55
79
|
{
|
|
80
|
+
id: 'refresh',
|
|
56
81
|
icon: 'refresh',
|
|
57
82
|
onClick: this.contactActions.refresh,
|
|
58
83
|
helpText: this.intl.t('common.refresh'),
|
|
59
84
|
},
|
|
60
85
|
{
|
|
86
|
+
id: 'create',
|
|
61
87
|
text: this.intl.t('common.new'),
|
|
62
88
|
type: 'primary',
|
|
63
89
|
icon: 'plus',
|
|
@@ -65,6 +91,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
65
91
|
permission: 'fleet-ops create contact',
|
|
66
92
|
},
|
|
67
93
|
{
|
|
94
|
+
id: 'import',
|
|
68
95
|
text: this.intl.t('common.import'),
|
|
69
96
|
type: 'magic',
|
|
70
97
|
icon: 'upload',
|
|
@@ -72,6 +99,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
72
99
|
permission: 'fleet-ops import contact',
|
|
73
100
|
},
|
|
74
101
|
{
|
|
102
|
+
id: 'export',
|
|
75
103
|
text: this.intl.t('common.export'),
|
|
76
104
|
icon: 'long-arrow-up',
|
|
77
105
|
iconClass: 'rotate-icon-45',
|
|
@@ -88,6 +116,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
88
116
|
|
|
89
117
|
return [
|
|
90
118
|
{
|
|
119
|
+
id: 'bulk-delete',
|
|
91
120
|
label: this.intl.t('common.delete-selected-count', { count: selected.length }),
|
|
92
121
|
class: 'text-red-500',
|
|
93
122
|
fn: this.contactActions.bulkDelete,
|
|
@@ -100,6 +129,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
100
129
|
get columns() {
|
|
101
130
|
return [
|
|
102
131
|
{
|
|
132
|
+
id: 'name',
|
|
103
133
|
sticky: true,
|
|
104
134
|
label: this.intl.t('column.name'),
|
|
105
135
|
valuePath: 'name',
|
|
@@ -112,6 +142,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
112
142
|
filterComponent: 'filter/string',
|
|
113
143
|
},
|
|
114
144
|
{
|
|
145
|
+
id: 'public-id',
|
|
115
146
|
label: this.intl.t('column.id'),
|
|
116
147
|
valuePath: 'public_id',
|
|
117
148
|
cellComponent: 'click-to-copy',
|
|
@@ -121,6 +152,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
121
152
|
filterComponent: 'filter/string',
|
|
122
153
|
},
|
|
123
154
|
{
|
|
155
|
+
id: 'internal-id',
|
|
124
156
|
label: this.intl.t('column.internal-id'),
|
|
125
157
|
valuePath: 'internal_id',
|
|
126
158
|
cellComponent: 'click-to-copy',
|
|
@@ -130,6 +162,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
130
162
|
filterComponent: 'filter/string',
|
|
131
163
|
},
|
|
132
164
|
{
|
|
165
|
+
id: 'title',
|
|
133
166
|
label: this.intl.t('column.title'),
|
|
134
167
|
valuePath: 'title',
|
|
135
168
|
cellComponent: 'click-to-copy',
|
|
@@ -140,6 +173,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
140
173
|
filterComponent: 'filter/string',
|
|
141
174
|
},
|
|
142
175
|
{
|
|
176
|
+
id: 'email',
|
|
143
177
|
label: this.intl.t('column.email'),
|
|
144
178
|
valuePath: 'email',
|
|
145
179
|
cellComponent: 'click-to-copy',
|
|
@@ -149,6 +183,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
149
183
|
filterComponent: 'filter/string',
|
|
150
184
|
},
|
|
151
185
|
{
|
|
186
|
+
id: 'phone',
|
|
152
187
|
label: this.intl.t('column.phone'),
|
|
153
188
|
valuePath: 'phone',
|
|
154
189
|
cellComponent: 'click-to-copy',
|
|
@@ -158,6 +193,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
158
193
|
filterComponent: 'filter/string',
|
|
159
194
|
},
|
|
160
195
|
{
|
|
196
|
+
id: 'address',
|
|
161
197
|
label: this.intl.t('column.address'),
|
|
162
198
|
valuePath: 'address',
|
|
163
199
|
cellComponent: 'cell/place-identity',
|
|
@@ -170,6 +206,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
170
206
|
filterComponent: 'filter/string',
|
|
171
207
|
},
|
|
172
208
|
{
|
|
209
|
+
id: 'created-at',
|
|
173
210
|
label: this.intl.t('column.created'),
|
|
174
211
|
valuePath: 'createdAt',
|
|
175
212
|
sortParam: 'created_at',
|
|
@@ -179,6 +216,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
179
216
|
filterComponent: 'filter/date',
|
|
180
217
|
},
|
|
181
218
|
{
|
|
219
|
+
id: 'updated-at',
|
|
182
220
|
label: this.intl.t('column.updated'),
|
|
183
221
|
valuePath: 'updatedAt',
|
|
184
222
|
sortParam: 'updated_at',
|
|
@@ -189,6 +227,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
189
227
|
filterComponent: 'filter/date',
|
|
190
228
|
},
|
|
191
229
|
{
|
|
230
|
+
id: 'row-actions',
|
|
192
231
|
label: '',
|
|
193
232
|
cellComponent: 'table/cell/dropdown',
|
|
194
233
|
ddButtonText: false,
|
|
@@ -201,12 +240,14 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
201
240
|
width: 60,
|
|
202
241
|
actions: [
|
|
203
242
|
{
|
|
243
|
+
id: 'view',
|
|
204
244
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.contact') }),
|
|
205
245
|
icon: 'eye',
|
|
206
246
|
fn: this.contactActions.transition.view,
|
|
207
247
|
permission: 'fleet-ops view contact',
|
|
208
248
|
},
|
|
209
249
|
{
|
|
250
|
+
id: 'edit',
|
|
210
251
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.contact') }),
|
|
211
252
|
icon: 'pencil',
|
|
212
253
|
fn: this.contactActions.transition.edit,
|
|
@@ -220,6 +261,7 @@ export default class ManagementContactsIndexController extends Controller {
|
|
|
220
261
|
separator: true,
|
|
221
262
|
},
|
|
222
263
|
{
|
|
264
|
+
id: 'delete',
|
|
223
265
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.contact') }),
|
|
224
266
|
icon: 'trash',
|
|
225
267
|
fn: this.contactActions.delete,
|
|
@@ -17,7 +17,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
17
17
|
@service appCache;
|
|
18
18
|
|
|
19
19
|
/** query params */
|
|
20
|
-
@tracked queryParams = [
|
|
20
|
+
@tracked queryParams = this.driverActions.queryParamsFor([
|
|
21
21
|
'page',
|
|
22
22
|
'limit',
|
|
23
23
|
'sort',
|
|
@@ -34,7 +34,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
34
34
|
'created_at',
|
|
35
35
|
'updated_at',
|
|
36
36
|
'status',
|
|
37
|
-
];
|
|
37
|
+
]);
|
|
38
38
|
@tracked page = 1;
|
|
39
39
|
@tracked limit;
|
|
40
40
|
@tracked sort = '-created_at';
|
|
@@ -75,16 +75,19 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
75
75
|
get actionButtons() {
|
|
76
76
|
return [
|
|
77
77
|
{
|
|
78
|
+
id: 'more',
|
|
78
79
|
component: 'dropdown-button',
|
|
79
80
|
icon: 'display',
|
|
80
81
|
size: 'xs',
|
|
81
82
|
items: [
|
|
82
83
|
{
|
|
84
|
+
id: 'table-view',
|
|
83
85
|
label: this.intl.t('common.table-view'),
|
|
84
86
|
icon: 'table-list',
|
|
85
87
|
onClick: () => this.changeLayout('table'),
|
|
86
88
|
},
|
|
87
89
|
{
|
|
90
|
+
id: 'grid-view',
|
|
88
91
|
label: this.intl.t('common.grid-view'),
|
|
89
92
|
icon: 'grip',
|
|
90
93
|
onClick: () => this.changeLayout('grid'),
|
|
@@ -94,11 +97,13 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
94
97
|
helpText: 'Change the layout',
|
|
95
98
|
},
|
|
96
99
|
{
|
|
100
|
+
id: 'refresh',
|
|
97
101
|
icon: 'refresh',
|
|
98
102
|
onClick: this.driverActions.refresh,
|
|
99
103
|
helpText: this.intl.t('common.refresh'),
|
|
100
104
|
},
|
|
101
105
|
{
|
|
106
|
+
id: 'create',
|
|
102
107
|
text: this.intl.t('common.new'),
|
|
103
108
|
type: 'primary',
|
|
104
109
|
icon: 'plus',
|
|
@@ -106,6 +111,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
106
111
|
permission: 'fleet-ops create driver',
|
|
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 ManagementDriversIndexController extends Controller {
|
|
|
113
119
|
permission: 'fleet-ops import driver',
|
|
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 ManagementDriversIndexController 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.driverActions.bulkDelete,
|
|
@@ -141,6 +149,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
141
149
|
get columns() {
|
|
142
150
|
return [
|
|
143
151
|
{
|
|
152
|
+
id: 'name',
|
|
144
153
|
sticky: true,
|
|
145
154
|
label: this.intl.t('column.name'),
|
|
146
155
|
valuePath: 'name',
|
|
@@ -153,6 +162,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
153
162
|
filterComponent: 'filter/string',
|
|
154
163
|
},
|
|
155
164
|
{
|
|
165
|
+
id: 'public-id',
|
|
156
166
|
label: this.intl.t('column.id'),
|
|
157
167
|
valuePath: 'public_id',
|
|
158
168
|
cellComponent: 'click-to-copy',
|
|
@@ -163,6 +173,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
163
173
|
filterComponent: 'filter/string',
|
|
164
174
|
},
|
|
165
175
|
{
|
|
176
|
+
id: 'phone',
|
|
166
177
|
label: this.intl.t('column.phone'),
|
|
167
178
|
valuePath: 'phone',
|
|
168
179
|
cellComponent: 'table/cell/base',
|
|
@@ -173,6 +184,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
173
184
|
filterComponent: 'filter/string',
|
|
174
185
|
},
|
|
175
186
|
{
|
|
187
|
+
id: 'drivers-license-number',
|
|
176
188
|
label: this.intl.t('column.license'),
|
|
177
189
|
valuePath: 'drivers_license_number',
|
|
178
190
|
cellComponent: 'table/cell/base',
|
|
@@ -182,6 +194,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
182
194
|
filterComponent: 'filter/string',
|
|
183
195
|
},
|
|
184
196
|
{
|
|
197
|
+
id: 'vehicle-display-name',
|
|
185
198
|
label: this.intl.t('column.vehicle'),
|
|
186
199
|
cellComponent: 'cell/vehicle-identity',
|
|
187
200
|
permission: 'fleet-ops view vehicle',
|
|
@@ -206,6 +219,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
206
219
|
model: 'vehicle',
|
|
207
220
|
},
|
|
208
221
|
{
|
|
222
|
+
id: 'internal-id',
|
|
209
223
|
label: this.intl.t('column.internal-id'),
|
|
210
224
|
valuePath: 'internal_id',
|
|
211
225
|
cellComponent: 'click-to-copy',
|
|
@@ -215,6 +229,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
215
229
|
filterComponent: 'filter/string',
|
|
216
230
|
},
|
|
217
231
|
{
|
|
232
|
+
id: 'vendor-name',
|
|
218
233
|
label: this.intl.t('column.vendor'),
|
|
219
234
|
cellComponent: 'cell/vendor-identity',
|
|
220
235
|
permission: 'fleet-ops view vendor',
|
|
@@ -233,6 +248,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
233
248
|
model: 'vendor',
|
|
234
249
|
},
|
|
235
250
|
{
|
|
251
|
+
id: 'fleets',
|
|
236
252
|
label: this.intl.t('column.fleet'),
|
|
237
253
|
cellComponent: 'table/cell/link-list',
|
|
238
254
|
cellComponentLabelPath: 'name',
|
|
@@ -247,6 +263,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
247
263
|
model: 'fleet',
|
|
248
264
|
},
|
|
249
265
|
{
|
|
266
|
+
id: 'country',
|
|
250
267
|
label: this.intl.t('column.country'),
|
|
251
268
|
valuePath: 'country',
|
|
252
269
|
cellComponent: 'table/cell/country',
|
|
@@ -264,6 +281,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
264
281
|
multiOptionSearchPlaceholder: this.intl.t('common.search-countries'),
|
|
265
282
|
},
|
|
266
283
|
{
|
|
284
|
+
id: 'status',
|
|
267
285
|
label: this.intl.t('column.status'),
|
|
268
286
|
valuePath: 'status',
|
|
269
287
|
cellComponent: 'table/cell/status',
|
|
@@ -274,6 +292,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
274
292
|
filterFetchOptions: 'drivers/statuses',
|
|
275
293
|
},
|
|
276
294
|
{
|
|
295
|
+
id: 'created-at',
|
|
277
296
|
label: this.intl.t('column.created-at'),
|
|
278
297
|
valuePath: 'createdAt',
|
|
279
298
|
sortParam: 'created_at',
|
|
@@ -284,6 +303,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
284
303
|
filterComponent: 'filter/date',
|
|
285
304
|
},
|
|
286
305
|
{
|
|
306
|
+
id: 'updated-at',
|
|
287
307
|
label: this.intl.t('column.updated-at'),
|
|
288
308
|
valuePath: 'updatedAt',
|
|
289
309
|
sortParam: 'updated_at',
|
|
@@ -295,6 +315,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
295
315
|
filterComponent: 'filter/date',
|
|
296
316
|
},
|
|
297
317
|
{
|
|
318
|
+
id: 'row-actions',
|
|
298
319
|
label: '',
|
|
299
320
|
cellComponent: 'table/cell/dropdown',
|
|
300
321
|
ddButtonText: false,
|
|
@@ -307,12 +328,14 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
307
328
|
width: 60,
|
|
308
329
|
actions: [
|
|
309
330
|
{
|
|
331
|
+
id: 'view',
|
|
310
332
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.driver') }),
|
|
311
333
|
icon: 'eye',
|
|
312
334
|
fn: this.driverActions.transition.view,
|
|
313
335
|
permission: 'fleet-ops view driver',
|
|
314
336
|
},
|
|
315
337
|
{
|
|
338
|
+
id: 'edit',
|
|
316
339
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.driver') }),
|
|
317
340
|
icon: 'pencil',
|
|
318
341
|
fn: this.driverActions.transition.edit,
|
|
@@ -322,18 +345,21 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
322
345
|
separator: true,
|
|
323
346
|
},
|
|
324
347
|
{
|
|
348
|
+
id: 'assign-order',
|
|
325
349
|
label: this.intl.t('driver.actions.assign-order'),
|
|
326
350
|
icon: 'clipboard-list',
|
|
327
351
|
fn: this.driverActions.assignOrder,
|
|
328
352
|
permission: 'fleet-ops assign-order-for driver',
|
|
329
353
|
},
|
|
330
354
|
{
|
|
355
|
+
id: 'assign-vehicle',
|
|
331
356
|
label: this.intl.t('driver.actions.assign-vehicle'),
|
|
332
357
|
icon: 'car',
|
|
333
358
|
fn: this.driverActions.assignVehicle,
|
|
334
359
|
permission: 'fleet-ops assign-vehicle-for driver',
|
|
335
360
|
},
|
|
336
361
|
{
|
|
362
|
+
id: 'unassign-orders',
|
|
337
363
|
label: this.intl.t('driver.actions.unassign-orders'),
|
|
338
364
|
icon: 'user-minus',
|
|
339
365
|
fn: this.driverActions.unassignOrders,
|
|
@@ -341,6 +367,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
341
367
|
isVisible: (driver) => Number(driver.assigned_orders_count) > 0,
|
|
342
368
|
},
|
|
343
369
|
{
|
|
370
|
+
id: 'unassign-vehicle',
|
|
344
371
|
label: this.intl.t('driver.actions.unassign-vehicle'),
|
|
345
372
|
icon: 'link-slash',
|
|
346
373
|
fn: this.driverActions.unassignVehicle,
|
|
@@ -348,12 +375,14 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
348
375
|
isVisible: (driver) => this.hasAssignedVehicle(driver),
|
|
349
376
|
},
|
|
350
377
|
{
|
|
378
|
+
id: 'locate',
|
|
351
379
|
label: this.intl.t('driver.actions.locate-driver'),
|
|
352
380
|
icon: 'location-dot',
|
|
353
381
|
fn: this.driverActions.locate,
|
|
354
382
|
permission: 'fleet-ops view driver',
|
|
355
383
|
},
|
|
356
384
|
{
|
|
385
|
+
id: 'create-issue',
|
|
357
386
|
label: this.intl.t('driver.actions.create-issue'),
|
|
358
387
|
icon: 'triangle-exclamation',
|
|
359
388
|
fn: this.createIssue,
|
|
@@ -367,6 +396,7 @@ export default class ManagementDriversIndexController extends Controller {
|
|
|
367
396
|
separator: true,
|
|
368
397
|
},
|
|
369
398
|
{
|
|
399
|
+
id: 'delete',
|
|
370
400
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.driver') }),
|
|
371
401
|
icon: 'trash',
|
|
372
402
|
fn: this.driverActions.delete,
|