@fleetbase/fleetops-engine 0.4.16 → 0.4.18

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.
Files changed (225) hide show
  1. package/.php-cs-fixer.php +2 -0
  2. package/addon/components/activity-event-selector.hbs +35 -0
  3. package/addon/components/activity-event-selector.js +85 -0
  4. package/addon/components/activity-form-panel.hbs +23 -0
  5. package/addon/components/activity-form-panel.js +90 -0
  6. package/addon/components/activity-logic-builder.hbs +80 -0
  7. package/addon/components/activity-logic-builder.js +260 -0
  8. package/addon/components/contact-form-panel.hbs +1 -1
  9. package/addon/components/contact-panel.hbs +1 -1
  10. package/addon/components/custom-entity-form-panel.hbs +43 -0
  11. package/addon/components/custom-entity-form-panel.js +129 -0
  12. package/addon/components/custom-field-form-panel/options-input.hbs +12 -0
  13. package/addon/components/custom-field-form-panel/options-input.js +139 -0
  14. package/addon/components/custom-field-form-panel.hbs +77 -0
  15. package/addon/components/custom-field-form-panel.js +144 -0
  16. package/addon/components/custom-field.hbs +63 -41
  17. package/addon/components/custom-field.js +123 -25
  18. package/addon/components/driver-form-panel.hbs +1 -1
  19. package/addon/components/driver-panel.hbs +1 -1
  20. package/addon/components/edit-order-route-panel.hbs +1 -1
  21. package/addon/components/fleet-form-panel.hbs +1 -1
  22. package/addon/components/fleet-panel.hbs +1 -1
  23. package/addon/components/fuel-report-form-panel.hbs +1 -1
  24. package/addon/components/fuel-report-panel.hbs +1 -1
  25. package/addon/components/issue-form-panel.hbs +1 -1
  26. package/addon/components/issue-panel.hbs +1 -1
  27. package/addon/components/joint-graph.hbs +1 -0
  28. package/addon/components/joint-graph.js +103 -0
  29. package/addon/components/layout/fleet-ops-sidebar.hbs +3 -3
  30. package/addon/components/layout/fleet-ops-sidebar.js +1 -0
  31. package/addon/components/live-map.js +71 -28
  32. package/addon/components/modals/new-custom-field-group.hbs +5 -0
  33. package/addon/components/modals/new-order-config.hbs +3 -3
  34. package/addon/components/modals/order-new-activity.hbs +1 -1
  35. package/addon/components/order-config-manager/activity-flow.hbs +11 -0
  36. package/addon/components/order-config-manager/activity-flow.js +964 -0
  37. package/addon/components/order-config-manager/custom-fields.hbs +50 -0
  38. package/addon/components/order-config-manager/custom-fields.js +276 -0
  39. package/addon/components/order-config-manager/details.hbs +23 -0
  40. package/addon/components/order-config-manager/details.js +106 -0
  41. package/addon/components/order-config-manager/entities.hbs +54 -0
  42. package/addon/components/order-config-manager/entities.js +227 -0
  43. package/addon/components/order-config-manager-overlay.hbs +26 -0
  44. package/addon/components/order-config-manager-overlay.js +60 -0
  45. package/addon/components/order-config-manager.hbs +15 -0
  46. package/addon/components/order-config-manager.js +298 -0
  47. package/addon/components/order-flow.hbs +1 -0
  48. package/addon/components/order-flow.js +3 -0
  49. package/addon/components/place-form-panel.hbs +1 -1
  50. package/addon/components/place-panel.hbs +1 -1
  51. package/addon/components/vehicle-form-panel.hbs +1 -1
  52. package/addon/components/vehicle-panel.hbs +1 -1
  53. package/addon/components/vendor-form-panel.hbs +1 -1
  54. package/addon/components/vendor-panel.hbs +1 -1
  55. package/addon/controllers/application.js +5 -1
  56. package/addon/controllers/operations/order-config.js +43 -0
  57. package/addon/controllers/operations/orders/index/new.js +125 -21
  58. package/addon/controllers/operations/orders/index/view.js +87 -4
  59. package/addon/controllers/operations/orders/index.js +2 -2
  60. package/addon/engine.js +10 -1
  61. package/addon/initializers/load-jointjs.js +16 -0
  62. package/addon/routes/application.js +1 -1
  63. package/addon/routes/operations/order-config.js +28 -0
  64. package/addon/routes/operations/orders/index/new.js +2 -3
  65. package/addon/routes/operations/orders/index/view.js +1 -1
  66. package/addon/routes.js +1 -0
  67. package/addon/services/context-panel.js +65 -3
  68. package/addon/styles/fleetops-engine.css +268 -0
  69. package/addon/templates/application.hbs +1 -1
  70. package/addon/templates/operations/order-config.hbs +55 -0
  71. package/addon/templates/operations/orders/index/new.hbs +98 -339
  72. package/addon/templates/operations/orders/index/view.hbs +36 -96
  73. package/addon/templates/operations/orders/index.hbs +0 -1
  74. package/addon/utils/apply-context-component-arguments.js +4 -2
  75. package/addon/utils/create-custom-entity.js +22 -0
  76. package/addon/utils/create-flow-activity.js +31 -0
  77. package/addon/utils/get-custom-field-type-map.js +34 -0
  78. package/app/components/activity-event-selector.js +1 -0
  79. package/app/components/activity-form-panel.js +1 -0
  80. package/app/components/activity-logic-builder.js +1 -0
  81. package/app/components/custom-entity-form-panel.js +1 -0
  82. package/app/components/custom-field-form-panel/options-input.js +1 -0
  83. package/app/components/custom-field-form-panel.js +1 -0
  84. package/app/components/joint-graph.js +1 -0
  85. package/app/components/modals/new-custom-field-group.js +1 -0
  86. package/app/components/order-config-manager/activity-flow.js +1 -0
  87. package/app/components/order-config-manager/custom-fields.js +1 -0
  88. package/app/components/order-config-manager/details.js +1 -0
  89. package/app/components/order-config-manager/entities.js +1 -0
  90. package/app/components/order-config-manager-overlay.js +1 -0
  91. package/app/components/order-config-manager.js +1 -0
  92. package/app/components/order-flow.js +1 -0
  93. package/app/controllers/operations/order-config.js +1 -0
  94. package/app/routes/operations/order-config.js +1 -0
  95. package/app/templates/operations/order-config.js +1 -0
  96. package/app/utils/create-custom-entity.js +1 -0
  97. package/app/utils/create-flow-activity.js +1 -0
  98. package/app/utils/get-custom-field-type-map.js +1 -0
  99. package/composer.json +4 -3
  100. package/config/environment.js +1 -0
  101. package/extension.json +1 -1
  102. package/index.js +20 -0
  103. package/package.json +7 -5
  104. package/server/config/api.php +3 -650
  105. package/server/migrations/2023_04_27_053456_create_contacts_table.php +1 -2
  106. package/server/migrations/2023_04_27_053456_create_drivers_table.php +1 -2
  107. package/server/migrations/2023_04_27_053456_create_entities_table.php +1 -2
  108. package/server/migrations/2023_04_27_053456_create_fleet_drivers_table.php +1 -2
  109. package/server/migrations/2023_04_27_053456_create_fleets_table.php +1 -2
  110. package/server/migrations/2023_04_27_053456_create_fuel_reports_table.php +1 -2
  111. package/server/migrations/2023_04_27_053456_create_integrated_vendors_table.php +1 -2
  112. package/server/migrations/2023_04_27_053456_create_issues_table.php +1 -2
  113. package/server/migrations/2023_04_27_053456_create_orders_table.php +1 -2
  114. package/server/migrations/2023_04_27_053456_create_payloads_table.php +1 -2
  115. package/server/migrations/2023_04_27_053456_create_places_table.php +1 -2
  116. package/server/migrations/2023_04_27_053456_create_positions_table.php +1 -2
  117. package/server/migrations/2023_04_27_053456_create_proofs_table.php +1 -2
  118. package/server/migrations/2023_04_27_053456_create_purchase_rates_table.php +1 -2
  119. package/server/migrations/2023_04_27_053456_create_routes_table.php +1 -2
  120. package/server/migrations/2023_04_27_053456_create_service_areas_table.php +1 -2
  121. package/server/migrations/2023_04_27_053456_create_service_quote_items_table.php +1 -2
  122. package/server/migrations/2023_04_27_053456_create_service_quotes_table.php +1 -2
  123. package/server/migrations/2023_04_27_053456_create_service_rate_fees_table.php +1 -2
  124. package/server/migrations/2023_04_27_053456_create_service_rate_parcel_fees_table.php +1 -2
  125. package/server/migrations/2023_04_27_053456_create_service_rates_table.php +1 -2
  126. package/server/migrations/2023_04_27_053456_create_tracking_numbers_table.php +1 -2
  127. package/server/migrations/2023_04_27_053456_create_tracking_statuses_table.php +1 -2
  128. package/server/migrations/2023_04_27_053456_create_vehicles_table.php +1 -2
  129. package/server/migrations/2023_04_27_053456_create_vendors_table.php +1 -2
  130. package/server/migrations/2023_04_27_053456_create_waypoints_table.php +1 -2
  131. package/server/migrations/2023_04_27_053456_create_zones_table.php +1 -2
  132. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_companies_table.php +1 -2
  133. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_contacts_table.php +1 -2
  134. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_drivers_table.php +1 -2
  135. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_entities_table.php +1 -2
  136. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleet_drivers_table.php +1 -2
  137. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleets_table.php +1 -2
  138. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fuel_reports_table.php +1 -2
  139. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_integrated_vendors_table.php +1 -2
  140. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_issues_table.php +1 -2
  141. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_orders_table.php +1 -2
  142. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_payloads_table.php +1 -2
  143. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_places_table.php +1 -2
  144. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_positions_table.php +1 -2
  145. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_proofs_table.php +1 -2
  146. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_purchase_rates_table.php +1 -2
  147. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_routes_table.php +1 -2
  148. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_areas_table.php +1 -2
  149. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quote_items_table.php +1 -2
  150. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quotes_table.php +1 -2
  151. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_fees_table.php +1 -2
  152. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_parcel_fees_table.php +1 -2
  153. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rates_table.php +1 -2
  154. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_numbers_table.php +1 -2
  155. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_statuses_table.php +1 -2
  156. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vehicles_table.php +1 -2
  157. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vendors_table.php +1 -2
  158. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_waypoints_table.php +1 -2
  159. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_zones_table.php +1 -2
  160. package/server/migrations/2023_09_14_074512_update_vehicles_table.php +1 -2
  161. package/server/migrations/2023_09_14_074619_create_vehicle_devices_table.php +35 -36
  162. package/server/migrations/2023_09_26_071205_add_online_column_to_vehicles_table.php +1 -2
  163. package/server/migrations/2023_09_26_083957_create_fleet_vehicles_table.php +1 -2
  164. package/server/migrations/2023_09_27_023757_add_column_to_fleets_table.php +1 -2
  165. package/server/migrations/2023_10_05_074811_update_vehicle.php +1 -2
  166. package/server/migrations/2023_10_25_093014_create_vehicle_device_events_table.php +1 -2
  167. package/server/migrations/2023_11_03_072503_refactor_issues_table_columns.php +1 -2
  168. package/server/migrations/2023_11_06_040645_refactor_fuel_reports_table.php +1 -2
  169. package/server/migrations/2023_11_09_041807_add_status_column_to_fuel_reports_table.php +1 -2
  170. package/server/migrations/2023_11_15_062814_add_comments_column_and_resolved_at_column_to_vehicle_device_events_table.php +1 -2
  171. package/server/migrations/2023_11_17_053001_add_category_uuid_to_entities_table.php +1 -2
  172. package/server/migrations/2023_11_28_074244_add_supplier_uuid_column_to_entities_table.php +1 -2
  173. package/server/migrations/2023_12_14_100209_add_meta_column_on_driver_table copy.php +1 -2
  174. package/server/migrations/2024_02_18_100209_add_avatar_url_columns_table.php +3 -4
  175. package/server/migrations/2024_02_27_093648_create_order_configs_table.php +43 -0
  176. package/server/migrations/2024_03_07_075508_add_order_config_uuid_column_to_orders_table.php +28 -0
  177. package/server/migrations/2024_03_12_033527_add_public_id_column_to_order_configs_table.php +34 -0
  178. package/server/seeders/OrderConfigSeeder.php +23 -0
  179. package/server/src/Casts/OrderConfigEntities.php +53 -0
  180. package/server/src/Console/Commands/FixLegacyOrderConfigs.php +66 -0
  181. package/server/src/Events/DriverLocationChanged.php +1 -1
  182. package/server/src/Events/DriverSimulatedLocationChanged.php +1 -1
  183. package/server/src/Flow/Activity.php +232 -6
  184. package/server/src/Flow/Condition.php +84 -0
  185. package/server/src/Flow/Event.php +88 -0
  186. package/server/src/Flow/Flow.php +50 -0
  187. package/server/src/Flow/FlowResource.php +143 -0
  188. package/server/src/Flow/Logic.php +57 -1
  189. package/server/src/Http/Controllers/Api/v1/DriverController.php +2 -2
  190. package/server/src/Http/Controllers/Api/v1/IssueController.php +132 -0
  191. package/server/src/Http/Controllers/Api/v1/OrderController.php +152 -57
  192. package/server/src/Http/Controllers/Api/v1/OrganizationController.php +27 -0
  193. package/server/src/Http/Controllers/Api/v1/PlaceController.php +2 -3
  194. package/server/src/Http/Controllers/Controller.php +9 -0
  195. package/server/src/Http/Controllers/FleetOpsController.php +7 -0
  196. package/server/src/Http/Controllers/Internal/v1/OrderConfigController.php +40 -233
  197. package/server/src/Http/Controllers/Internal/v1/OrderController.php +58 -28
  198. package/server/src/Http/Controllers/Internal/v1/SettingController.php +20 -0
  199. package/server/src/Http/Filter/OrderConfigFilter.php +13 -0
  200. package/server/src/Http/Requests/CreateIssueRequest.php +19 -0
  201. package/server/src/Http/Requests/Internal/CreateOrderConfigRequest.php +40 -0
  202. package/server/src/Http/Requests/Internal/CreateOrderRequest.php +66 -0
  203. package/server/src/Http/Requests/Internal/DeleteOrderConfigRequest.php +0 -0
  204. package/server/src/Http/Requests/UpdateIssueRequest.php +7 -0
  205. package/server/src/Http/Resources/v1/Order.php +3 -0
  206. package/server/src/Listeners/HandleOrderCanceled.php +8 -4
  207. package/server/src/Listeners/HandleOrderDispatched.php +14 -12
  208. package/server/src/Models/Order.php +527 -31
  209. package/server/src/Models/OrderConfig.php +467 -0
  210. package/server/src/Models/Payload.php +6 -7
  211. package/server/src/Notifications/OrderAssigned.php +1 -1
  212. package/server/src/Notifications/OrderCanceled.php +1 -1
  213. package/server/src/Notifications/OrderDispatchFailed.php +1 -1
  214. package/server/src/Notifications/OrderDispatched.php +1 -1
  215. package/server/src/Notifications/OrderPing.php +1 -1
  216. package/server/src/Observers/CompanyObserver.php +20 -0
  217. package/server/src/Providers/FleetOpsServiceProvider.php +4 -1
  218. package/server/src/Providers/NotificationServiceProvider.php +2 -1
  219. package/server/src/Support/FleetOps.php +137 -0
  220. package/server/src/Support/Utils.php +17 -0
  221. package/server/src/Traits/HasTrackingNumber.php +9 -9
  222. package/server/src/routes.php +19 -11
  223. package/translations/en-us.yaml +137 -0
  224. package/server/src/Flow/Config.php +0 -7
  225. package/server/src/Support/Flow.php +0 -653
@@ -202,6 +202,25 @@
202
202
  </div>
203
203
  </ContentPanel>
204
204
 
205
+ {{#if @model.order_config}}
206
+ {{#each this.customFieldGroups as |group|}}
207
+ <ContentPanel @title={{group.name}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
208
+ <div class="grid grid-cols-{{or group.meta.grid_size 1}} gap-2">
209
+ {{#each group.customFields as |customField|}}
210
+ <div class="field-info-container space-y-2">
211
+ <div class="field-name">{{customField.label}}</div>
212
+ {{#if (and (eq customField.type "file-upload") customField.value.asFile)}}
213
+ <File @file={{customField.value.asFile}} @onDelete={{fn this.removeCustomFieldFile customField.value}} class="custom-field-file" />
214
+ {{else}}
215
+ <div class="field-value">{{n-a customField.value.value}}</div>
216
+ {{/if}}
217
+ </div>
218
+ {{/each}}
219
+ </div>
220
+ </ContentPanel>
221
+ {{/each}}
222
+ {{/if}}
223
+
205
224
  {{#if @model.purchase_rate}}
206
225
  <ContentPanel @title={{t "fleet-ops.operations.orders.index.view.purchase-rate-panel-title"}} @open={{true}} @pad={{false}} @panelBodyClass="bg-white dark:bg-gray-800">
207
226
  <div class="order-view-purchase-rate-table-wrapper next-table-wrapper h-auto table-fluid rounded-b-md">
@@ -239,33 +258,24 @@
239
258
  </ContentPanel>
240
259
  {{/if}}
241
260
 
242
- <ContentPanel @title={{t "fleet-ops.operations.orders.index.view.notes-title"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
243
- <p class="text-gray-700 dark:text-gray-300 leading-5 text-sm">{{n-a @model.notes}}</p>
261
+ <ContentPanel @title={{t "fleet-ops.operations.orders.index.view.notes-title"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800" @actionButtons={{this.notesPanelButtons}}>
262
+ {{#if this.isEditingOrderNotes}}
263
+ <Textarea @value={{@model.notes}} class="form-input w-full" placeholder={{t "fleet-ops.operations.orders.index.view.notes-placeholder"}} rows={{4}} />
264
+ <div class="flex items-center space-x-2">
265
+ <Button @type="primary" @icon="save" @text={{t "fleet-ops.operations.orders.index.view.save-order-note"}} @onClick={{perform this.saveOrderNotes}} @isLoading={{not this.saveOrderNotes.isIdle}} />
266
+ <Button @type="default" @icon="times" @text={{t "fleet-ops.common.cancel"}} @onClick={{this.saveOrderNotes}} />
267
+ </div>
268
+ {{else}}
269
+ <p class="text-gray-700 dark:text-gray-300 leading-5 text-sm">{{n-a @model.notes}}</p>
270
+ {{/if}}
244
271
  </ContentPanel>
245
-
272
+
246
273
  {{#if @model.isIntegratedVendorOrder}}
247
274
  <ContentPanel @title={{concat @model.facilitator.name (t "fleet-ops.operations.orders.index.view.order-details-title")}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
248
275
  <IntegratedOrderDetails @integratedVendor={{@model.facilitator}} @details={{@model.meta.integrated_vendor_order}} />
249
276
  </ContentPanel>
250
277
  {{/if}}
251
278
 
252
- {{#if @model.order_config}}
253
- {{#each @model.groupedMetaFields as |group|}}
254
- <ContentPanel @title={{if group.value (humanize group.value) (t "fleet-ops.operations.orders.index.view.additional-details-title")}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
255
- <div class="grid grid-cols-1 lg:grid-cols-2 gap-4 lg:gap-2">
256
- {{#each group.items as |metaField|}}
257
- <div class="field-info-container space-y-2">
258
- <div class="field-name">{{metaField.label}}</div>
259
- <div class="field-value">
260
- <CustomFieldValue @metaField={{metaField}} @value={{get @model.meta metaField.key}} />
261
- </div>
262
- </div>
263
- {{/each}}
264
- </div>
265
- </ContentPanel>
266
- {{/each}}
267
- {{/if}}
268
-
269
279
  {{#if @model.tracking_number}}
270
280
  <ContentPanel @title={{t "fleet-ops.operations.orders.index.view.tracking"}} @prefixTitleRight={{@model.tracking}} @isLoading={{not this.loadOrderRelations.isIdle}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
271
281
  <div class="mb-4 flex justify-end">
@@ -305,78 +315,10 @@
305
315
  {{/if}}
306
316
  </ContentPanel>
307
317
 
308
- {{#if @model.isStorefrontOrder}}
309
- <ContentPanel @title={{t "fleet-ops.operations.orders.index.view.order-summary"}} @prefixTitleRight={{if @model.payload.cod_amount "Cash" ""}} @prefixTitleRightClass="text-green-400" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
310
- <div class="flex flex-col space-y-4 p-2 overflow-hidden">
311
- {{#each @model.payload.entities as |entity|}}
312
- <div class="flex flex-1">
313
- <div class="mr-2">
314
- <div class="flex items-center justify-center w-6 h-5 border border-gray-200 dark:border-blue-400 rounded-md">
315
- <span class="text-blue-400 text-xs">{{entity.meta.quantity}}x</span>
316
- </div>
317
- </div>
318
- <div class="flex-1 flex">
319
- <div class="mr-4">
320
- <img src={{entity.photo_url}} class="w-12 h-12 rounded-md shadow-sm" alt={{entity.name}} />
321
- </div>
322
- <div>
323
- <h4 class="font-semibold dark:text-gray-100 mb-1 text-sm">{{entity.name}}</h4>
324
- <div class="flex flex-wrap truncate w-44">
325
- <p class="dark:text-gray-50 text-xs truncate">{{entity.description}}</p>
326
- </div>
327
- <div>
328
- {{#each entity.meta.variants as |variant|}}
329
- <div>
330
- <span class="text-xs dark:text-gray-50">{{variant.name}}</span>
331
- </div>
332
- {{/each}}
333
- </div>
334
- <div>
335
- {{#each entity.meta.addons as |addon|}}
336
- <div>
337
- <span class="text-xs dark:text-gray-50">+ {{addon.name}}</span>
338
- </div>
339
- {{/each}}
340
- </div>
341
- </div>
342
- </div>
343
- <div>
344
- <span class="dark:text-gray-50 text-sm">{{format-currency entity.meta.subtotal entity.currency}}</span>
345
- </div>
346
- </div>
347
- {{/each}}
348
- </div>
349
- <div class="p-2 space-y-2 border-t border-b dark:border-gray-800">
350
- <div class="flex items-center justify-between">
351
- <span class="dark:text-gray-50 text-sm">{{t "fleet-ops.operations.orders.index.view.subtotal"}}</span>
352
- <span class="dark:text-gray-50 text-sm">{{format-currency @model.meta.subtotal @model.meta.currency}}</span>
353
- </div>
354
- {{#unless @model.meta.is_pickup}}
355
- <div class="flex items-center justify-between">
356
- <span class="dark:text-gray-50 text-sm">{{t "fleet-ops.operations.orders.index.view.delivery-fee"}}</span>
357
- <span class="dark:text-gray-50 text-sm">{{format-currency @model.meta.delivery_fee @model.meta.currency}}</span>
358
- </div>
359
- {{/unless}}
360
- {{#if @model.meta.tip}}
361
- <div class="flex items-center justify-between">
362
- <span class="dark:text-gray-50 text-sm">{{t "fleet-ops.operations.orders.index.view.tip"}}</span>
363
- <span class="dark:text-gray-50 text-sm">{{get-tip-amount @model.meta.tip @model.meta.subtotal @model.meta.currency}}</span>
364
- </div>
365
- {{/if}}
366
- {{#if @model.meta.delivery_tip}}
367
- <div class="flex items-center justify-between">
368
- <span class="dark:text-gray-50 text-sm">{{t "fleet-ops.operations.orders.index.view.delivery-tip"}}</span>
369
- <span class="dark:text-gray-50 text-sm">{{get-tip-amount @model.meta.delivery_tip @model.meta.subtotal @model.meta.currency}}</span>
370
- </div>
371
- {{/if}}
372
- </div>
373
- <div class="p-2">
374
- <div class="flex items-center justify-between">
375
- <span class="dark:text-gray-50 font-bold text-sm">{{t "fleet-ops.operations.orders.index.view.total"}}</span>
376
- <span class="dark:text-gray-50 font-bold text-sm">{{format-currency @model.meta.total @model.meta.currency}}</span>
377
- </div>
378
- </div>
379
- </ContentPanel>
318
+ {{#if this.renderableComponents}}
319
+ {{#each this.renderableComponents as |renderableComponent|}}
320
+ {{component renderableComponent order=this.order}}
321
+ {{/each}}
380
322
  {{/if}}
381
323
 
382
324
  <ContentPanel @title={{t "fleet-ops.operations.orders.index.view.payload"}} @open={{gt @model.payload.entities.length 0}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
@@ -473,13 +415,11 @@
473
415
  </div>
474
416
  {{/if}}
475
417
  </ContentPanel>
476
-
418
+
477
419
  <ContentPanel @title={{t "fleet-ops.operations.orders.index.view.documents-panel-title"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
478
420
  <div class="space-y-4">
479
421
  {{#if this.isUploading}}
480
- <div
481
- 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"
482
- >
422
+ <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">
483
423
  <div class="flex items-center justify-center py-5">
484
424
  <Spinner class="text-sm dar:text-gray-100" @loadingMessage={{t "fleet-ops.common.uploading"}} />
485
425
  </div>
@@ -21,7 +21,6 @@
21
21
 
22
22
  {{#if this.isTableLayout}}
23
23
  <Layout::Section::Header @title={{t "fleet-ops.common.orders"}} @onSearch={{perform this.search}}>
24
- <Button @icon="cogs" @text={{t "fleet-ops.common.config"}} class="mr-2" @onClick={{fn (transition-to "operations.orders.index.config")}} />
25
24
  <FiltersPicker @columns={{this.columns}} @onApply={{fn this.filters.apply this}} @onClear={{fn this.filters.reset this}} @onFilterClear={{this.filters.clear}} @onChange={{this.filters.set}} @buttonWrapperClass="mr-2" />
26
25
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
27
26
  {{#if (safe-has this.table "selectedRows")}}
@@ -1,4 +1,6 @@
1
1
  import getModelName from '@fleetbase/ember-core/utils/get-model-name';
2
+ import isModel from '@fleetbase/ember-core/utils/is-model';
3
+ import { camelize } from '@ember/string';
2
4
 
3
5
  /**
4
6
  * Applies context and dynamic arguments to a given component.
@@ -9,8 +11,8 @@ export default function applyContextComponentArguments(component) {
9
11
  const { context, dynamicArgs = {} } = component.args;
10
12
 
11
13
  // Apply context model if available
12
- if (context) {
13
- const contextModelName = getModelName(context);
14
+ if (context && isModel(context)) {
15
+ const contextModelName = camelize(getModelName(context));
14
16
  if (contextModelName) {
15
17
  component[contextModelName] = context;
16
18
  }
@@ -0,0 +1,22 @@
1
+ import ObjectProxy from '@ember/object/proxy';
2
+ import config from '../config/environment';
3
+ import generateUUID from '@fleetbase/ember-core/utils/generate-uuid';
4
+ import { get } from '@ember/object';
5
+
6
+ export default function createCustomEntity(name = '', type = '', description = '', props = {}) {
7
+ return ObjectProxy.create({
8
+ content: {
9
+ id: generateUUID(),
10
+ name,
11
+ description,
12
+ type,
13
+ dimensions_unit: 'cm',
14
+ weight_unit: 'kg',
15
+ photo_url: typeof props.photo_url === 'string' ? props.photo_url : get(config, 'defaultValues.entityImage'),
16
+ ...props,
17
+ _internalModel: {
18
+ modelName: 'custom-entity',
19
+ },
20
+ },
21
+ });
22
+ }
@@ -0,0 +1,31 @@
1
+ import ObjectProxy from '@ember/object/proxy';
2
+ import generateUUID from '@fleetbase/ember-core/utils/generate-uuid';
3
+ import { underscore } from '@ember/string';
4
+
5
+ export default function createFlowActivity(name = '', status = '', details = '', sequence = 0, color = '#1f2937', props = {}) {
6
+ return ObjectProxy.create({
7
+ content: {
8
+ code: underscore(name),
9
+ key: underscore(name),
10
+ status,
11
+ details,
12
+ sequence,
13
+ color,
14
+ activities: [],
15
+ events: [],
16
+ logic: [],
17
+ actions: [],
18
+ entities: [],
19
+ complete: false,
20
+ require_pod: false,
21
+ pod_method: 'scan',
22
+ options: {},
23
+ node: null,
24
+ internalId: generateUUID(),
25
+ _internalModel: {
26
+ modelName: 'activity',
27
+ },
28
+ ...props,
29
+ },
30
+ });
31
+ }
@@ -0,0 +1,34 @@
1
+ export default function getCustomFieldTypeMap() {
2
+ return {
3
+ input: {
4
+ component: 'input',
5
+ },
6
+ phoneInput: {
7
+ component: 'phone-input',
8
+ },
9
+ moneyInput: {
10
+ component: 'money-input',
11
+ },
12
+ dateTimeInput: {
13
+ component: 'date-time-input',
14
+ },
15
+ radioButton: {
16
+ component: 'radio-button-select',
17
+ hasOptions: true,
18
+ },
19
+ select: {
20
+ component: 'select',
21
+ hasOptions: true,
22
+ },
23
+ // modelSelect: {
24
+ // allowedModels: ['driver', 'contact', 'vendor', 'place', 'issue', 'fuel-report'],
25
+ // component: 'model-select',
26
+ // },
27
+ fileUpload: {
28
+ component: 'file-upload',
29
+ },
30
+ // dropzone: {
31
+ // component: 'file-dropzone',
32
+ // },
33
+ };
34
+ }
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/activity-event-selector';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/activity-form-panel';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/activity-logic-builder';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/custom-entity-form-panel';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/custom-field-form-panel/options-input';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/custom-field-form-panel';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/joint-graph';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/modals/new-custom-field-group';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/order-config-manager/activity-flow';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/order-config-manager/custom-fields';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/order-config-manager/details';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/order-config-manager/entities';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/order-config-manager-overlay';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/order-config-manager';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/order-flow';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/operations/order-config';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/operations/order-config';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/templates/operations/order-config';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/create-custom-entity';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/create-flow-activity';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-custom-field-type-map';
package/composer.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetbase/fleetops-api",
3
- "version": "0.4.16",
3
+ "version": "0.4.18",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "keywords": [
6
6
  "fleetbase-extension",
@@ -22,7 +22,7 @@
22
22
  ],
23
23
  "require": {
24
24
  "php": "^8.0",
25
- "fleetbase/core-api": "^1.4.10",
25
+ "fleetbase/core-api": "^1.4.12",
26
26
  "barryvdh/laravel-dompdf": "^2.0",
27
27
  "brick/geo": "0.7.2",
28
28
  "cknow/laravel-money": "^7.1",
@@ -44,7 +44,8 @@
44
44
  },
45
45
  "autoload": {
46
46
  "psr-4": {
47
- "Fleetbase\\FleetOps\\": "server/src/"
47
+ "Fleetbase\\FleetOps\\": "server/src/",
48
+ "Fleetbase\\FleetOps\\Seeders\\": "server/seeders/"
48
49
  }
49
50
  },
50
51
  "autoload-dev": {
@@ -14,6 +14,7 @@ module.exports = function (environment) {
14
14
  contactImage: getenv('DEFAULT_CONTACT_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png'),
15
15
  vendorImage: getenv('DEFAULT_VENDOR_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png'),
16
16
  vehicleImage: getenv('DEFAULT_VEHICLE_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/vehicle-placeholder.png'),
17
+ entityImage: getenv('DEFAULT_ENTITY_IMAGE', 'https://flb-assets.s3-ap-southeast-1.amazonaws.com/static/parcels/medium.png'),
17
18
  vehicleAvatar: getenv('DEFAUL_VEHICLE_AVATAR', 'https://flb-assets.s3-ap-southeast-1.amazonaws.com/static/vehicle-icons/mini_bus.svg'),
18
19
  driverAvatar: getenv('DEFAUL_DRIVER_AVATAR', 'https://flb-assets.s3-ap-southeast-1.amazonaws.com/static/driver-icons/moto-driver.png'),
19
20
  placeAvatar: getenv('DEFAUL_PLACE_AVATAR', 'https://flb-assets.s3-ap-southeast-1.amazonaws.com/static/place-icons/basic-building.png'),
package/extension.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "Fleet-Ops",
3
- "version": "0.4.16",
3
+ "version": "0.4.18",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "repository": "https://github.com/fleetbase/fleetops",
6
6
  "license": "MIT",
package/index.js CHANGED
@@ -65,6 +65,26 @@ module.exports = buildEngine({
65
65
  );
66
66
  }
67
67
 
68
+ // jointjs
69
+ const jointJsPath = path.join(this.pathBase('@joint/core'), 'dist');
70
+ trees.push(
71
+ new Funnel(jointJsPath, {
72
+ destDir: '/',
73
+ include: ['joint.min.js'],
74
+ exclude: [],
75
+ })
76
+ );
77
+
78
+ // jointjs directed graph
79
+ const jointJsDirectedGraphPath = path.join(this.pathBase('@joint/layout-directed-graph'), 'dist');
80
+ trees.push(
81
+ new Funnel(jointJsDirectedGraphPath, {
82
+ destDir: '/',
83
+ include: ['DirectedGraph.min.js'],
84
+ exclude: [],
85
+ })
86
+ );
87
+
68
88
  trees.push(
69
89
  new Funnel(leafletImagesPath, {
70
90
  srcDir: '/',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleetbase/fleetops-engine",
3
- "version": "0.4.16",
3
+ "version": "0.4.18",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "fleetbase": {
6
6
  "route": "fleet-ops"
@@ -42,25 +42,27 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@babel/core": "^7.23.2",
45
- "@fleetbase/ember-core": "^0.2.4",
45
+ "@fleetbase/ember-core": "^0.2.6",
46
46
  "@fleetbase/ember-ui": "^0.2.11",
47
- "@fleetbase/fleetops-data": "^0.1.9",
47
+ "@fleetbase/fleetops-data": "^0.1.13",
48
48
  "@fleetbase/leaflet-routing-machine": "^3.2.16",
49
49
  "@fortawesome/ember-fontawesome": "^0.4.1",
50
50
  "@fortawesome/fontawesome-svg-core": "^6.4.0",
51
51
  "@fortawesome/free-solid-svg-icons": "^6.4.0",
52
+ "@joint/core": "^4.0.1",
53
+ "@joint/layout-directed-graph": "^4.0.1",
52
54
  "@terraformer/spatial": "^2.1.2",
53
55
  "@zestia/ember-dragula": "^12.0.0",
54
56
  "broccoli-funnel": "^3.0.8",
55
57
  "broccoli-merge-trees": "^4.2.0",
56
58
  "ember-cli-babel": "^8.2.0",
57
59
  "ember-cli-htmlbars": "^6.3.0",
60
+ "ember-drag-sort": "^3.0.1",
58
61
  "ember-intl": "6.3.2",
59
62
  "ember-leaflet": "^5.1.1",
60
63
  "ember-radio-button": "^3.0.0-beta.1",
61
64
  "ember-tag-input": "^3.1.0",
62
65
  "ember-wormhole": "^0.6.0",
63
- "ember-drag-sort": "^3.0.1",
64
66
  "leaflet": "^1.9.4",
65
67
  "leaflet-contextmenu": "^1.4.0",
66
68
  "leaflet-draw": "^1.0.4",
@@ -68,12 +70,12 @@
68
70
  "leaflet-rotatedmarker": "^0.2.0"
69
71
  },
70
72
  "devDependencies": {
71
- "@fleetbase/intl-lint": "^0.0.1",
72
73
  "@babel/eslint-parser": "^7.22.15",
73
74
  "@babel/plugin-proposal-decorators": "^7.23.2",
74
75
  "@ember/optional-features": "^2.0.0",
75
76
  "@ember/test-helpers": "^3.2.0",
76
77
  "@embroider/test-setup": "^3.0.2",
78
+ "@fleetbase/intl-lint": "^0.0.1",
77
79
  "@glimmer/component": "^1.1.2",
78
80
  "@glimmer/tracking": "^1.1.2",
79
81
  "broccoli-asset-rev": "^3.0.0",