@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
|
@@ -9,7 +9,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
9
9
|
@service intl;
|
|
10
10
|
|
|
11
11
|
/** query params */
|
|
12
|
-
@tracked queryParams = ['type', 'status', 'priority', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at'];
|
|
12
|
+
@tracked queryParams = this.maintenanceActions.queryParamsFor(['type', 'status', 'priority', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at']);
|
|
13
13
|
@tracked page = 1;
|
|
14
14
|
@tracked limit;
|
|
15
15
|
@tracked sort = '-created_at';
|
|
@@ -22,11 +22,13 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
22
22
|
get actionButtons() {
|
|
23
23
|
return [
|
|
24
24
|
{
|
|
25
|
+
id: 'refresh',
|
|
25
26
|
icon: 'refresh',
|
|
26
27
|
onClick: this.maintenanceActions.refresh,
|
|
27
28
|
helpText: this.intl.t('common.refresh'),
|
|
28
29
|
},
|
|
29
30
|
{
|
|
31
|
+
id: 'create',
|
|
30
32
|
text: this.intl.t('common.new'),
|
|
31
33
|
type: 'primary',
|
|
32
34
|
icon: 'plus',
|
|
@@ -34,6 +36,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
34
36
|
permission: 'fleet-ops create maintenance',
|
|
35
37
|
},
|
|
36
38
|
{
|
|
39
|
+
id: 'import',
|
|
37
40
|
text: this.intl.t('common.import'),
|
|
38
41
|
type: 'magic',
|
|
39
42
|
icon: 'upload',
|
|
@@ -41,6 +44,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
41
44
|
permission: 'fleet-ops import maintenance',
|
|
42
45
|
},
|
|
43
46
|
{
|
|
47
|
+
id: 'export',
|
|
44
48
|
text: this.intl.t('common.export'),
|
|
45
49
|
icon: 'long-arrow-up',
|
|
46
50
|
iconClass: 'rotate-icon-45',
|
|
@@ -55,6 +59,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
55
59
|
get bulkActions() {
|
|
56
60
|
return [
|
|
57
61
|
{
|
|
62
|
+
id: 'bulk-delete',
|
|
58
63
|
label: 'Delete selected...',
|
|
59
64
|
class: 'text-red-500',
|
|
60
65
|
fn: this.maintenanceActions.bulkDelete,
|
|
@@ -67,6 +72,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
67
72
|
get columns() {
|
|
68
73
|
return [
|
|
69
74
|
{
|
|
75
|
+
id: 'summary',
|
|
70
76
|
label: this.intl.t('column.summary'),
|
|
71
77
|
valuePath: 'summary',
|
|
72
78
|
cellComponent: 'table/cell/anchor',
|
|
@@ -80,6 +86,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
80
86
|
filterComponent: 'filter/string',
|
|
81
87
|
},
|
|
82
88
|
{
|
|
89
|
+
id: 'maintainable-name',
|
|
83
90
|
label: this.intl.t('column.asset'),
|
|
84
91
|
valuePath: 'maintainable.name',
|
|
85
92
|
cellComponent: 'cell/maintenance-subject-identity',
|
|
@@ -88,6 +95,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
88
95
|
sortable: true,
|
|
89
96
|
},
|
|
90
97
|
{
|
|
98
|
+
id: 'performed-by-name',
|
|
91
99
|
label: this.intl.t('column.performed-by'),
|
|
92
100
|
valuePath: 'performed_by.name',
|
|
93
101
|
cellComponent: 'cell/facilitator-identity',
|
|
@@ -96,6 +104,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
96
104
|
sortable: true,
|
|
97
105
|
},
|
|
98
106
|
{
|
|
107
|
+
id: 'type',
|
|
99
108
|
label: this.intl.t('column.type'),
|
|
100
109
|
valuePath: 'type',
|
|
101
110
|
cellComponent: 'table/cell/base',
|
|
@@ -107,6 +116,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
107
116
|
filterComponent: 'filter/string',
|
|
108
117
|
},
|
|
109
118
|
{
|
|
119
|
+
id: 'status',
|
|
110
120
|
label: this.intl.t('column.status'),
|
|
111
121
|
valuePath: 'status',
|
|
112
122
|
cellComponent: 'table/cell/status',
|
|
@@ -117,6 +127,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
117
127
|
filterComponent: 'filter/string',
|
|
118
128
|
},
|
|
119
129
|
{
|
|
130
|
+
id: 'priority',
|
|
120
131
|
label: this.intl.t('column.priority'),
|
|
121
132
|
valuePath: 'priority',
|
|
122
133
|
cellComponent: 'table/cell/base',
|
|
@@ -128,6 +139,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
128
139
|
filterComponent: 'filter/string',
|
|
129
140
|
},
|
|
130
141
|
{
|
|
142
|
+
id: 'scheduled-at',
|
|
131
143
|
label: this.intl.t('column.scheduled-at'),
|
|
132
144
|
valuePath: 'scheduledAt',
|
|
133
145
|
sortParam: 'scheduled_at',
|
|
@@ -137,6 +149,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
137
149
|
filterComponent: 'filter/date',
|
|
138
150
|
},
|
|
139
151
|
{
|
|
152
|
+
id: 'total-cost',
|
|
140
153
|
label: this.intl.t('column.total-cost'),
|
|
141
154
|
valuePath: 'total_cost',
|
|
142
155
|
cellComponent: 'table/cell/currency',
|
|
@@ -144,6 +157,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
144
157
|
sortable: true,
|
|
145
158
|
},
|
|
146
159
|
{
|
|
160
|
+
id: 'created-at',
|
|
147
161
|
label: this.intl.t('column.created-at'),
|
|
148
162
|
valuePath: 'createdAt',
|
|
149
163
|
sortParam: 'created_at',
|
|
@@ -153,6 +167,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
153
167
|
filterComponent: 'filter/date',
|
|
154
168
|
},
|
|
155
169
|
{
|
|
170
|
+
id: 'updated-at',
|
|
156
171
|
label: this.intl.t('column.updated-at'),
|
|
157
172
|
valuePath: 'updatedAt',
|
|
158
173
|
sortParam: 'updated_at',
|
|
@@ -163,6 +178,7 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
163
178
|
filterComponent: 'filter/date',
|
|
164
179
|
},
|
|
165
180
|
{
|
|
181
|
+
id: 'row-actions',
|
|
166
182
|
label: '',
|
|
167
183
|
cellComponent: 'table/cell/dropdown',
|
|
168
184
|
ddButtonText: false,
|
|
@@ -173,17 +189,20 @@ export default class MaintenanceMaintenancesIndexController extends Controller {
|
|
|
173
189
|
wrapperClass: 'flex items-center justify-end mx-2',
|
|
174
190
|
actions: [
|
|
175
191
|
{
|
|
192
|
+
id: 'view',
|
|
176
193
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.maintenance') }),
|
|
177
194
|
fn: this.maintenanceActions.transition.view,
|
|
178
195
|
permission: 'fleet-ops view maintenance',
|
|
179
196
|
},
|
|
180
197
|
{
|
|
198
|
+
id: 'edit',
|
|
181
199
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.maintenance') }),
|
|
182
200
|
fn: this.maintenanceActions.transition.edit,
|
|
183
201
|
permission: 'fleet-ops update maintenance',
|
|
184
202
|
},
|
|
185
203
|
{ separator: true },
|
|
186
204
|
{
|
|
205
|
+
id: 'delete',
|
|
187
206
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.maintenance') }),
|
|
188
207
|
fn: this.maintenanceActions.delete,
|
|
189
208
|
permission: 'fleet-ops delete maintenance',
|
|
@@ -19,8 +19,8 @@ export default class MaintenancePartsIndexDetailsController extends Controller {
|
|
|
19
19
|
|
|
20
20
|
get actionButtons() {
|
|
21
21
|
return [
|
|
22
|
-
{ icon: 'edit', fn: this.edit, permission: 'fleet-ops update part' },
|
|
23
|
-
{ icon: 'trash', fn: this.delete, type: 'danger', permission: 'fleet-ops delete part' },
|
|
22
|
+
{ id: 'edit', icon: 'edit', fn: this.edit, permission: 'fleet-ops update part' },
|
|
23
|
+
{ id: 'delete', icon: 'trash', fn: this.delete, type: 'danger', permission: 'fleet-ops delete part' },
|
|
24
24
|
];
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -7,7 +7,7 @@ export default class MaintenancePartsIndexController extends Controller {
|
|
|
7
7
|
@service intl;
|
|
8
8
|
@service appCache;
|
|
9
9
|
|
|
10
|
-
@tracked queryParams = ['type', 'status', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at'];
|
|
10
|
+
@tracked queryParams = this.partActions.queryParamsFor(['type', 'status', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at']);
|
|
11
11
|
@tracked page = 1;
|
|
12
12
|
@tracked limit;
|
|
13
13
|
@tracked sort = '-created_at';
|
|
@@ -21,6 +21,7 @@ export default class MaintenancePartsIndexController extends Controller {
|
|
|
21
21
|
get actionButtons() {
|
|
22
22
|
return [
|
|
23
23
|
{
|
|
24
|
+
id: 'more',
|
|
24
25
|
component: 'dropdown-button',
|
|
25
26
|
icon: 'display',
|
|
26
27
|
size: 'xs',
|
|
@@ -45,10 +46,11 @@ export default class MaintenancePartsIndexController extends Controller {
|
|
|
45
46
|
renderInPlace: true,
|
|
46
47
|
helpText: 'Change the layout',
|
|
47
48
|
},
|
|
48
|
-
{ icon: 'refresh', onClick: this.partActions.refresh, helpText: this.intl.t('common.refresh') },
|
|
49
|
-
{ text: this.intl.t('common.new'), type: 'primary', icon: 'plus', onClick: this.partActions.transition.create, permission: 'fleet-ops create part' },
|
|
50
|
-
{ text: this.intl.t('common.import'), type: 'magic', icon: 'upload', onClick: this.partActions.import, permission: 'fleet-ops import part' },
|
|
49
|
+
{ id: 'refresh', icon: 'refresh', onClick: this.partActions.refresh, helpText: this.intl.t('common.refresh') },
|
|
50
|
+
{ id: 'create', text: this.intl.t('common.new'), type: 'primary', icon: 'plus', onClick: this.partActions.transition.create, permission: 'fleet-ops create part' },
|
|
51
|
+
{ id: 'import', text: this.intl.t('common.import'), type: 'magic', icon: 'upload', onClick: this.partActions.import, permission: 'fleet-ops import part' },
|
|
51
52
|
{
|
|
53
|
+
id: 'export',
|
|
52
54
|
text: this.intl.t('common.export'),
|
|
53
55
|
icon: 'long-arrow-up',
|
|
54
56
|
iconClass: 'rotate-icon-45',
|
|
@@ -60,12 +62,13 @@ export default class MaintenancePartsIndexController extends Controller {
|
|
|
60
62
|
}
|
|
61
63
|
|
|
62
64
|
get bulkActions() {
|
|
63
|
-
return [{ label: 'Delete selected...', class: 'text-red-500', fn: this.partActions.bulkDelete, permission: 'fleet-ops delete part' }];
|
|
65
|
+
return [{ id: 'bulk-delete', label: 'Delete selected...', class: 'text-red-500', fn: this.partActions.bulkDelete, permission: 'fleet-ops delete part' }];
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
get columns() {
|
|
67
69
|
return [
|
|
68
70
|
{
|
|
71
|
+
id: 'name',
|
|
69
72
|
label: this.intl.t('column.name'),
|
|
70
73
|
valuePath: 'name',
|
|
71
74
|
cellComponent: 'cell/part-identity',
|
|
@@ -78,6 +81,7 @@ export default class MaintenancePartsIndexController extends Controller {
|
|
|
78
81
|
filterComponent: 'filter/string',
|
|
79
82
|
},
|
|
80
83
|
{
|
|
84
|
+
id: 'sku',
|
|
81
85
|
label: this.intl.t('column.part-number'),
|
|
82
86
|
valuePath: 'sku',
|
|
83
87
|
resizable: true,
|
|
@@ -87,6 +91,7 @@ export default class MaintenancePartsIndexController extends Controller {
|
|
|
87
91
|
filterComponent: 'filter/string',
|
|
88
92
|
},
|
|
89
93
|
{
|
|
94
|
+
id: 'type',
|
|
90
95
|
label: this.intl.t('column.type'),
|
|
91
96
|
valuePath: 'type',
|
|
92
97
|
cellComponent: 'table/cell/base',
|
|
@@ -98,6 +103,7 @@ export default class MaintenancePartsIndexController extends Controller {
|
|
|
98
103
|
filterComponent: 'filter/string',
|
|
99
104
|
},
|
|
100
105
|
{
|
|
106
|
+
id: 'status',
|
|
101
107
|
label: this.intl.t('column.status'),
|
|
102
108
|
valuePath: 'status',
|
|
103
109
|
cellComponent: 'table/cell/status',
|
|
@@ -107,10 +113,20 @@ export default class MaintenancePartsIndexController extends Controller {
|
|
|
107
113
|
filterParam: 'status',
|
|
108
114
|
filterComponent: 'filter/string',
|
|
109
115
|
},
|
|
110
|
-
{ label: this.intl.t('column.quantity-on-hand'), valuePath: 'quantity_on_hand', resizable: true, sortable: true },
|
|
111
|
-
{ label: this.intl.t('column.unit-cost'), valuePath: 'unit_cost', cellComponent: 'table/cell/currency', resizable: true, sortable: true },
|
|
112
|
-
{ label: this.intl.t('column.created-at'), valuePath: 'createdAt', sortParam: 'created_at', resizable: true, sortable: true, filterable: true, filterComponent: 'filter/date' },
|
|
116
|
+
{ id: 'quantity-on-hand', label: this.intl.t('column.quantity-on-hand'), valuePath: 'quantity_on_hand', resizable: true, sortable: true },
|
|
117
|
+
{ id: 'unit-cost', label: this.intl.t('column.unit-cost'), valuePath: 'unit_cost', cellComponent: 'table/cell/currency', resizable: true, sortable: true },
|
|
113
118
|
{
|
|
119
|
+
id: 'created-at',
|
|
120
|
+
label: this.intl.t('column.created-at'),
|
|
121
|
+
valuePath: 'createdAt',
|
|
122
|
+
sortParam: 'created_at',
|
|
123
|
+
resizable: true,
|
|
124
|
+
sortable: true,
|
|
125
|
+
filterable: true,
|
|
126
|
+
filterComponent: 'filter/date',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: 'updated-at',
|
|
114
130
|
label: this.intl.t('column.updated-at'),
|
|
115
131
|
valuePath: 'updatedAt',
|
|
116
132
|
sortParam: 'updated_at',
|
|
@@ -121,6 +137,7 @@ export default class MaintenancePartsIndexController extends Controller {
|
|
|
121
137
|
filterComponent: 'filter/date',
|
|
122
138
|
},
|
|
123
139
|
{
|
|
140
|
+
id: 'row-actions',
|
|
124
141
|
label: '',
|
|
125
142
|
cellComponent: 'table/cell/dropdown',
|
|
126
143
|
ddButtonText: false,
|
|
@@ -131,17 +148,20 @@ export default class MaintenancePartsIndexController extends Controller {
|
|
|
131
148
|
wrapperClass: 'flex items-center justify-end mx-2',
|
|
132
149
|
actions: [
|
|
133
150
|
{
|
|
151
|
+
id: 'view',
|
|
134
152
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.part') }),
|
|
135
153
|
fn: this.partActions.transition.view,
|
|
136
154
|
permission: 'fleet-ops view part',
|
|
137
155
|
},
|
|
138
156
|
{
|
|
157
|
+
id: 'edit',
|
|
139
158
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.part') }),
|
|
140
159
|
fn: this.partActions.transition.edit,
|
|
141
160
|
permission: 'fleet-ops update part',
|
|
142
161
|
},
|
|
143
162
|
{ separator: true },
|
|
144
163
|
{
|
|
164
|
+
id: 'delete',
|
|
145
165
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.part') }),
|
|
146
166
|
fn: this.partActions.delete,
|
|
147
167
|
permission: 'fleet-ops delete part',
|
|
@@ -33,7 +33,7 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
33
33
|
return this.maintenanceScheduleActions;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
@tracked queryParams = ['status', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at'];
|
|
36
|
+
@tracked queryParams = this.maintenanceScheduleActions.queryParamsFor(['status', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at']);
|
|
37
37
|
@tracked page = 1;
|
|
38
38
|
@tracked limit;
|
|
39
39
|
@tracked sort = '-created_at';
|
|
@@ -132,16 +132,19 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
132
132
|
get actionButtons() {
|
|
133
133
|
return [
|
|
134
134
|
{
|
|
135
|
+
id: 'more',
|
|
135
136
|
component: 'dropdown-button',
|
|
136
137
|
icon: 'display',
|
|
137
138
|
size: 'xs',
|
|
138
139
|
items: [
|
|
139
140
|
{
|
|
141
|
+
id: 'list-view',
|
|
140
142
|
label: this.intl.t('common.table-view'),
|
|
141
143
|
icon: 'table-list',
|
|
142
144
|
onClick: this.setLayoutList,
|
|
143
145
|
},
|
|
144
146
|
{
|
|
147
|
+
id: 'calendar-view',
|
|
145
148
|
label: this.intl.t('common.calendar-view'),
|
|
146
149
|
icon: 'calendar',
|
|
147
150
|
onClick: this.setLayoutCalendar,
|
|
@@ -150,16 +153,25 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
150
153
|
renderInPlace: true,
|
|
151
154
|
helpText: this.intl.t('common.change-layout'),
|
|
152
155
|
},
|
|
153
|
-
{ icon: 'refresh', onClick: this.maintenanceScheduleActions.refresh, helpText: this.intl.t('common.refresh') },
|
|
156
|
+
{ id: 'refresh', icon: 'refresh', onClick: this.maintenanceScheduleActions.refresh, helpText: this.intl.t('common.refresh') },
|
|
154
157
|
{
|
|
158
|
+
id: 'create',
|
|
155
159
|
text: this.intl.t('common.new'),
|
|
156
160
|
type: 'primary',
|
|
157
161
|
icon: 'plus',
|
|
158
162
|
onClick: this.maintenanceScheduleActions.transition.create,
|
|
159
163
|
permission: 'fleet-ops create maintenance-schedule',
|
|
160
164
|
},
|
|
161
|
-
{ text: this.intl.t('common.import'), type: 'magic', icon: 'upload', onClick: this.maintenanceScheduleActions.import, permission: 'fleet-ops import maintenance-schedule' },
|
|
162
165
|
{
|
|
166
|
+
id: 'import',
|
|
167
|
+
text: this.intl.t('common.import'),
|
|
168
|
+
type: 'magic',
|
|
169
|
+
icon: 'upload',
|
|
170
|
+
onClick: this.maintenanceScheduleActions.import,
|
|
171
|
+
permission: 'fleet-ops import maintenance-schedule',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: 'export',
|
|
163
175
|
text: this.intl.t('common.export'),
|
|
164
176
|
icon: 'long-arrow-up',
|
|
165
177
|
iconClass: 'rotate-icon-45',
|
|
@@ -171,12 +183,15 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
171
183
|
}
|
|
172
184
|
|
|
173
185
|
get bulkActions() {
|
|
174
|
-
return [
|
|
186
|
+
return [
|
|
187
|
+
{ id: 'bulk-delete', label: 'Delete selected...', class: 'text-red-500', fn: this.maintenanceScheduleActions.bulkDelete, permission: 'fleet-ops delete maintenance-schedule' },
|
|
188
|
+
];
|
|
175
189
|
}
|
|
176
190
|
|
|
177
191
|
get columns() {
|
|
178
192
|
return [
|
|
179
193
|
{
|
|
194
|
+
id: 'public-id',
|
|
180
195
|
label: this.intl.t('column.id'),
|
|
181
196
|
valuePath: 'public_id',
|
|
182
197
|
cellComponent: 'table/cell/anchor',
|
|
@@ -190,6 +205,7 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
190
205
|
filterComponent: 'filter/string',
|
|
191
206
|
},
|
|
192
207
|
{
|
|
208
|
+
id: 'name',
|
|
193
209
|
label: this.intl.t('column.name'),
|
|
194
210
|
valuePath: 'name',
|
|
195
211
|
resizable: true,
|
|
@@ -199,6 +215,7 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
199
215
|
filterComponent: 'filter/string',
|
|
200
216
|
},
|
|
201
217
|
{
|
|
218
|
+
id: 'subject-name',
|
|
202
219
|
label: this.intl.t('column.subject'),
|
|
203
220
|
valuePath: 'subject.name',
|
|
204
221
|
cellComponent: 'cell/maintenance-subject-identity',
|
|
@@ -208,6 +225,7 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
208
225
|
sortable: false,
|
|
209
226
|
},
|
|
210
227
|
{
|
|
228
|
+
id: 'default-assignee-name',
|
|
211
229
|
label: this.intl.t('column.assignee'),
|
|
212
230
|
valuePath: 'default_assignee_name',
|
|
213
231
|
cellComponent: 'cell/facilitator-identity',
|
|
@@ -218,6 +236,7 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
218
236
|
hidden: true,
|
|
219
237
|
},
|
|
220
238
|
{
|
|
239
|
+
id: 'type',
|
|
221
240
|
label: this.intl.t('column.type'),
|
|
222
241
|
valuePath: 'type',
|
|
223
242
|
cellComponent: 'table/cell/base',
|
|
@@ -229,6 +248,7 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
229
248
|
filterComponent: 'filter/string',
|
|
230
249
|
},
|
|
231
250
|
{
|
|
251
|
+
id: 'status',
|
|
232
252
|
label: this.intl.t('column.status'),
|
|
233
253
|
valuePath: 'status',
|
|
234
254
|
cellComponent: 'table/cell/status',
|
|
@@ -239,6 +259,7 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
239
259
|
filterComponent: 'filter/string',
|
|
240
260
|
},
|
|
241
261
|
{
|
|
262
|
+
id: 'next-due-at-short',
|
|
242
263
|
label: this.intl.t('column.next-due'),
|
|
243
264
|
valuePath: 'nextDueAtShort',
|
|
244
265
|
sortParam: 'next_due_date',
|
|
@@ -248,6 +269,7 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
248
269
|
filterComponent: 'filter/date',
|
|
249
270
|
},
|
|
250
271
|
{
|
|
272
|
+
id: 'created-at',
|
|
251
273
|
label: this.intl.t('column.created-at'),
|
|
252
274
|
valuePath: 'createdAt',
|
|
253
275
|
sortParam: 'created_at',
|
|
@@ -257,6 +279,7 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
257
279
|
filterComponent: 'filter/date',
|
|
258
280
|
},
|
|
259
281
|
{
|
|
282
|
+
id: 'row-actions',
|
|
260
283
|
label: '',
|
|
261
284
|
cellComponent: 'table/cell/dropdown',
|
|
262
285
|
ddButtonText: false,
|
|
@@ -267,33 +290,39 @@ export default class MaintenanceSchedulesIndexController extends Controller {
|
|
|
267
290
|
wrapperClass: 'flex items-center justify-end mx-2',
|
|
268
291
|
actions: [
|
|
269
292
|
{
|
|
293
|
+
id: 'view',
|
|
270
294
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.maintenance-schedule') }),
|
|
271
295
|
fn: this.maintenanceScheduleActions.transition.view,
|
|
272
296
|
permission: 'fleet-ops view maintenance-schedule',
|
|
273
297
|
},
|
|
274
298
|
{
|
|
299
|
+
id: 'edit',
|
|
275
300
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.maintenance-schedule') }),
|
|
276
301
|
fn: this.maintenanceScheduleActions.transition.edit,
|
|
277
302
|
permission: 'fleet-ops update maintenance-schedule',
|
|
278
303
|
},
|
|
279
304
|
{
|
|
305
|
+
id: 'trigger-now',
|
|
280
306
|
label: this.intl.t('maintenance-schedule.actions.trigger-now'),
|
|
281
307
|
fn: this.maintenanceScheduleActions.triggerNow,
|
|
282
308
|
permission: 'fleet-ops update maintenance-schedule',
|
|
283
309
|
},
|
|
284
310
|
{ separator: true },
|
|
285
311
|
{
|
|
312
|
+
id: 'pause',
|
|
286
313
|
label: this.intl.t('maintenance-schedule.actions.pause'),
|
|
287
314
|
fn: this.maintenanceScheduleActions.pause,
|
|
288
315
|
permission: 'fleet-ops update maintenance-schedule',
|
|
289
316
|
},
|
|
290
317
|
{
|
|
318
|
+
id: 'resume',
|
|
291
319
|
label: this.intl.t('maintenance-schedule.actions.resume'),
|
|
292
320
|
fn: this.maintenanceScheduleActions.resume,
|
|
293
321
|
permission: 'fleet-ops update maintenance-schedule',
|
|
294
322
|
},
|
|
295
323
|
{ separator: true },
|
|
296
324
|
{
|
|
325
|
+
id: 'delete',
|
|
297
326
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.maintenance-schedule') }),
|
|
298
327
|
fn: this.maintenanceScheduleActions.delete,
|
|
299
328
|
permission: 'fleet-ops delete maintenance-schedule',
|
|
@@ -19,9 +19,9 @@ export default class MaintenanceWorkOrdersIndexDetailsController extends Control
|
|
|
19
19
|
|
|
20
20
|
get actionButtons() {
|
|
21
21
|
return [
|
|
22
|
-
{ icon: 'paper-plane', fn: this.sendEmail, text: 'Send to Vendor', permission: 'fleet-ops update work-order' },
|
|
23
|
-
{ icon: 'edit', fn: this.edit, permission: 'fleet-ops update work-order' },
|
|
24
|
-
{ icon: 'trash', fn: this.delete, type: 'danger', permission: 'fleet-ops delete work-order' },
|
|
22
|
+
{ id: 'send-email', icon: 'paper-plane', fn: this.sendEmail, text: 'Send to Vendor', permission: 'fleet-ops update work-order' },
|
|
23
|
+
{ id: 'edit', icon: 'edit', fn: this.edit, permission: 'fleet-ops update work-order' },
|
|
24
|
+
{ id: 'delete', icon: 'trash', fn: this.delete, type: 'danger', permission: 'fleet-ops delete work-order' },
|
|
25
25
|
];
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -9,7 +9,7 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
9
9
|
@service workOrderActions;
|
|
10
10
|
@service intl;
|
|
11
11
|
|
|
12
|
-
@tracked queryParams = ['category', 'status', 'priority', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at'];
|
|
12
|
+
@tracked queryParams = this.workOrderActions.queryParamsFor(['category', 'status', 'priority', 'page', 'limit', 'sort', 'query', 'public_id', 'created_at', 'updated_at']);
|
|
13
13
|
@tracked page = 1;
|
|
14
14
|
@tracked limit;
|
|
15
15
|
@tracked sort = '-created_at';
|
|
@@ -20,10 +20,11 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
20
20
|
|
|
21
21
|
get actionButtons() {
|
|
22
22
|
return [
|
|
23
|
-
{ icon: 'refresh', onClick: this.workOrderActions.refresh, helpText: this.intl.t('common.refresh') },
|
|
24
|
-
{ text: this.intl.t('common.new'), type: 'primary', icon: 'plus', onClick: this.workOrderActions.transition.create, permission: 'fleet-ops create work-order' },
|
|
25
|
-
{ text: this.intl.t('common.import'), type: 'magic', icon: 'upload', onClick: this.workOrderActions.import, permission: 'fleet-ops import work-order' },
|
|
23
|
+
{ id: 'refresh', icon: 'refresh', onClick: this.workOrderActions.refresh, helpText: this.intl.t('common.refresh') },
|
|
24
|
+
{ id: 'create', text: this.intl.t('common.new'), type: 'primary', icon: 'plus', onClick: this.workOrderActions.transition.create, permission: 'fleet-ops create work-order' },
|
|
25
|
+
{ id: 'import', text: this.intl.t('common.import'), type: 'magic', icon: 'upload', onClick: this.workOrderActions.import, permission: 'fleet-ops import work-order' },
|
|
26
26
|
{
|
|
27
|
+
id: 'export',
|
|
27
28
|
text: this.intl.t('common.export'),
|
|
28
29
|
icon: 'long-arrow-up',
|
|
29
30
|
iconClass: 'rotate-icon-45',
|
|
@@ -35,12 +36,13 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
get bulkActions() {
|
|
38
|
-
return [{ label: 'Delete selected...', class: 'text-red-500', fn: this.workOrderActions.bulkDelete, permission: 'fleet-ops delete work-order' }];
|
|
39
|
+
return [{ id: 'bulk-delete', label: 'Delete selected...', class: 'text-red-500', fn: this.workOrderActions.bulkDelete, permission: 'fleet-ops delete work-order' }];
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
get columns() {
|
|
42
43
|
return [
|
|
43
44
|
{
|
|
45
|
+
id: 'code',
|
|
44
46
|
label: this.intl.t('column.code'),
|
|
45
47
|
valuePath: 'code',
|
|
46
48
|
cellComponent: 'table/cell/anchor',
|
|
@@ -53,8 +55,18 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
53
55
|
filterParam: 'code',
|
|
54
56
|
filterComponent: 'filter/string',
|
|
55
57
|
},
|
|
56
|
-
{ label: this.intl.t('column.subject'), valuePath: 'subject', resizable: true, sortable: true, filterable: true, filterParam: 'subject', filterComponent: 'filter/string' },
|
|
57
58
|
{
|
|
59
|
+
id: 'subject',
|
|
60
|
+
label: this.intl.t('column.subject'),
|
|
61
|
+
valuePath: 'subject',
|
|
62
|
+
resizable: true,
|
|
63
|
+
sortable: true,
|
|
64
|
+
filterable: true,
|
|
65
|
+
filterParam: 'subject',
|
|
66
|
+
filterComponent: 'filter/string',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: 'category',
|
|
58
70
|
label: this.intl.t('column.category'),
|
|
59
71
|
valuePath: 'category',
|
|
60
72
|
cellComponent: 'table/cell/base',
|
|
@@ -70,6 +82,7 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
70
82
|
placeholder: 'Select work order category',
|
|
71
83
|
},
|
|
72
84
|
{
|
|
85
|
+
id: 'status',
|
|
73
86
|
label: this.intl.t('column.status'),
|
|
74
87
|
valuePath: 'status',
|
|
75
88
|
cellComponent: 'table/cell/status',
|
|
@@ -80,6 +93,7 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
80
93
|
filterComponent: 'filter/string',
|
|
81
94
|
},
|
|
82
95
|
{
|
|
96
|
+
id: 'priority',
|
|
83
97
|
label: this.intl.t('column.priority'),
|
|
84
98
|
valuePath: 'priority',
|
|
85
99
|
cellComponent: 'table/cell/base',
|
|
@@ -91,6 +105,7 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
91
105
|
filterComponent: 'filter/string',
|
|
92
106
|
},
|
|
93
107
|
{
|
|
108
|
+
id: 'target-name',
|
|
94
109
|
label: this.intl.t('column.target'),
|
|
95
110
|
valuePath: 'target_name',
|
|
96
111
|
cellComponent: 'cell/maintenance-subject-identity',
|
|
@@ -100,6 +115,7 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
100
115
|
hidden: true,
|
|
101
116
|
},
|
|
102
117
|
{
|
|
118
|
+
id: 'assignee-name',
|
|
103
119
|
label: this.intl.t('column.assignee'),
|
|
104
120
|
valuePath: 'assignee_name',
|
|
105
121
|
cellComponent: 'cell/facilitator-identity',
|
|
@@ -107,9 +123,19 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
107
123
|
resizable: true,
|
|
108
124
|
sortable: false,
|
|
109
125
|
},
|
|
110
|
-
{ label: this.intl.t('column.due-at'), valuePath: 'dueAt', sortParam: 'due_at', resizable: true, sortable: true, filterable: true, filterComponent: 'filter/date' },
|
|
111
|
-
{
|
|
126
|
+
{ id: 'due-at', label: this.intl.t('column.due-at'), valuePath: 'dueAt', sortParam: 'due_at', resizable: true, sortable: true, filterable: true, filterComponent: 'filter/date' },
|
|
127
|
+
{
|
|
128
|
+
id: 'created-at',
|
|
129
|
+
label: this.intl.t('column.created-at'),
|
|
130
|
+
valuePath: 'createdAt',
|
|
131
|
+
sortParam: 'created_at',
|
|
132
|
+
resizable: true,
|
|
133
|
+
sortable: true,
|
|
134
|
+
filterable: true,
|
|
135
|
+
filterComponent: 'filter/date',
|
|
136
|
+
},
|
|
112
137
|
{
|
|
138
|
+
id: 'updated-at',
|
|
113
139
|
label: this.intl.t('column.updated-at'),
|
|
114
140
|
valuePath: 'updatedAt',
|
|
115
141
|
sortParam: 'updated_at',
|
|
@@ -120,6 +146,7 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
120
146
|
filterComponent: 'filter/date',
|
|
121
147
|
},
|
|
122
148
|
{
|
|
149
|
+
id: 'row-actions',
|
|
123
150
|
label: '',
|
|
124
151
|
cellComponent: 'table/cell/dropdown',
|
|
125
152
|
ddButtonText: false,
|
|
@@ -130,17 +157,20 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
130
157
|
wrapperClass: 'flex items-center justify-end mx-2',
|
|
131
158
|
actions: [
|
|
132
159
|
{
|
|
160
|
+
id: 'view',
|
|
133
161
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.work-order') }),
|
|
134
162
|
fn: this.workOrderActions.transition.view,
|
|
135
163
|
permission: 'fleet-ops view work-order',
|
|
136
164
|
},
|
|
137
165
|
{
|
|
166
|
+
id: 'edit',
|
|
138
167
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.work-order') }),
|
|
139
168
|
fn: this.workOrderActions.transition.edit,
|
|
140
169
|
permission: 'fleet-ops update work-order',
|
|
141
170
|
},
|
|
142
171
|
{ separator: true },
|
|
143
172
|
{
|
|
173
|
+
id: 'send-email',
|
|
144
174
|
label: 'Send Work Order to Vendor',
|
|
145
175
|
fn: this.workOrderActions.sendEmail,
|
|
146
176
|
icon: 'paper-plane',
|
|
@@ -148,6 +178,7 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
|
|
|
148
178
|
},
|
|
149
179
|
{ separator: true },
|
|
150
180
|
{
|
|
181
|
+
id: 'delete',
|
|
151
182
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.work-order') }),
|
|
152
183
|
fn: this.workOrderActions.delete,
|
|
153
184
|
permission: 'fleet-ops delete work-order',
|