@fleetbase/fleetops-engine 0.4.15 → 0.4.17
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/.php-cs-fixer.php +2 -0
- package/addon/components/activity-event-selector.hbs +35 -0
- package/addon/components/activity-event-selector.js +85 -0
- package/addon/components/activity-form-panel.hbs +23 -0
- package/addon/components/activity-form-panel.js +90 -0
- package/addon/components/activity-logic-builder.hbs +80 -0
- package/addon/components/activity-logic-builder.js +260 -0
- package/addon/components/contact-form-panel.hbs +1 -1
- package/addon/components/contact-panel.hbs +1 -1
- package/addon/components/custom-entity-form-panel.hbs +43 -0
- package/addon/components/custom-entity-form-panel.js +129 -0
- package/addon/components/custom-field-form-panel/options-input.hbs +12 -0
- package/addon/components/custom-field-form-panel/options-input.js +139 -0
- package/addon/components/custom-field-form-panel.hbs +77 -0
- package/addon/components/custom-field-form-panel.js +144 -0
- package/addon/components/custom-field.hbs +63 -41
- package/addon/components/custom-field.js +123 -25
- package/addon/components/driver-form-panel.hbs +1 -1
- package/addon/components/driver-panel.hbs +1 -1
- package/addon/components/edit-order-route-panel.hbs +1 -1
- package/addon/components/fleet-form-panel.hbs +1 -1
- package/addon/components/fleet-panel.hbs +1 -1
- package/addon/components/fuel-report-form-panel.hbs +1 -1
- package/addon/components/fuel-report-panel.hbs +1 -1
- package/addon/components/issue-form-panel.hbs +1 -1
- package/addon/components/issue-panel.hbs +1 -1
- package/addon/components/joint-graph.hbs +1 -0
- package/addon/components/joint-graph.js +103 -0
- package/addon/components/layout/fleet-ops-sidebar.hbs +3 -3
- package/addon/components/layout/fleet-ops-sidebar.js +1 -0
- package/addon/components/live-map.js +71 -28
- package/addon/components/modals/new-custom-field-group.hbs +5 -0
- package/addon/components/modals/new-order-config.hbs +3 -3
- package/addon/components/modals/order-new-activity.hbs +1 -1
- package/addon/components/order-config-manager/activity-flow.hbs +11 -0
- package/addon/components/order-config-manager/activity-flow.js +964 -0
- package/addon/components/order-config-manager/custom-fields.hbs +50 -0
- package/addon/components/order-config-manager/custom-fields.js +276 -0
- package/addon/components/order-config-manager/details.hbs +23 -0
- package/addon/components/order-config-manager/details.js +97 -0
- package/addon/components/order-config-manager/entities.hbs +54 -0
- package/addon/components/order-config-manager/entities.js +227 -0
- package/addon/components/order-config-manager-overlay.hbs +26 -0
- package/addon/components/order-config-manager-overlay.js +60 -0
- package/addon/components/order-config-manager.hbs +15 -0
- package/addon/components/order-config-manager.js +285 -0
- package/addon/components/order-flow.hbs +1 -0
- package/addon/components/order-flow.js +3 -0
- package/addon/components/place-form-panel.hbs +1 -1
- package/addon/components/place-panel.hbs +1 -1
- package/addon/components/vehicle-form-panel.hbs +1 -1
- package/addon/components/vehicle-panel.hbs +1 -1
- package/addon/components/vendor-form-panel.hbs +1 -1
- package/addon/components/vendor-panel.hbs +1 -1
- package/addon/controllers/application.js +5 -1
- package/addon/controllers/operations/order-config.js +42 -0
- package/addon/controllers/operations/orders/index/new.js +125 -21
- package/addon/controllers/operations/orders/index/view.js +87 -4
- package/addon/controllers/operations/orders/index.js +2 -2
- package/addon/engine.js +10 -1
- package/addon/initializers/load-jointjs.js +16 -0
- package/addon/routes/application.js +1 -1
- package/addon/routes/operations/order-config.js +28 -0
- package/addon/routes/operations/orders/index/new.js +2 -3
- package/addon/routes/operations/orders/index/view.js +1 -1
- package/addon/routes.js +1 -0
- package/addon/services/context-panel.js +65 -3
- package/addon/styles/fleetops-engine.css +268 -0
- package/addon/templates/application.hbs +1 -1
- package/addon/templates/operations/order-config.hbs +55 -0
- package/addon/templates/operations/orders/index/new.hbs +98 -339
- package/addon/templates/operations/orders/index/view.hbs +36 -96
- package/addon/templates/operations/orders/index.hbs +0 -1
- package/addon/utils/apply-context-component-arguments.js +4 -2
- package/addon/utils/create-custom-entity.js +22 -0
- package/addon/utils/create-flow-activity.js +31 -0
- package/addon/utils/get-custom-field-type-map.js +34 -0
- package/app/components/activity-event-selector.js +1 -0
- package/app/components/activity-form-panel.js +1 -0
- package/app/components/activity-logic-builder.js +1 -0
- package/app/components/custom-entity-form-panel.js +1 -0
- package/app/components/custom-field-form-panel/options-input.js +1 -0
- package/app/components/custom-field-form-panel.js +1 -0
- package/app/components/joint-graph.js +1 -0
- package/app/components/modals/new-custom-field-group.js +1 -0
- package/app/components/order-config-manager/activity-flow.js +1 -0
- package/app/components/order-config-manager/custom-fields.js +1 -0
- package/app/components/order-config-manager/details.js +1 -0
- package/app/components/order-config-manager/entities.js +1 -0
- package/app/components/order-config-manager-overlay.js +1 -0
- package/app/components/order-config-manager.js +1 -0
- package/app/components/order-flow.js +1 -0
- package/app/controllers/operations/order-config.js +1 -0
- package/app/routes/operations/order-config.js +1 -0
- package/app/templates/operations/order-config.js +1 -0
- package/app/utils/create-custom-entity.js +1 -0
- package/app/utils/create-flow-activity.js +1 -0
- package/app/utils/get-custom-field-type-map.js +1 -0
- package/composer.json +4 -3
- package/config/environment.js +1 -0
- package/extension.json +1 -1
- package/index.js +20 -0
- package/package.json +7 -5
- package/server/migrations/2023_04_27_053456_create_contacts_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_drivers_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_entities_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_fleet_drivers_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_fleets_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_fuel_reports_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_integrated_vendors_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_issues_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_orders_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_payloads_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_places_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_positions_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_proofs_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_purchase_rates_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_routes_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_areas_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_quote_items_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_quotes_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_rate_fees_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_rate_parcel_fees_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_rates_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_tracking_numbers_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_tracking_statuses_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_vehicles_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_vendors_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_waypoints_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_zones_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_companies_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_contacts_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_drivers_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_entities_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleet_drivers_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleets_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fuel_reports_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_integrated_vendors_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_issues_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_orders_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_payloads_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_places_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_positions_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_proofs_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_purchase_rates_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_routes_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_areas_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quote_items_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quotes_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_fees_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_parcel_fees_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rates_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_numbers_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_statuses_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vehicles_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vendors_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_waypoints_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_zones_table.php +1 -2
- package/server/migrations/2023_09_14_074512_update_vehicles_table.php +1 -2
- package/server/migrations/2023_09_14_074619_create_vehicle_devices_table.php +35 -36
- package/server/migrations/2023_09_26_071205_add_online_column_to_vehicles_table.php +1 -2
- package/server/migrations/2023_09_26_083957_create_fleet_vehicles_table.php +1 -2
- package/server/migrations/2023_09_27_023757_add_column_to_fleets_table.php +1 -2
- package/server/migrations/2023_10_05_074811_update_vehicle.php +1 -2
- package/server/migrations/2023_10_25_093014_create_vehicle_device_events_table.php +1 -2
- package/server/migrations/2023_11_03_072503_refactor_issues_table_columns.php +1 -2
- package/server/migrations/2023_11_06_040645_refactor_fuel_reports_table.php +1 -2
- package/server/migrations/2023_11_09_041807_add_status_column_to_fuel_reports_table.php +1 -2
- package/server/migrations/2023_11_15_062814_add_comments_column_and_resolved_at_column_to_vehicle_device_events_table.php +1 -2
- package/server/migrations/2023_11_17_053001_add_category_uuid_to_entities_table.php +1 -2
- package/server/migrations/2023_11_28_074244_add_supplier_uuid_column_to_entities_table.php +1 -2
- package/server/migrations/2023_12_14_100209_add_meta_column_on_driver_table copy.php +1 -2
- package/server/migrations/2024_02_18_100209_add_avatar_url_columns_table.php +3 -4
- package/server/migrations/2024_02_27_093648_create_order_configs_table.php +43 -0
- package/server/migrations/2024_03_07_075508_add_order_config_uuid_column_to_orders_table.php +28 -0
- package/server/seeders/OrderConfigSeeder.php +151 -0
- package/server/src/Casts/OrderConfigEntities.php +53 -0
- package/server/src/Console/Commands/FixLegacyOrderConfigs.php +66 -0
- package/server/src/Events/DriverLocationChanged.php +1 -1
- package/server/src/Events/DriverSimulatedLocationChanged.php +1 -1
- package/server/src/Expansions/UserExpansion.php +4 -4
- package/server/src/Flow/Activity.php +232 -6
- package/server/src/Flow/Condition.php +84 -0
- package/server/src/Flow/Event.php +88 -0
- package/server/src/Flow/Flow.php +50 -0
- package/server/src/Flow/FlowResource.php +143 -0
- package/server/src/Flow/Logic.php +57 -1
- package/server/src/Http/Controllers/Api/v1/DriverController.php +2 -2
- package/server/src/Http/Controllers/Api/v1/IssueController.php +132 -0
- package/server/src/Http/Controllers/Api/v1/OrderController.php +130 -57
- package/server/src/Http/Controllers/Api/v1/OrganizationController.php +27 -0
- package/server/src/Http/Controllers/Api/v1/PlaceController.php +2 -3
- package/server/src/Http/Controllers/Controller.php +9 -0
- package/server/src/Http/Controllers/FleetOpsController.php +7 -0
- package/server/src/Http/Controllers/Internal/v1/OrderConfigController.php +5 -259
- package/server/src/Http/Controllers/Internal/v1/OrderController.php +56 -35
- package/server/src/Http/Controllers/Internal/v1/SettingController.php +20 -0
- package/server/src/Http/Filter/OrderConfigFilter.php +13 -0
- package/server/src/Http/Requests/CreateIssueRequest.php +19 -0
- package/server/src/Http/Requests/UpdateIssueRequest.php +7 -0
- package/server/src/Http/Resources/v1/Order.php +3 -0
- package/server/src/Http/Resources/v1/Payload.php +1 -1
- package/server/src/Listeners/HandleOrderCanceled.php +8 -4
- package/server/src/Listeners/HandleOrderDispatched.php +14 -12
- package/server/src/Models/Order.php +527 -31
- package/server/src/Models/OrderConfig.php +419 -0
- package/server/src/Models/Payload.php +8 -7
- package/server/src/Notifications/OrderAssigned.php +1 -1
- package/server/src/Notifications/OrderCanceled.php +1 -1
- package/server/src/Notifications/OrderDispatchFailed.php +1 -1
- package/server/src/Notifications/OrderDispatched.php +1 -1
- package/server/src/Notifications/OrderPing.php +1 -1
- package/server/src/Providers/FleetOpsServiceProvider.php +3 -1
- package/server/src/Providers/NotificationServiceProvider.php +2 -1
- package/server/src/Support/Utils.php +17 -0
- package/server/src/Traits/HasTrackingNumber.php +9 -9
- package/server/src/routes.php +19 -11
- package/translations/en-us.yaml +137 -0
- package/server/src/Flow/Config.php +0 -7
- package/server/src/Support/Flow.php +0 -653
|
@@ -33,12 +33,6 @@
|
|
|
33
33
|
</div>
|
|
34
34
|
<span>{{t "fleet-ops.operations.orders.index.new.edit-order"}}</span>
|
|
35
35
|
</a>
|
|
36
|
-
<a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.addCustomField)}}>
|
|
37
|
-
<div class="w-6">
|
|
38
|
-
<FaIcon @icon="edit" />
|
|
39
|
-
</div>
|
|
40
|
-
<span>{{t "fleet-ops.operations.orders.index.new.add-field"}}</span>
|
|
41
|
-
</a>
|
|
42
36
|
</div>
|
|
43
37
|
</div>
|
|
44
38
|
</DropdownButton>
|
|
@@ -51,47 +45,27 @@
|
|
|
51
45
|
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4 lg:gap-2">
|
|
52
46
|
<div class="input-group">
|
|
53
47
|
<InputLabel @labelText={{t "fleet-ops.operations.orders.index.new.order-type"}} @helpText={{t "fleet-ops.operations.orders.index.new.order-type-help-text"}} />
|
|
54
|
-
<
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
48
|
+
<select class="form-select w-full has--placeholder" {{on "change" this.setConfig}}>
|
|
49
|
+
<option selected disabled>
|
|
50
|
+
{{t "fleet-ops.operations.orders.index.new.order-type-placeholder"}}
|
|
51
|
+
</option>
|
|
52
|
+
{{#each this.orderConfigs as |orderConfig|}}
|
|
53
|
+
<option value={{orderConfig.id}} selected={{eq this.orderConfig.id orderConfig.id}}>
|
|
54
|
+
{{orderConfig.name}}
|
|
55
|
+
</option>
|
|
56
|
+
{{/each}}
|
|
57
|
+
</select>
|
|
63
58
|
</div>
|
|
64
59
|
|
|
65
|
-
<InputGroup
|
|
66
|
-
@name={{t "fleet-ops.operations.orders.index.new.internal-id"}}
|
|
67
|
-
@value={{this.order.internal_id}}
|
|
68
|
-
@helpText={{t "fleet-ops.operations.orders.index.new.internal-id-help-text"}}
|
|
69
|
-
/>
|
|
60
|
+
<InputGroup @name={{t "fleet-ops.operations.orders.index.new.internal-id"}} @value={{this.order.internal_id}} @helpText={{t "fleet-ops.operations.orders.index.new.internal-id-help-text"}} />
|
|
70
61
|
|
|
71
62
|
<InputGroup>
|
|
72
63
|
<InputLabel @labelText={{t "fleet-ops.operations.orders.index.new.schedule"}} @helpText={{t "fleet-ops.operations.orders.index.new.schedule-help-text"}} />
|
|
73
|
-
<DateTimeInput
|
|
74
|
-
class="form-input"
|
|
75
|
-
@value={{this.order.scheduled_at}}
|
|
76
|
-
@minDate={{format-date (now) "yyyy-MM-dd"}}
|
|
77
|
-
@minTime={{format-date (now) "HH:mm"}}
|
|
78
|
-
@onUpdate={{this.scheduleOrder}}
|
|
79
|
-
@disabled={{this.order.dispatched}}
|
|
80
|
-
/>
|
|
64
|
+
<DateTimeInput class="form-input" @value={{this.order.scheduled_at}} @minDate={{format-date (now) "yyyy-MM-dd"}} @minTime={{format-date (now) "HH:mm"}} @onUpdate={{this.scheduleOrder}} @disabled={{this.order.dispatched}} />
|
|
81
65
|
</InputGroup>
|
|
82
66
|
|
|
83
67
|
<InputGroup @name={{t "fleet-ops.operations.orders.index.new.customer"}} @helpText={{t "fleet-ops.operations.orders.index.new.customer-help-text"}}>
|
|
84
|
-
<ModelSelect
|
|
85
|
-
@modelName="customer"
|
|
86
|
-
@selectedModel={{this.order.customer}}
|
|
87
|
-
@placeholder={{t "fleet-ops.operations.orders.index.new.customer-placeholder"}}
|
|
88
|
-
@triggerClass="form-select form-input"
|
|
89
|
-
@infiniteScroll={{false}}
|
|
90
|
-
@renderInPlace={{true}}
|
|
91
|
-
@allowClear={{true}}
|
|
92
|
-
@onChange={{this.setOrderCustomer}}
|
|
93
|
-
as |model|
|
|
94
|
-
>
|
|
68
|
+
<ModelSelect @modelName="customer" @selectedModel={{this.order.customer}} @placeholder={{t "fleet-ops.operations.orders.index.new.customer-placeholder"}} @triggerClass="form-select form-input" @infiniteScroll={{false}} @renderInPlace={{true}} @allowClear={{true}} @onChange={{this.setOrderCustomer}} as |model|>
|
|
95
69
|
<div class="flex items-center">
|
|
96
70
|
<div class="w-7">
|
|
97
71
|
<FaIcon @icon={{if model.isVendor "warehouse" "user"}} />
|
|
@@ -104,17 +78,7 @@
|
|
|
104
78
|
</InputGroup>
|
|
105
79
|
|
|
106
80
|
<InputGroup @name={{t "fleet-ops.operations.orders.index.new.facilitator"}} @helpText={{t "fleet-ops.operations.orders.index.new.facilitator-help-text"}}>
|
|
107
|
-
<ModelSelect
|
|
108
|
-
@modelName="facilitator"
|
|
109
|
-
@selectedModel={{this.order.facilitator}}
|
|
110
|
-
@placeholder={{t "fleet-ops.operations.orders.index.new.facilitator-placeholder"}}
|
|
111
|
-
@triggerClass="form-select form-input"
|
|
112
|
-
@allowClear={{true}}
|
|
113
|
-
@infiniteScroll={{false}}
|
|
114
|
-
@renderInPlace={{true}}
|
|
115
|
-
@onChange={{this.setOrderFacilitator}}
|
|
116
|
-
as |model|
|
|
117
|
-
>
|
|
81
|
+
<ModelSelect @modelName="facilitator" @selectedModel={{this.order.facilitator}} @placeholder={{t "fleet-ops.operations.orders.index.new.facilitator-placeholder"}} @triggerClass="form-select form-input" @allowClear={{true}} @infiniteScroll={{false}} @renderInPlace={{true}} @onChange={{this.setOrderFacilitator}} as |model|>
|
|
118
82
|
<div class="flex items-center">
|
|
119
83
|
<div class="w-7">
|
|
120
84
|
{{#if model.isIntegratedVendor}}
|
|
@@ -131,36 +95,13 @@
|
|
|
131
95
|
</InputGroup>
|
|
132
96
|
|
|
133
97
|
{{#if (and this.order.facilitator.isIntegratedVendor this.order.facilitator.service_types.length)}}
|
|
134
|
-
<InputGroup
|
|
135
|
-
@
|
|
136
|
-
@helpText={{concat (t "fleet-ops.operations.orders.index.new.service-type-help-text") this.order.facilitator.name "."}}
|
|
137
|
-
>
|
|
138
|
-
<Select
|
|
139
|
-
class="w-full"
|
|
140
|
-
@options={{this.order.facilitator.service_types}}
|
|
141
|
-
@value={{this.integratedVendorServiceType}}
|
|
142
|
-
@optionLabel="description"
|
|
143
|
-
@optionValue="key"
|
|
144
|
-
@onSelect={{this.selectIntegratedServiceType}}
|
|
145
|
-
@placeholder={{t "fleet-ops.operations.orders.index.new.service-type-placeholder"}}
|
|
146
|
-
/>
|
|
98
|
+
<InputGroup @name={{t "fleet-ops.operations.orders.index.new.service-type"}} @helpText={{concat (t "fleet-ops.operations.orders.index.new.service-type-help-text") this.order.facilitator.name "."}}>
|
|
99
|
+
<Select class="w-full" @options={{this.order.facilitator.service_types}} @value={{this.integratedVendorServiceType}} @optionLabel="description" @optionValue="key" @onSelect={{this.selectIntegratedServiceType}} @placeholder={{t "fleet-ops.operations.orders.index.new.service-type-placeholder"}} />
|
|
147
100
|
</InputGroup>
|
|
148
101
|
{{/if}}
|
|
149
102
|
|
|
150
103
|
<InputGroup @name={{t "fleet-ops.operations.orders.index.new.assign-driver"}} @helpText={{t "fleet-ops.operations.orders.index.new.assign-driver-help-text"}}>
|
|
151
|
-
<ModelSelect
|
|
152
|
-
@modelName="driver"
|
|
153
|
-
@selectedModel={{this.order.driver_assigned}}
|
|
154
|
-
@query={{@options.driversQuery}}
|
|
155
|
-
@placeholder={{t "fleet-ops.operations.orders.index.new.assign-driver-placeholder"}}
|
|
156
|
-
@triggerClass="form-select form-input"
|
|
157
|
-
@infiniteScroll={{false}}
|
|
158
|
-
@renderInPlace={{true}}
|
|
159
|
-
@allowClear={{true}}
|
|
160
|
-
@disabled={{this.isUsingIntegratedVendor}}
|
|
161
|
-
@onChange={{fn (mut this.order.driver_assigned)}}
|
|
162
|
-
as |model|
|
|
163
|
-
>
|
|
104
|
+
<ModelSelect @modelName="driver" @selectedModel={{this.order.driver_assigned}} @query={{@options.driversQuery}} @placeholder={{t "fleet-ops.operations.orders.index.new.assign-driver-placeholder"}} @triggerClass="form-select form-input" @infiniteScroll={{false}} @renderInPlace={{true}} @allowClear={{true}} @disabled={{this.isUsingIntegratedVendor}} @onChange={{fn (mut this.order.driver_assigned)}} as |model|>
|
|
164
105
|
<div class="flex items-center">
|
|
165
106
|
<div class="w-7">
|
|
166
107
|
<FaIcon @icon="id-card-alt" />
|
|
@@ -182,29 +123,14 @@
|
|
|
182
123
|
|
|
183
124
|
{{#if (and this.order.pod_required (not this.isUsingIntegratedVendor))}}
|
|
184
125
|
<InputGroup>
|
|
185
|
-
<InputLabel
|
|
186
|
-
|
|
187
|
-
@helpText={{t "fleet-ops.operations.orders.index.new.proof-delivery-help-text"}}
|
|
188
|
-
/>
|
|
189
|
-
<Select
|
|
190
|
-
class="w-full"
|
|
191
|
-
@options={{this.podOptions}}
|
|
192
|
-
@value={{this.order.pod_method}}
|
|
193
|
-
@onSelect={{fn (mut this.order.pod_method)}}
|
|
194
|
-
@placeholder={{t "fleet-ops.operations.orders.index.new.proof-delivery-placeholder"}}
|
|
195
|
-
/>
|
|
126
|
+
<InputLabel @labelText={{t "fleet-ops.operations.orders.index.new.proof-delivery"}} @helpText={{t "fleet-ops.operations.orders.index.new.proof-delivery-help-text"}} />
|
|
127
|
+
<Select class="w-full" @options={{this.podOptions}} @value={{this.order.pod_method}} @onSelect={{fn (mut this.order.pod_method)}} @placeholder={{t "fleet-ops.operations.orders.index.new.proof-delivery-placeholder"}} />
|
|
196
128
|
</InputGroup>
|
|
197
129
|
{{/if}}
|
|
198
130
|
|
|
199
131
|
{{#if this.order.adhoc}}
|
|
200
132
|
<div>
|
|
201
|
-
<InputGroup
|
|
202
|
-
@name={{t "fleet-ops.operations.orders.index.new.adhoc-ping"}}
|
|
203
|
-
@type="number"
|
|
204
|
-
@value={{this.order.adhoc_distance}}
|
|
205
|
-
@wrapperClass="mb-0"
|
|
206
|
-
@helpText={{t "fleet-ops.operations.orders.index.new.adhoc-ping-help-text"}}
|
|
207
|
-
/>
|
|
133
|
+
<InputGroup @name={{t "fleet-ops.operations.orders.index.new.adhoc-ping"}} @type="number" @value={{this.order.adhoc_distance}} @wrapperClass="mb-0" @helpText={{t "fleet-ops.operations.orders.index.new.adhoc-ping-help-text"}} />
|
|
208
134
|
<div class="mt-2 px-3 py-1 rounded-lg border border-blue-600 bg-blue-100 flex items-center">
|
|
209
135
|
<FaIcon @icon="triangle-exclamation" class="text-blue-900 mr-1.5" />
|
|
210
136
|
<span class="text-blue-900 text-xs">{{t "fleet-ops.operations.orders.index.new.adhoc-ping-message"}}</span>
|
|
@@ -214,106 +140,36 @@
|
|
|
214
140
|
|
|
215
141
|
<div class="lg:col-span-2">
|
|
216
142
|
<InputGroup @wrapperClass="pt-2">
|
|
217
|
-
<Toggle
|
|
218
|
-
@label={{t "fleet-ops.operations.orders.index.new.ad-hoc"}}
|
|
219
|
-
@wrapperClass="justify-start-i"
|
|
220
|
-
@isToggled={{this.order.adhoc}}
|
|
221
|
-
@onToggle={{this.toggleAdhoc}}
|
|
222
|
-
@disabled={{this.isUsingIntegratedVendor}}
|
|
223
|
-
@helpText={{t "fleet-ops.operations.orders.index.new.ad-hoc-help-text"}}
|
|
224
|
-
/>
|
|
143
|
+
<Toggle @label={{t "fleet-ops.operations.orders.index.new.ad-hoc"}} @wrapperClass="justify-start-i" @isToggled={{this.order.adhoc}} @onToggle={{this.toggleAdhoc}} @disabled={{this.isUsingIntegratedVendor}} @helpText={{t "fleet-ops.operations.orders.index.new.ad-hoc-help-text"}} />
|
|
225
144
|
</InputGroup>
|
|
226
145
|
</div>
|
|
227
146
|
|
|
228
147
|
<div class="lg:col-span-2">
|
|
229
148
|
<InputGroup @wrapperClass="pt-1">
|
|
230
|
-
<Toggle
|
|
231
|
-
@label={{t "fleet-ops.operations.orders.index.new.dispatch"}}
|
|
232
|
-
@wrapperClass="justify-start-i"
|
|
233
|
-
@isToggled={{this.order.dispatched}}
|
|
234
|
-
@onToggle={{fn (mut this.order.dispatched)}}
|
|
235
|
-
@disabled={{this.isUsingIntegratedVendor}}
|
|
236
|
-
@helpText={{t "fleet-ops.operations.orders.index.new.dispatch-help-text"}}
|
|
237
|
-
/>
|
|
149
|
+
<Toggle @label={{t "fleet-ops.operations.orders.index.new.dispatch"}} @wrapperClass="justify-start-i" @isToggled={{this.order.dispatched}} @onToggle={{fn (mut this.order.dispatched)}} @disabled={{this.isUsingIntegratedVendor}} @helpText={{t "fleet-ops.operations.orders.index.new.dispatch-help-text"}} />
|
|
238
150
|
</InputGroup>
|
|
239
151
|
</div>
|
|
240
152
|
|
|
241
153
|
<div class="lg:col-span-2">
|
|
242
154
|
<InputGroup @wrapperClass="pt-1">
|
|
243
|
-
<Toggle
|
|
244
|
-
@label={{t "fleet-ops.operations.orders.index.new.require-proof"}}
|
|
245
|
-
@wrapperClass="justify-start-i"
|
|
246
|
-
@isToggled={{this.order.pod_required}}
|
|
247
|
-
@onToggle={{this.toggleProofOfDelivery}}
|
|
248
|
-
@helpText={{t "fleet-ops.operations.orders.index.new.require-proof-help-text"}}
|
|
249
|
-
/>
|
|
155
|
+
<Toggle @label={{t "fleet-ops.operations.orders.index.new.require-proof"}} @wrapperClass="justify-start-i" @isToggled={{this.order.pod_required}} @onToggle={{this.toggleProofOfDelivery}} @helpText={{t "fleet-ops.operations.orders.index.new.require-proof-help-text"}} />
|
|
250
156
|
</InputGroup>
|
|
251
157
|
</div>
|
|
252
158
|
</div>
|
|
253
159
|
</ContentPanel>
|
|
254
160
|
|
|
255
|
-
{{#if this.
|
|
256
|
-
{{#each this.
|
|
257
|
-
<ContentPanel
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
@panelBodyClass="bg-white dark:bg-gray-800"
|
|
262
|
-
>
|
|
263
|
-
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4 lg:gap-2">
|
|
264
|
-
{{#each group.items as |metaField|}}
|
|
265
|
-
<div class="input-group {{if (eq metaField.type 'boolean') 'col-span-2 items-center' ''}}">
|
|
266
|
-
<div class="flex items-center justify-between">
|
|
267
|
-
{{#if (not-eq metaField.type "boolean")}}
|
|
268
|
-
<InputLabel @labelText={{metaField.label}} @required={{metaField.required}} />
|
|
269
|
-
{{/if}}
|
|
270
|
-
|
|
271
|
-
{{#if metaField.removable}}
|
|
272
|
-
<div class="flex items-center pr-1">
|
|
273
|
-
<a href="javascript:;" {{on "click" (fn this.removeMeta metaField)}}>
|
|
274
|
-
{{t "fleet-ops.common.remove"}}
|
|
275
|
-
</a>
|
|
276
|
-
</div>
|
|
277
|
-
{{/if}}
|
|
278
|
-
</div>
|
|
279
|
-
|
|
280
|
-
<CustomField
|
|
281
|
-
@metaField={{metaField}}
|
|
282
|
-
@value={{metaField.value}}
|
|
283
|
-
@placeholder={{metaField.label}}
|
|
284
|
-
@onChange={{fn (mut metaField.value)}}
|
|
285
|
-
class="{{if (eq metaField.type 'boolean') 'h-10 flex flex-row items-center' ''}}"
|
|
286
|
-
/>
|
|
287
|
-
</div>
|
|
161
|
+
{{#if this.orderConfig}}
|
|
162
|
+
{{#each this.customFieldGroups as |group|}}
|
|
163
|
+
<ContentPanel @title={{group.name}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
164
|
+
<div class="grid grid-cols-{{or group.meta.grid_size 1}} gap-2">
|
|
165
|
+
{{#each group.customFields as |customField|}}
|
|
166
|
+
<CustomField @customField={{customField}} @order={{this.order}} @orderConfig={{this.orderConfig}} @onChange={{this.setCustomFieldValue}} />
|
|
288
167
|
{{/each}}
|
|
289
168
|
</div>
|
|
290
169
|
</ContentPanel>
|
|
291
170
|
{{/each}}
|
|
292
171
|
{{/if}}
|
|
293
172
|
|
|
294
|
-
<ContentPanel
|
|
295
|
-
@title={{t "fleet-ops.operations.orders.index.new.metadata"}}
|
|
296
|
-
@open={{this.order.meta.length}}
|
|
297
|
-
@pad={{true}}
|
|
298
|
-
@panelBodyClass="bg-white dark:bg-gray-800"
|
|
299
|
-
@actionButtons={{this.metadataButtons}}
|
|
300
|
-
>
|
|
301
|
-
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4 lg:gap-2">
|
|
302
|
-
{{#each this.order.meta as |metaField index|}}
|
|
303
|
-
<InputGroup>
|
|
304
|
-
<div class="flex justify-between items-center mb-0.5">
|
|
305
|
-
<label>{{metaField.label}}</label>
|
|
306
|
-
<a href="javascript:;" class="text-xs" {{on "click" (fn this.editCustomField index)}}>
|
|
307
|
-
<FaIcon @icon="edit" @size="sm" class="mr-1" />
|
|
308
|
-
Edit
|
|
309
|
-
</a>
|
|
310
|
-
</div>
|
|
311
|
-
<Input class="w-full form-input" @value={{metaField.value}} placeholder={{metaField.label}} />
|
|
312
|
-
</InputGroup>
|
|
313
|
-
{{/each}}
|
|
314
|
-
</div>
|
|
315
|
-
</ContentPanel>
|
|
316
|
-
|
|
317
173
|
<ContentPanel @title={{t "fleet-ops.operations.orders.index.new.route"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
318
174
|
<div class="flex flex-row justify-between mb-4">
|
|
319
175
|
<div class="flex">
|
|
@@ -321,23 +177,8 @@
|
|
|
321
177
|
</div>
|
|
322
178
|
<div class="flex flex-1 justify-end space-x-2">
|
|
323
179
|
{{#if this.isMultipleDropoffOrder}}
|
|
324
|
-
<Button
|
|
325
|
-
|
|
326
|
-
@icon="magic"
|
|
327
|
-
@text={{t "fleet-ops.operations.orders.index.new.optimize-route"}}
|
|
328
|
-
@size="sm"
|
|
329
|
-
@onClick={{this.optimizeRoute}}
|
|
330
|
-
@helpText={{t "fleet-ops.operations.orders.index.new.optimize-route-help-text"}}
|
|
331
|
-
@disabled={{lt this.waypoints.length 3}}
|
|
332
|
-
@isLoading={{this.isOptimizingRoute}}
|
|
333
|
-
/>
|
|
334
|
-
<Button
|
|
335
|
-
@icon="map-marked-alt"
|
|
336
|
-
@text={{t "fleet-ops.operations.orders.index.new.add-waypoint"}}
|
|
337
|
-
@size="sm"
|
|
338
|
-
@onClick={{this.addWaypoint}}
|
|
339
|
-
@helpText={{t "fleet-ops.operations.orders.index.new.add-waypoint-help-text"}}
|
|
340
|
-
/>
|
|
180
|
+
<Button @type="magic" @icon="magic" @text={{t "fleet-ops.operations.orders.index.new.optimize-route"}} @size="sm" @onClick={{this.optimizeRoute}} @helpText={{t "fleet-ops.operations.orders.index.new.optimize-route-help-text"}} @disabled={{lt this.waypoints.length 3}} @isLoading={{this.isOptimizingRoute}} />
|
|
181
|
+
<Button @icon="map-marked-alt" @text={{t "fleet-ops.operations.orders.index.new.add-waypoint"}} @size="sm" @onClick={{this.addWaypoint}} @helpText={{t "fleet-ops.operations.orders.index.new.add-waypoint-help-text"}} />
|
|
341
182
|
{{/if}}
|
|
342
183
|
</div>
|
|
343
184
|
</div>
|
|
@@ -354,27 +195,12 @@
|
|
|
354
195
|
</div>
|
|
355
196
|
|
|
356
197
|
<div class="flex-1 px-3">
|
|
357
|
-
<ModelSelect
|
|
358
|
-
@modelName="place"
|
|
359
|
-
@selectedModel={{waypoint.place}}
|
|
360
|
-
@placeholder={{concat (t "fleet-ops.operations.orders.index.new.select-waypoint-placeholder") " " (add index 1)}}
|
|
361
|
-
@triggerClass="form-select form-input truncate max-w-300px"
|
|
362
|
-
@infiniteScroll={{false}}
|
|
363
|
-
@customSearchEndpoint="places/search"
|
|
364
|
-
@query={{hash geo=true latitude=this.userLatitude longitude=this.userLongitude}}
|
|
365
|
-
@renderInPlace={{true}}
|
|
366
|
-
@onChange={{fn this.setWaypointPlace index}}
|
|
367
|
-
as |model|
|
|
368
|
-
>
|
|
198
|
+
<ModelSelect @modelName="place" @selectedModel={{waypoint.place}} @placeholder={{concat (t "fleet-ops.operations.orders.index.new.select-waypoint-placeholder") " " (add index 1)}} @triggerClass="form-select form-input truncate max-w-300px" @infiniteScroll={{false}} @customSearchEndpoint="places/search" @query={{hash geo=true latitude=this.userLatitude longitude=this.userLongitude}} @renderInPlace={{true}} @onChange={{fn this.setWaypointPlace index}} as |model|>
|
|
369
199
|
{{model.address}}
|
|
370
200
|
</ModelSelect>
|
|
371
201
|
|
|
372
202
|
{{#if (and this.isUsingIntegratedVendor (is-not-facilitator-supported-place this.order.facilitator waypoint.place))}}
|
|
373
|
-
<InfoBlock
|
|
374
|
-
class="my-2 px-4 py-1.5 danger"
|
|
375
|
-
@blockClass="flex flex-row items-center"
|
|
376
|
-
@text={{concat this.order.facilitator.name (t "fleet-ops.operations.orders.index.new.infoblock-text")}}
|
|
377
|
-
/>
|
|
203
|
+
<InfoBlock class="my-2 px-4 py-1.5 danger" @blockClass="flex flex-row items-center" @text={{concat this.order.facilitator.name (t "fleet-ops.operations.orders.index.new.infoblock-text")}} />
|
|
378
204
|
{{/if}}
|
|
379
205
|
|
|
380
206
|
{{#if waypoint.place.hasInvalidCoordinates}}
|
|
@@ -412,27 +238,12 @@
|
|
|
412
238
|
</div>
|
|
413
239
|
</div>
|
|
414
240
|
|
|
415
|
-
<ModelSelect
|
|
416
|
-
@modelName="place"
|
|
417
|
-
@selectedModel={{this.payload.pickup}}
|
|
418
|
-
@placeholder={{t "fleet-ops.operations.orders.index.new.select-pickup"}}
|
|
419
|
-
@triggerClass="form-select form-input"
|
|
420
|
-
@infiniteScroll={{false}}
|
|
421
|
-
@customSearchEndpoint="places/search"
|
|
422
|
-
@query={{hash geo=true latitude=this.userLatitude longitude=this.userLongitude}}
|
|
423
|
-
@renderInPlace={{true}}
|
|
424
|
-
@onChange={{fn this.setPayloadPlace "pickup"}}
|
|
425
|
-
as |model|
|
|
426
|
-
>
|
|
241
|
+
<ModelSelect @modelName="place" @selectedModel={{this.payload.pickup}} @placeholder={{t "fleet-ops.operations.orders.index.new.select-pickup"}} @triggerClass="form-select form-input" @infiniteScroll={{false}} @customSearchEndpoint="places/search" @query={{hash geo=true latitude=this.userLatitude longitude=this.userLongitude}} @renderInPlace={{true}} @onChange={{fn this.setPayloadPlace "pickup"}} as |model|>
|
|
427
242
|
{{model.address}}
|
|
428
243
|
</ModelSelect>
|
|
429
244
|
|
|
430
245
|
{{#if (and this.isUsingIntegratedVendor (is-not-facilitator-supported-place this.order.facilitator this.payload.pickup))}}
|
|
431
|
-
<InfoBlock
|
|
432
|
-
class="my-2 px-4 py-1.5 danger"
|
|
433
|
-
@blockClass="flex flex-row items-center"
|
|
434
|
-
@text={{concat this.order.facilitator.name (t "fleet-ops.operations.orders.index.new.infoblock-text")}}
|
|
435
|
-
/>
|
|
246
|
+
<InfoBlock class="my-2 px-4 py-1.5 danger" @blockClass="flex flex-row items-center" @text={{concat this.order.facilitator.name (t "fleet-ops.operations.orders.index.new.infoblock-text")}} />
|
|
436
247
|
{{/if}}
|
|
437
248
|
|
|
438
249
|
{{#if this.payload.pickup.hasInvalidCoordinates}}
|
|
@@ -459,27 +270,12 @@
|
|
|
459
270
|
</div>
|
|
460
271
|
</div>
|
|
461
272
|
|
|
462
|
-
<ModelSelect
|
|
463
|
-
@modelName="place"
|
|
464
|
-
@selectedModel={{this.payload.dropoff}}
|
|
465
|
-
@placeholder={{t "fleet-ops.operations.orders.index.new.select-dropoff"}}
|
|
466
|
-
@triggerClass="form-select form-input"
|
|
467
|
-
@infiniteScroll={{false}}
|
|
468
|
-
@customSearchEndpoint="places/search"
|
|
469
|
-
@query={{hash geo=true latitude=this.userLatitude longitude=this.userLongitude}}
|
|
470
|
-
@renderInPlace={{true}}
|
|
471
|
-
@onChange={{fn this.setPayloadPlace "dropoff"}}
|
|
472
|
-
as |model|
|
|
473
|
-
>
|
|
273
|
+
<ModelSelect @modelName="place" @selectedModel={{this.payload.dropoff}} @placeholder={{t "fleet-ops.operations.orders.index.new.select-dropoff"}} @triggerClass="form-select form-input" @infiniteScroll={{false}} @customSearchEndpoint="places/search" @query={{hash geo=true latitude=this.userLatitude longitude=this.userLongitude}} @renderInPlace={{true}} @onChange={{fn this.setPayloadPlace "dropoff"}} as |model|>
|
|
474
274
|
{{model.address}}
|
|
475
275
|
</ModelSelect>
|
|
476
276
|
|
|
477
277
|
{{#if (and this.isUsingIntegratedVendor (is-not-facilitator-supported-place this.order.facilitator this.payload.dropoff))}}
|
|
478
|
-
<InfoBlock
|
|
479
|
-
class="my-2 px-4 py-1.5 danger"
|
|
480
|
-
@blockClass="flex flex-row items-center"
|
|
481
|
-
@text={{concat this.order.facilitator.name (t "fleet-ops.operations.orders.index.new.infoblock-text")}}
|
|
482
|
-
/>
|
|
278
|
+
<InfoBlock class="my-2 px-4 py-1.5 danger" @blockClass="flex flex-row items-center" @text={{concat this.order.facilitator.name (t "fleet-ops.operations.orders.index.new.infoblock-text")}} />
|
|
483
279
|
{{/if}}
|
|
484
280
|
|
|
485
281
|
{{#if this.payload.dropoff.hasInvalidCoordinates}}
|
|
@@ -499,27 +295,12 @@
|
|
|
499
295
|
{{/if}}
|
|
500
296
|
</div>
|
|
501
297
|
|
|
502
|
-
<ModelSelect
|
|
503
|
-
@modelName="place"
|
|
504
|
-
@selectedModel={{this.payload.return}}
|
|
505
|
-
@placeholder={{t "fleet-ops.operations.orders.index.new.select-return"}}
|
|
506
|
-
@triggerClass="form-select form-input"
|
|
507
|
-
@infiniteScroll={{false}}
|
|
508
|
-
@customSearchEndpoint="places/search"
|
|
509
|
-
@query={{hash geo=true latitude=this.userLatitude longitude=this.userLongitude}}
|
|
510
|
-
@renderInPlace={{true}}
|
|
511
|
-
@onChange={{fn this.setPayloadPlace "return"}}
|
|
512
|
-
as |model|
|
|
513
|
-
>
|
|
298
|
+
<ModelSelect @modelName="place" @selectedModel={{this.payload.return}} @placeholder={{t "fleet-ops.operations.orders.index.new.select-return"}} @triggerClass="form-select form-input" @infiniteScroll={{false}} @customSearchEndpoint="places/search" @query={{hash geo=true latitude=this.userLatitude longitude=this.userLongitude}} @renderInPlace={{true}} @onChange={{fn this.setPayloadPlace "return"}} as |model|>
|
|
514
299
|
{{model.address}}
|
|
515
300
|
</ModelSelect>
|
|
516
301
|
|
|
517
302
|
{{#if (and this.isUsingIntegratedVendor (is-not-facilitator-supported-place this.order.facilitator this.payload.return))}}
|
|
518
|
-
<InfoBlock
|
|
519
|
-
class="my-2 px-4 py-1.5 danger"
|
|
520
|
-
@blockClass="flex flex-row items-center"
|
|
521
|
-
@text={{concat this.order.facilitator.name (t "fleet-ops.operations.orders.index.new.infoblock-text")}}
|
|
522
|
-
/>
|
|
303
|
+
<InfoBlock class="my-2 px-4 py-1.5 danger" @blockClass="flex flex-row items-center" @text={{concat this.order.facilitator.name (t "fleet-ops.operations.orders.index.new.infoblock-text")}} />
|
|
523
304
|
{{/if}}
|
|
524
305
|
|
|
525
306
|
{{#if this.payload.return.hasInvalidCoordinates}}
|
|
@@ -533,9 +314,36 @@
|
|
|
533
314
|
{{/if}}
|
|
534
315
|
</ContentPanel>
|
|
535
316
|
|
|
317
|
+
{{#if this.renderableComponents}}
|
|
318
|
+
{{#each this.renderableComponents as |renderableComponent|}}
|
|
319
|
+
{{component renderableComponent order=this.order}}
|
|
320
|
+
{{/each}}
|
|
321
|
+
{{/if}}
|
|
322
|
+
|
|
536
323
|
<ContentPanel @title={{t "fleet-ops.operations.orders.index.new.payload-entities"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
537
324
|
{{#if this.isNotCsvImportedOrder}}
|
|
538
|
-
<
|
|
325
|
+
<div class="flex items-center mb-4">
|
|
326
|
+
<Button @wrapperClass="mr-2" @icon="square-plus" @iconPrefix="fas" @text={{t "fleet-ops.operations.orders.index.new.add-item-order"}} @size="sm" @onClick={{this.addEntity}} />
|
|
327
|
+
{{#if this.orderConfig.entities}}
|
|
328
|
+
<DropdownButton @type="magic" @icon="ellipsis-h" @size="sm" @iconPrefix="fas" @text={{t "fleet-ops.operations.orders.index.new.add-entity"}} @triggerClass="mr-2 hidden md:flex" as |dd|>
|
|
329
|
+
<div class="next-dd-menu mt-1 mx-0" aria-labelledby="user-menu">
|
|
330
|
+
{{#each this.orderConfig.entities as |customEntity|}}
|
|
331
|
+
<div class="p-1">
|
|
332
|
+
<a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.addFromCustomEntity customEntity)}}>
|
|
333
|
+
<div class="w-6">
|
|
334
|
+
<FaIcon @icon="cube" />
|
|
335
|
+
</div>
|
|
336
|
+
<div>
|
|
337
|
+
<div class="font-semibold">{{customEntity.name}}</div>
|
|
338
|
+
<span class="text-xs">{{customEntity.description}}</span>
|
|
339
|
+
</div>
|
|
340
|
+
</a>
|
|
341
|
+
</div>
|
|
342
|
+
{{/each}}
|
|
343
|
+
</div>
|
|
344
|
+
</DropdownButton>
|
|
345
|
+
{{/if}}
|
|
346
|
+
</div>
|
|
539
347
|
{{/if}}
|
|
540
348
|
{{#if this.isCsvImportedOrder}}
|
|
541
349
|
<div class="space-y-2">
|
|
@@ -547,13 +355,7 @@
|
|
|
547
355
|
<h4 class="font-bold dark:text-gray-100">{{group.waypoint.place.address}}</h4>
|
|
548
356
|
</div>
|
|
549
357
|
<div>
|
|
550
|
-
<Button
|
|
551
|
-
@icon="plus"
|
|
552
|
-
@iconPrefix="fas"
|
|
553
|
-
@text={{t "fleet-ops.operations.orders.index.new.add-item-button"}}
|
|
554
|
-
@size="sm"
|
|
555
|
-
@onClick={{fn this.addEntity group.importId}}
|
|
556
|
-
/>
|
|
358
|
+
<Button @icon="plus" @iconPrefix="fas" @text={{t "fleet-ops.operations.orders.index.new.add-item-button"}} @size="sm" @onClick={{fn this.addEntity group.importId}} />
|
|
557
359
|
</div>
|
|
558
360
|
</div>
|
|
559
361
|
<div class="grid grid-cols-2 lg:grid-cols-3 gap-4 lg:gap-2">
|
|
@@ -568,24 +370,12 @@
|
|
|
568
370
|
<Input @value={{entity.name}} @type="text" class="w-full form-input form-input-sm" placeholder={{t "fleet-ops.common.name"}} />
|
|
569
371
|
</div>
|
|
570
372
|
<div>
|
|
571
|
-
<Input
|
|
572
|
-
@value={{entity.sku}}
|
|
573
|
-
@type="text"
|
|
574
|
-
class="w-full form-input form-input-sm"
|
|
575
|
-
placeholder={{t "fleet-ops.operations.orders.index.new.sku"}}
|
|
576
|
-
/>
|
|
373
|
+
<Input @value={{entity.sku}} @type="text" class="w-full form-input form-input-sm" placeholder={{t "fleet-ops.operations.orders.index.new.sku"}} />
|
|
577
374
|
</div>
|
|
578
375
|
<Button @icon="pencil" @text={{t "fleet-ops.operations.orders.index.new.edit-item"}} @size="sm" @onClick={{fn this.editEntity entity}} />
|
|
579
376
|
</div>
|
|
580
377
|
<div class="absolute top-0 right-0 p-2">
|
|
581
|
-
<Button
|
|
582
|
-
@icon="times"
|
|
583
|
-
@iconPrefix="fas"
|
|
584
|
-
@type="danger"
|
|
585
|
-
@size="xs"
|
|
586
|
-
@onClick={{fn this.removeEntity entity}}
|
|
587
|
-
@wrapperClass={{if (eq index 0) "invisible"}}
|
|
588
|
-
/>
|
|
378
|
+
<Button @icon="times" @iconPrefix="fas" @type="danger" @size="xs" @onClick={{fn this.removeEntity entity}} @wrapperClass={{if (eq index 0) "invisible"}} />
|
|
589
379
|
</div>
|
|
590
380
|
</div>
|
|
591
381
|
</div>
|
|
@@ -626,14 +416,7 @@
|
|
|
626
416
|
<Button @icon="pencil" @text={{t "fleet-ops.operations.orders.index.new.edit-item"}} @size="sm" @onClick={{fn this.editEntity entity}} />
|
|
627
417
|
</div>
|
|
628
418
|
<div class="absolute top-0 right-0 p-2">
|
|
629
|
-
<Button
|
|
630
|
-
@icon="times"
|
|
631
|
-
@iconPrefix="fas"
|
|
632
|
-
@type="danger"
|
|
633
|
-
@size="xs"
|
|
634
|
-
@onClick={{fn this.removeEntity entity}}
|
|
635
|
-
@wrapperClass={{if (eq index 0) "invisible"}}
|
|
636
|
-
/>
|
|
419
|
+
<Button @icon="times" @iconPrefix="fas" @type="danger" @size="xs" @onClick={{fn this.removeEntity entity}} @wrapperClass={{if (eq index 0) "invisible"}} />
|
|
637
420
|
</div>
|
|
638
421
|
</div>
|
|
639
422
|
</div>
|
|
@@ -643,39 +426,15 @@
|
|
|
643
426
|
</ContentPanel>
|
|
644
427
|
|
|
645
428
|
<ContentPanel @title={{t "fleet-ops.common.service"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
646
|
-
<Toggle
|
|
647
|
-
@label={{t "fleet-ops.operations.orders.index.new.apply-service-rate"}}
|
|
648
|
-
@wrapperClass="justify-start-i mb-4"
|
|
649
|
-
@isToggled={{this.servicable}}
|
|
650
|
-
@onToggle={{this.checkServiceRates}}
|
|
651
|
-
@disabled={{this.isNotServicable}}
|
|
652
|
-
@helpText={{t "fleet-ops.operations.orders.index.new.service-help-text"}}
|
|
653
|
-
/>
|
|
429
|
+
<Toggle @label={{t "fleet-ops.operations.orders.index.new.apply-service-rate"}} @wrapperClass="justify-start-i mb-4" @isToggled={{this.servicable}} @onToggle={{this.checkServiceRates}} @disabled={{this.isNotServicable}} @helpText={{t "fleet-ops.operations.orders.index.new.service-help-text"}} />
|
|
654
430
|
|
|
655
431
|
{{#if this.servicable}}
|
|
656
|
-
<ContentPanel
|
|
657
|
-
@title={{t "fleet-ops.operations.orders.index.new.service-quotes"}}
|
|
658
|
-
@open={{true}}
|
|
659
|
-
@pad={{true}}
|
|
660
|
-
@wrapperClass="mt-6"
|
|
661
|
-
@panelBodyClass="bg-white dark:bg-gray-800"
|
|
662
|
-
>
|
|
432
|
+
<ContentPanel @title={{t "fleet-ops.operations.orders.index.new.service-quotes"}} @open={{true}} @pad={{true}} @wrapperClass="mt-6" @panelBodyClass="bg-white dark:bg-gray-800">
|
|
663
433
|
{{#unless this.isUsingIntegratedVendor}}
|
|
664
434
|
<div class="input-group mb-2i">
|
|
665
|
-
<InputLabel
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
/>
|
|
669
|
-
|
|
670
|
-
<Select
|
|
671
|
-
class="w-full"
|
|
672
|
-
@options={{this.serviceRates}}
|
|
673
|
-
@value={{this.selectedServiceRate}}
|
|
674
|
-
@optionLabel="service_name"
|
|
675
|
-
@optionValue="uuid"
|
|
676
|
-
@onSelect={{this.getQuotes}}
|
|
677
|
-
@placeholder={{t "fleet-ops.operations.orders.index.new.select-service-rate"}}
|
|
678
|
-
/>
|
|
435
|
+
<InputLabel @labelText={{t "fleet-ops.operations.orders.index.new.select-service-rate"}} @helpText={{t "fleet-ops.operations.orders.index.new.service-quotes-help-text"}} />
|
|
436
|
+
|
|
437
|
+
<Select class="w-full" @options={{this.serviceRates}} @value={{this.selectedServiceRate}} @optionLabel="service_name" @optionValue="uuid" @onSelect={{this.getQuotes}} @placeholder={{t "fleet-ops.operations.orders.index.new.select-service-rate"}} />
|
|
679
438
|
</div>
|
|
680
439
|
{{/unless}}
|
|
681
440
|
|
|
@@ -685,11 +444,7 @@
|
|
|
685
444
|
|
|
686
445
|
{{#if this.isFetchingQuotes}}
|
|
687
446
|
<div class="flex items-center justify-center py-5">
|
|
688
|
-
<Spinner
|
|
689
|
-
class="text-sm dark:text-gray-100 flex flex-row items-center"
|
|
690
|
-
@iconClass="mr-2"
|
|
691
|
-
@loadingMessage={{t "fleet-ops.operations.orders.index.new.loading-message"}}
|
|
692
|
-
/>
|
|
447
|
+
<Spinner class="text-sm dark:text-gray-100 flex flex-row items-center" @iconClass="mr-2" @loadingMessage={{t "fleet-ops.operations.orders.index.new.loading-message"}} />
|
|
693
448
|
</div>
|
|
694
449
|
{{else}}
|
|
695
450
|
<InfoBlock class="my-3" @text={{t "fleet-ops.operations.orders.index.new.info-text"}} />
|
|
@@ -698,14 +453,7 @@
|
|
|
698
453
|
{{#each this.serviceQuotes as |serviceQuote index|}}
|
|
699
454
|
<div class="radio-group-item shadow-sm flex-col pl-0i pr-0i {{if (eq @options.selected index) 'is-checked'}}">
|
|
700
455
|
<div class="flex flex-row items-center mb-2.5 px-4">
|
|
701
|
-
<RadioButton
|
|
702
|
-
@radioClass="focus:ring-blue-500 h-6 w-6 text-blue-500"
|
|
703
|
-
@radioId={{serviceQuote.uuid}}
|
|
704
|
-
@value={{serviceQuote.uuid}}
|
|
705
|
-
@groupValue={{this.selectedServiceQuote}}
|
|
706
|
-
@name="serviceQuote"
|
|
707
|
-
@changed={{fn (mut this.selectedServiceQuote)}}
|
|
708
|
-
/>
|
|
456
|
+
<RadioButton @radioClass="focus:ring-blue-500 h-6 w-6 text-blue-500" @radioId={{serviceQuote.uuid}} @value={{serviceQuote.uuid}} @groupValue={{this.selectedServiceQuote}} @name="serviceQuote" @changed={{fn (mut this.selectedServiceQuote)}} />
|
|
709
457
|
<label for={{serviceQuote.uuid}} class="ml-3 flex-1">{{serviceQuote.public_id}}</label>
|
|
710
458
|
<Badge @hideStatusDot={{true}} @status="info">
|
|
711
459
|
{{serviceQuote.request_id}}
|
|
@@ -743,15 +491,11 @@
|
|
|
743
491
|
</div>
|
|
744
492
|
</div>
|
|
745
493
|
{{else}}
|
|
746
|
-
<InfoBlock
|
|
747
|
-
class="my-2 px-4 py-1.5 warning"
|
|
748
|
-
@blockClass="flex flex-row items-center"
|
|
749
|
-
@text={{if
|
|
494
|
+
<InfoBlock class="my-2 px-4 py-1.5 warning" @blockClass="flex flex-row items-center" @text={{if
|
|
750
495
|
this.payloadCoordinates.length
|
|
751
496
|
(t "fleet-ops.operations.orders.index.new.no-service-info-text")
|
|
752
497
|
(t "fleet-ops.operations.orders.index.new.input-order-info-text")
|
|
753
|
-
}}
|
|
754
|
-
/>
|
|
498
|
+
}} />
|
|
755
499
|
{{/each}}
|
|
756
500
|
</div>
|
|
757
501
|
{{/if}}
|
|
@@ -766,9 +510,7 @@
|
|
|
766
510
|
<ContentPanel @title={{t "fleet-ops.operations.orders.index.view.documents-panel-title"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
767
511
|
<div class="space-y-4">
|
|
768
512
|
{{#if this.isUploading}}
|
|
769
|
-
<div
|
|
770
|
-
class="dropzone w-full rounded-lg px-4 py-8 bg-gray-50 dark:bg-gray-900 bg-opacity-25 text-gray-900 dark:text-white text-center flex flex-col items-center justify-center border-2 border-dashed border-gray-200 dark:border-indigo-500"
|
|
771
|
-
>
|
|
513
|
+
<div class="dropzone w-full rounded-lg px-4 py-8 bg-gray-50 dark:bg-gray-900 bg-opacity-25 text-gray-900 dark:text-white text-center flex flex-col items-center justify-center border-2 border-dashed border-gray-200 dark:border-indigo-500">
|
|
772
514
|
<div class="flex items-center justify-center py-5">
|
|
773
515
|
<Spinner class="text-sm dar:text-gray-100" @loadingMessage={{t "fleet-ops.common.uploading"}} />
|
|
774
516
|
</div>
|
|
@@ -833,6 +575,23 @@
|
|
|
833
575
|
</div>
|
|
834
576
|
</ContentPanel>
|
|
835
577
|
|
|
578
|
+
<ContentPanel @title={{t "fleet-ops.operations.orders.index.new.metadata"}} @open={{this.order.meta.length}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800" @actionButtons={{this.metadataButtons}}>
|
|
579
|
+
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4 lg:gap-2">
|
|
580
|
+
{{#each this.order.meta as |metaField index|}}
|
|
581
|
+
<InputGroup>
|
|
582
|
+
<div class="flex justify-between items-center mb-0.5">
|
|
583
|
+
<label>{{metaField.label}}</label>
|
|
584
|
+
<a href="javascript:;" class="text-xs" {{on "click" (fn this.editCustomField index)}}>
|
|
585
|
+
<FaIcon @icon="edit" @size="sm" class="mr-1" />
|
|
586
|
+
{{t "common.edit"}}
|
|
587
|
+
</a>
|
|
588
|
+
</div>
|
|
589
|
+
<Input class="w-full form-input" @value={{metaField.value}} placeholder={{metaField.label}} />
|
|
590
|
+
</InputGroup>
|
|
591
|
+
{{/each}}
|
|
592
|
+
</div>
|
|
593
|
+
</ContentPanel>
|
|
594
|
+
|
|
836
595
|
<Spacer @height="300px" />
|
|
837
596
|
</Overlay::Body>
|
|
838
597
|
</Overlay>
|