@fleetbase/fleetops-engine 0.4.0 → 0.4.1

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 (202) hide show
  1. package/addon/components/admin/navigator-app.hbs +3 -3
  2. package/addon/components/admin/visibility-controls.hbs +4 -4
  3. package/addon/components/cell/driver-name.hbs +1 -1
  4. package/addon/components/contact-form-panel.hbs +15 -15
  5. package/addon/components/contact-form-panel.js +5 -1
  6. package/addon/components/contact-panel/details.hbs +7 -7
  7. package/addon/components/contact-panel.hbs +2 -2
  8. package/addon/components/display-place.hbs +2 -2
  9. package/addon/components/driver-card.hbs +1 -1
  10. package/addon/components/driver-form-panel.hbs +36 -29
  11. package/addon/components/driver-form-panel.js +5 -1
  12. package/addon/components/driver-panel/details.hbs +10 -10
  13. package/addon/components/driver-panel.hbs +5 -5
  14. package/addon/components/fleet-driver-listing.hbs +5 -5
  15. package/addon/components/fleet-form-panel.hbs +16 -16
  16. package/addon/components/fleet-form-panel.js +5 -1
  17. package/addon/components/fleet-panel/details.hbs +7 -7
  18. package/addon/components/fleet-panel/driver-listing.hbs +5 -5
  19. package/addon/components/fleet-panel/driver-listing.js +6 -0
  20. package/addon/components/fleet-panel/vehicle-listing.hbs +5 -5
  21. package/addon/components/fleet-panel/vehicle-listing.js +6 -0
  22. package/addon/components/fleet-vehicle-listing.hbs +5 -5
  23. package/addon/components/fuel-report-form-panel.hbs +16 -16
  24. package/addon/components/fuel-report-form-panel.js +5 -1
  25. package/addon/components/fuel-report-panel/details.hbs +11 -11
  26. package/addon/components/fuel-report-panel.hbs +3 -3
  27. package/addon/components/global-search.hbs +1 -1
  28. package/addon/components/horizontal-route.hbs +1 -1
  29. package/addon/components/integrated-order-details.hbs +13 -13
  30. package/addon/components/issue-form-panel.hbs +25 -25
  31. package/addon/components/issue-form-panel.js +6 -1
  32. package/addon/components/issue-panel/details.hbs +11 -11
  33. package/addon/components/issue-panel.hbs +3 -3
  34. package/addon/components/layout/fleet-ops-sidebar.hbs +2 -2
  35. package/addon/components/layout/fleet-ops-sidebar.js +28 -12
  36. package/addon/components/live-map-drawer/driver-listing.hbs +1 -1
  37. package/addon/components/live-map-drawer/driver-listing.js +16 -10
  38. package/addon/components/live-map-drawer/place-listing.hbs +1 -1
  39. package/addon/components/live-map-drawer/place-listing.js +12 -7
  40. package/addon/components/live-map-drawer/vehicle-listing.hbs +1 -1
  41. package/addon/components/live-map-drawer/vehicle-listing.js +15 -9
  42. package/addon/components/live-map.hbs +10 -92
  43. package/addon/components/live-map.js +29 -24
  44. package/addon/components/map-container/toolbar/visibility-control-panel.hbs +9 -9
  45. package/addon/components/map-container/toolbar/zones-panel.hbs +10 -10
  46. package/addon/components/map-container/toolbar.hbs +6 -6
  47. package/addon/components/modals/assign-driver.hbs +2 -2
  48. package/addon/components/modals/clone-config-form.hbs +2 -2
  49. package/addon/components/modals/contact-details.hbs +6 -6
  50. package/addon/components/modals/contact-form.hbs +11 -11
  51. package/addon/components/modals/driver-assign-order.hbs +2 -2
  52. package/addon/components/modals/driver-assign-vehicle.hbs +2 -2
  53. package/addon/components/modals/driver-assign-vendor.hbs +2 -2
  54. package/addon/components/modals/driver-details.hbs +14 -14
  55. package/addon/components/modals/driver-form.hbs +18 -18
  56. package/addon/components/modals/edit-meta-form.hbs +2 -2
  57. package/addon/components/modals/entity-form.hbs +16 -16
  58. package/addon/components/modals/entity-meta-field-prompt.hbs +1 -1
  59. package/addon/components/modals/fleet-details.hbs +6 -6
  60. package/addon/components/modals/fleet-form.hbs +8 -8
  61. package/addon/components/modals/fuel-report-details.hbs +9 -9
  62. package/addon/components/modals/fuel-report-form.hbs +8 -8
  63. package/addon/components/modals/group-details.hbs +4 -4
  64. package/addon/components/modals/group-form.hbs +6 -6
  65. package/addon/components/modals/install-prompt.hbs +2 -3
  66. package/addon/components/modals/issue-details.hbs +8 -8
  67. package/addon/components/modals/issue-from.hbs +21 -21
  68. package/addon/components/modals/map-field-form.hbs +2 -2
  69. package/addon/components/modals/map-field-group-form.hbs +1 -1
  70. package/addon/components/modals/map-layer-form.hbs +10 -10
  71. package/addon/components/modals/meta-field-form.hbs +2 -2
  72. package/addon/components/modals/meta-field-group-form.hbs +1 -1
  73. package/addon/components/modals/new-order-config.hbs +4 -4
  74. package/addon/components/modals/order-assign-driver.hbs +2 -2
  75. package/addon/components/modals/order-config-new-status.hbs +1 -1
  76. package/addon/components/modals/order-event.hbs +2 -2
  77. package/addon/components/modals/order-form.hbs +8 -8
  78. package/addon/components/modals/order-import.hbs +8 -8
  79. package/addon/components/modals/order-label.hbs +1 -1
  80. package/addon/components/modals/order-new-activity.hbs +10 -10
  81. package/addon/components/modals/order-route-form.hbs +17 -17
  82. package/addon/components/modals/place-assign-vendor.hbs +2 -2
  83. package/addon/components/modals/place-details.hbs +13 -13
  84. package/addon/components/modals/place-form.hbs +15 -15
  85. package/addon/components/modals/policy-form.hbs +5 -5
  86. package/addon/components/modals/role-form.hbs +3 -3
  87. package/addon/components/modals/select-payment-method.hbs +1 -1
  88. package/addon/components/modals/service-area-form.hbs +8 -8
  89. package/addon/components/modals/set-password.hbs +3 -3
  90. package/addon/components/modals/uninstall-prompt.hbs +2 -3
  91. package/addon/components/modals/user-form.hbs +9 -9
  92. package/addon/components/modals/vehicle-details.hbs +41 -41
  93. package/addon/components/modals/vehicle-form.hbs +73 -73
  94. package/addon/components/modals/vendor-details.hbs +10 -10
  95. package/addon/components/modals/vendor-form.hbs +36 -36
  96. package/addon/components/modals/view-service-area.hbs +1 -1
  97. package/addon/components/modals/zone-form.hbs +6 -6
  98. package/addon/components/order/header.hbs +11 -11
  99. package/addon/components/order/place-card.hbs +2 -2
  100. package/addon/components/order/schedule-card.hbs +6 -6
  101. package/addon/components/order/schedule-card.js +11 -7
  102. package/addon/components/order-config/activity-flow-editor.hbs +14 -14
  103. package/addon/components/order-config/activity-flow-editor.js +11 -11
  104. package/addon/components/order-config/details-editor.hbs +9 -9
  105. package/addon/components/order-config/entities-editor.hbs +13 -13
  106. package/addon/components/order-config/entities-editor.js +2 -2
  107. package/addon/components/order-config/fields-editor.hbs +14 -14
  108. package/addon/components/order-config/fields-editor.js +13 -12
  109. package/addon/components/order-config.hbs +9 -9
  110. package/addon/components/order-config.js +12 -11
  111. package/addon/components/order-list-overlay.hbs +14 -14
  112. package/addon/components/place-form-panel.hbs +18 -18
  113. package/addon/components/place-form-panel.js +6 -1
  114. package/addon/components/place-panel/details.hbs +10 -10
  115. package/addon/components/place-panel.hbs +2 -2
  116. package/addon/components/route-list.hbs +2 -2
  117. package/addon/components/settings-window.hbs +5 -5
  118. package/addon/components/settings-window.js +2 -1
  119. package/addon/components/vehicle-form-panel.hbs +27 -27
  120. package/addon/components/vehicle-form-panel.js +7 -2
  121. package/addon/components/vehicle-panel/details.hbs +7 -7
  122. package/addon/components/vehicle-panel.hbs +4 -4
  123. package/addon/components/vendor-form-panel/create-form.hbs +34 -33
  124. package/addon/components/vendor-form-panel/create-form.js +6 -2
  125. package/addon/components/vendor-form-panel/edit-form.hbs +27 -27
  126. package/addon/components/vendor-form-panel/edit-form.js +1 -0
  127. package/addon/components/vendor-form-panel.hbs +6 -6
  128. package/addon/components/vendor-form-panel.js +6 -1
  129. package/addon/components/vendor-panel/details.hbs +10 -10
  130. package/addon/components/vendor-panel.hbs +3 -3
  131. package/addon/components/widget/fleet-ops-quickstart.hbs +2 -2
  132. package/addon/components/widget/fleet-ops-quickstart.js +1 -0
  133. package/addon/components/widget/key-metrics.hbs +12 -12
  134. package/addon/components/widget/live-order-map.hbs +4 -4
  135. package/addon/components/widget/recent-orders.hbs +4 -4
  136. package/addon/components/widget/transactions.hbs +4 -4
  137. package/addon/controllers/management/contacts/index/edit.js +10 -3
  138. package/addon/controllers/management/contacts/index/new.js +7 -0
  139. package/addon/controllers/management/contacts/index.js +23 -16
  140. package/addon/controllers/management/drivers/index/edit.js +10 -3
  141. package/addon/controllers/management/drivers/index/new.js +7 -0
  142. package/addon/controllers/management/drivers/index.js +33 -19
  143. package/addon/controllers/management/fleets/index/edit.js +10 -3
  144. package/addon/controllers/management/fleets/index/new.js +7 -0
  145. package/addon/controllers/management/fleets/index.js +24 -17
  146. package/addon/controllers/management/fuel-reports/index/edit.js +10 -3
  147. package/addon/controllers/management/fuel-reports/index/new.js +7 -0
  148. package/addon/controllers/management/fuel-reports/index.js +20 -13
  149. package/addon/controllers/management/issues/index/edit.js +10 -3
  150. package/addon/controllers/management/issues/index/new.js +8 -0
  151. package/addon/controllers/management/issues/index.js +22 -15
  152. package/addon/controllers/management/places/index/edit.js +10 -3
  153. package/addon/controllers/management/places/index/new.js +7 -0
  154. package/addon/controllers/management/places/index.js +27 -20
  155. package/addon/controllers/management/vehicles/index/edit.js +10 -3
  156. package/addon/controllers/management/vehicles/index/new.js +7 -0
  157. package/addon/controllers/management/vehicles/index.js +22 -15
  158. package/addon/controllers/management/vendors/index/edit.js +10 -3
  159. package/addon/controllers/management/vendors/index/new.js +7 -0
  160. package/addon/controllers/management/vendors/index.js +23 -16
  161. package/addon/controllers/operations/orders/index/new.js +110 -25
  162. package/addon/controllers/operations/orders/index/view.js +40 -16
  163. package/addon/controllers/operations/orders/index.js +34 -27
  164. package/addon/controllers/operations/scheduler/index.js +3 -2
  165. package/addon/controllers/operations/service-rates/index/edit.js +9 -1
  166. package/addon/controllers/operations/service-rates/index/new.js +9 -1
  167. package/addon/controllers/operations/service-rates/index.js +16 -9
  168. package/addon/routes/management/places/index.js +1 -1
  169. package/addon/routes/operations/orders/index/view.js +2 -14
  170. package/addon/services/driver-actions.js +9 -8
  171. package/addon/services/vehicle-actions.js +2 -1
  172. package/addon/templates/management/contacts/index.hbs +6 -6
  173. package/addon/templates/management/drivers/index.hbs +6 -6
  174. package/addon/templates/management/fleets/index.hbs +6 -6
  175. package/addon/templates/management/fuel-reports/index.hbs +7 -7
  176. package/addon/templates/management/index.hbs +17 -17
  177. package/addon/templates/management/issues/index.hbs +6 -6
  178. package/addon/templates/management/places/index.hbs +6 -6
  179. package/addon/templates/management/vehicles/index.hbs +6 -6
  180. package/addon/templates/management/vendors/index.hbs +6 -6
  181. package/addon/templates/operations/orders/index/config/types.hbs +3 -3
  182. package/addon/templates/operations/orders/index/config.hbs +3 -4
  183. package/addon/templates/operations/orders/index/new.hbs +72 -72
  184. package/addon/templates/operations/orders/index/view.hbs +147 -53
  185. package/addon/templates/operations/orders/index.hbs +13 -13
  186. package/addon/templates/operations/scheduler/index.hbs +3 -3
  187. package/addon/templates/operations/service-rates/index/new.hbs +79 -81
  188. package/addon/templates/operations/service-rates/index.hbs +6 -6
  189. package/composer.json +2 -2
  190. package/extension.json +1 -1
  191. package/package.json +3 -1
  192. package/server/resources/views/labels/default.php +40 -18
  193. package/server/resources/views/labels/waypoint-label.php +126 -0
  194. package/server/src/Http/Controllers/Api/v1/OrderController.php +1 -1
  195. package/server/src/Http/Resources/v1/Entity.php +2 -2
  196. package/server/src/Http/Resources/v1/Payload.php +11 -30
  197. package/server/src/Http/Resources/v1/Place.php +3 -3
  198. package/server/src/Http/Resources/v1/Waypoint.php +101 -0
  199. package/server/src/Models/Payload.php +39 -0
  200. package/server/src/Models/Place.php +5 -2
  201. package/server/src/Models/Waypoint.php +15 -3
  202. package/translations/en-us.yaml +1341 -3
@@ -1,13 +1,20 @@
1
1
  <Overlay @position="right" @noBackdrop={{true}} @width="570px" @fullHeight={{true}} @isResizable={{true}} @onLoad={{this.setupInterface}} as |overlay|>
2
- <Overlay::Header @overlay={{overlay}} @title={{@model.public_id}} @status={{@model.status}} @dispatched={{@model.dispatched}} @createdAt={{@model.createdAt}} @onPressCancel={{this.transitionBack}}>
2
+ <Overlay::Header
3
+ @overlay={{overlay}}
4
+ @title={{@model.public_id}}
5
+ @status={{@model.status}}
6
+ @dispatched={{@model.dispatched}}
7
+ @createdAt={{@model.createdAt}}
8
+ @onPressCancel={{this.transitionBack}}
9
+ >
3
10
  {{#if @model.canBeDispatched}}
4
- <Button @type="primary" @icon="paper-plane" @text="Dispatch" class="mr-2" @onClick={{fn this.dispatchOrder @model}} />
11
+ <Button @type="primary" @icon="paper-plane" @text={{t "fleet-ops.operations.orders.index.view.dispatch"}} class="mr-2" @onClick={{fn this.dispatchOrder @model}} />
5
12
  {{/if}}
6
13
  <DropdownButton @icon="ellipsis-h" @size="sm" @iconPrefix="fas" as |dd|>
7
14
  <div class="next-dd-menu mt-1 mx-0" aria-labelledby="user-menu">
8
15
  <div class="px-1">
9
16
  <div class="text-sm flex flex-row items-center px-3 py-1 rounded-md my-1 text-gray-800 dark:text-gray-300">
10
- Order Actions
17
+ {{t "fleet-ops.operations.orders.index.view.order-actions"}}
11
18
  </div>
12
19
  </div>
13
20
  <div class="next-dd-menu-seperator"></div>
@@ -16,35 +23,35 @@
16
23
  <div class="w-6">
17
24
  <FaIcon @icon="edit" />
18
25
  </div>
19
- <span>Edit Details</span>
26
+ <span>{{t "fleet-ops.operations.orders.index.view.edit-details"}}</span>
20
27
  </a>
21
28
  {{#unless @model.isIntegratedVendorOrder}}
22
29
  <a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.createNewActivity @model)}}>
23
30
  <div class="w-6">
24
31
  <FaIcon @icon="signal" />
25
32
  </div>
26
- <span>Update Activity</span>
33
+ <span>{{t "fleet-ops.operations.orders.index.view.update-activity"}}</span>
27
34
  </a>
28
35
  {{#if @model.driver_assigned_uuid}}
29
36
  <a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.unassignDriver @model)}}>
30
37
  <div class="w-6">
31
38
  <FaIcon @icon="user-xmark" />
32
39
  </div>
33
- <span>Unassign Driver</span>
40
+ <span>{{t "fleet-ops.operations.orders.index.view.unassign-driver"}}</span>
34
41
  </a>
35
42
  {{else}}
36
43
  <a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.assignDriver @model)}}>
37
44
  <div class="w-6">
38
45
  <FaIcon @icon="user-check" />
39
46
  </div>
40
- <span>Assign Driver</span>
47
+ <span>{{t "fleet-ops.operations.orders.index.view.assign-driver"}}</span>
41
48
  </a>
42
49
  {{/if}}
43
50
  <a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.viewOrderLabel @model)}}>
44
51
  <div class="w-6">
45
52
  <FaIcon @icon="file-invoice" />
46
53
  </div>
47
- <span>Get Order Label</span>
54
+ <span>{{t "fleet-ops.operations.orders.index.view.get-order-label"}}</span>
48
55
  </a>
49
56
  {{/unless}}
50
57
  <div class="next-dd-menu-seperator"></div>
@@ -52,13 +59,13 @@
52
59
  <div class="w-6">
53
60
  <FaIcon @icon="headphones" />
54
61
  </div>
55
- <span>Listen to socket channel</span>
62
+ <span>{{t "fleet-ops.operations.orders.index.view.listen-socket-channel"}}</span>
56
63
  </a>
57
64
  <a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.viewOrderMeta @model)}}>
58
65
  <div class="w-6">
59
66
  <FaIcon @icon="table" />
60
67
  </div>
61
- <span>View metadata</span>
68
+ <span>{{t "fleet-ops.operations.orders.index.view.view-metadata"}}</span>
62
69
  </a>
63
70
  {{#unless @model.isCanceled}}
64
71
  <div class="next-dd-menu-seperator"></div>
@@ -66,14 +73,14 @@
66
73
  <div class="w-6">
67
74
  <FaIcon @icon="ban" class="text-danger" />
68
75
  </div>
69
- <span>Cancel Order</span>
76
+ <span>{{t "fleet-ops.operations.orders.index.view.cancel-order"}}</span>
70
77
  </a>
71
78
  {{/unless}}
72
79
  <a href="javascript:;" class="next-dd-item text-danger" {{on "click" (dropdown-fn dd this.deleteOrder @model)}}>
73
80
  <div class="w-6">
74
81
  <FaIcon @icon="trash" class="text-danger" />
75
82
  </div>
76
- <span>Delete Order</span>
83
+ <span>{{t "fleet-ops.operations.orders.index.view.delete-order"}}</span>
77
84
  </a>
78
85
  </div>
79
86
  </div>
@@ -81,7 +88,14 @@
81
88
  </Overlay::Header>
82
89
 
83
90
  <Overlay::Body @wrapperClass="new-order-overlay-body" @increaseInnerBodyHeightBy={{1000}}>
84
- <ContentPanel @title="Activity" @open={{true}} @pad={{false}} @isLoading={{this.isLoadingAdditionalData}} @panelBodyWrapperClass="px-0 py-4" @panelBodyClass="bg-white dark:bg-gray-800">
91
+ <ContentPanel
92
+ @title={{t "fleet-ops.operations.orders.index.view.activity"}}
93
+ @open={{true}}
94
+ @pad={{false}}
95
+ @isLoading={{not this.loadOrderRelations.isIdle}}
96
+ @panelBodyWrapperClass="px-0 py-4"
97
+ @panelBodyClass="bg-white dark:bg-gray-800"
98
+ >
85
99
  {{#if @model.tracking_statuses}}
86
100
  <Timeline @activity={{@model.tracking_statuses}} @arrowClass="bg-gray-600 border border-gray-900 shadow-md" as |TimelineItem|>
87
101
  <TimelineItem @activeStatus={{@model.status}} as |trackingStatus|>
@@ -102,7 +116,7 @@
102
116
  </Timeline>
103
117
  {{else}}
104
118
  <div class="px-10 py-2 flex items-center justify-center">
105
- <p class="text-red-600 dark:text-red-100">Unable to load order activity</p>
119
+ <p class="text-red-600 dark:text-red-100">{{t "fleet-ops.operations.orders.index.view.unable-load-order-activity"}}</p>
106
120
  </div>
107
121
  {{/if}}
108
122
  </ContentPanel>
@@ -113,15 +127,20 @@
113
127
  <Badge @hideStatusDot={{false}} @status="Dispatched" />
114
128
  {{/if}}
115
129
  {{#if @model.adhoc}}
116
- <Badge @hideStatusDot={{false}} @disableHumanize={{true}} @status="success">Ad-Hoc</Badge>
130
+ <Badge @hideStatusDot={{false}} @disableHumanize={{true}} @status="success">{{t "fleet-ops.operations.orders.index.view.ad-hoc"}}</Badge>
117
131
  {{/if}}
118
132
  </div>
119
133
  <div class="grid grid-cols-2 lg:grid-cols-3 field-info-containers-darker gap-4 lg:gap-2">
120
134
  <div class="field-info-container space-y-2">
121
- <div class="field-name">Customer</div>
135
+ <div class="field-name">{{t "fleet-ops.operations.orders.index.view.customer"}}</div>
122
136
  <div class="flex flex-row">
123
137
  <div>
124
- <Image src={{avatar-url @model.customer.photo_url}} @fallbackSrc={{config "defaultValues.contactImage"}} class="w-8 h-8 rounded-md shadow-sm mr-2" alt={{@model.customer.name}} />
138
+ <Image
139
+ src={{avatar-url @model.customer.photo_url}}
140
+ @fallbackSrc={{config "defaultValues.contactImage"}}
141
+ class="w-8 h-8 rounded-md shadow-sm mr-2"
142
+ alt={{@model.customer.name}}
143
+ />
125
144
  </div>
126
145
  <div>
127
146
  <div class="field-value">{{n-a @model.customer.name "No Customer"}}</div>
@@ -132,11 +151,16 @@
132
151
  </div>
133
152
  </div>
134
153
  <div class="field-info-container space-y-2">
135
- <div class="field-name">Facilitator</div>
154
+ <div class="field-name">{{t "fleet-ops.operations.orders.index.view.facilitator"}}</div>
136
155
  {{#if @model.facilitator.isIntegratedVendor}}
137
156
  <div class="flex flex-row">
138
157
  <div>
139
- <Image src={{avatar-url @model.facilitator.photo_url}} @fallbackSrc={{config "defaultValues.contactImage"}} class="w-8 h-8 rounded-md border border-gray-200 dark:border-gray-900 shadow-sm mr-2" alt={{@model.facilitator.name}} />
158
+ <Image
159
+ src={{avatar-url @model.facilitator.photo_url}}
160
+ @fallbackSrc={{config "defaultValues.contactImage"}}
161
+ class="w-8 h-8 rounded-md border border-gray-200 dark:border-gray-900 shadow-sm mr-2"
162
+ alt={{@model.facilitator.name}}
163
+ />
140
164
  </div>
141
165
  <div>
142
166
  <div class="field-value">{{n-a @model.facilitator.name}}</div>
@@ -148,12 +172,19 @@
148
172
  </div>
149
173
  <div class="field-info-container space-y-2">
150
174
  <div class="field-name flex flex-row items-center justify-between">
151
- <span>Driver Assigned</span>
175
+ <span>{{t "fleet-ops.operations.orders.index.view.driver-assigned"}}</span>
152
176
  </div>
153
177
  <div>
154
178
  <a href="javascript:;" class="flex flex-row" {{on "click" (fn this.focusOrderAssignedDriver @model)}}>
155
179
  <div>
156
- <Image src={{avatar-url @model.driver_assigned.photo_url}} @fallbackSrc={{config "defaultValues.driverImage"}} width="32" height="32" class="w-8 h-8 rounded-md shadow-sm mr-3 lg:mr-2" alt={{@model.driver_assigned.name}} />
180
+ <Image
181
+ src={{avatar-url @model.driver_assigned.photo_url}}
182
+ @fallbackSrc={{config "defaultValues.driverImage"}}
183
+ width="32"
184
+ height="32"
185
+ class="w-8 h-8 rounded-md shadow-sm mr-3 lg:mr-2"
186
+ alt={{@model.driver_assigned.name}}
187
+ />
157
188
  </div>
158
189
  <div class="field-value">
159
190
  <div>{{n-a @model.driver_assigned.name "No Driver"}}</div>
@@ -163,48 +194,70 @@
163
194
  </div>
164
195
  </a>
165
196
  <div class="mt-1">
166
- <Button @size="xs" @type="default" @icon="edit" @text={{if @model.has_driver_assigned "Change Driver" "Assign Driver"}} @onClick={{fn this.assignDriver @model}} />
197
+ <Button
198
+ @size="xs"
199
+ @type="default"
200
+ @icon="edit"
201
+ @text={{if @model.has_driver_assigned (t "fleet-ops.operations.orders.index.view.change-driver") (t "fleet-ops.operations.orders.index.view.assign-driver")}}
202
+ @onClick={{fn this.assignDriver @model}}
203
+ />
167
204
  </div>
168
205
  </div>
169
206
  </div>
170
207
  <div class="field-info-container space-y-2">
171
- <div class="field-name">Internal ID</div>
208
+ <div class="field-name">{{t "fleet-ops.common.internal-id"}}</div>
172
209
  <div class="field-value">{{n-a @model.internal_id}}</div>
173
210
  </div>
174
211
  <div class="field-info-container space-y-2">
175
- <div class="field-name">Tracking Number</div>
212
+ <div class="field-name">{{t "fleet-ops.operations.orders.index.view.tracking-number"}}</div>
176
213
  <div class="field-value">{{n-a @model.tracking_number.tracking_number}}</div>
177
214
  </div>
178
215
  <div class="field-info-container space-y-2">
179
- <div class="field-name">Type</div>
216
+ <div class="field-name">{{t "fleet-ops.common.type"}}</div>
180
217
  <div class="field-value">
181
218
  <Badge @status="default">{{n-a (humanize @model.type)}}</Badge>
182
219
  </div>
183
220
  </div>
184
221
  <div class="field-info-container space-y-2">
185
- <div class="field-name">Date Scheduled</div>
222
+ <div class="field-name">{{t "fleet-ops.operations.orders.index.view.date-scheduled"}}</div>
186
223
  <div class="field-value">{{n-a @model.scheduledAt}}</div>
187
224
  </div>
188
225
  <div class="field-info-container space-y-2">
189
- <div class="field-name">Date Dispatched</div>
226
+ <div class="field-name">{{t "fleet-ops.operations.orders.index.view.date-dispatched"}}</div>
190
227
  <div class="field-value">{{n-a @model.dispatchedAt}}</div>
191
228
  </div>
192
229
  <div class="field-info-container space-y-2">
193
- <div class="field-name">Date Started</div>
230
+ <div class="field-name">{{t "fleet-ops.operations.orders.index.view.date-started"}}</div>
194
231
  <div class="field-value">{{n-a @model.startedAt}}</div>
195
232
  </div>
233
+ {{#if @model.pod_required}}
234
+ <div class="field-info-container space-y-2">
235
+ <div class="field-name">{{t "fleet-ops.operations.orders.index.view.proof-of-delivery"}}</div>
236
+ <div class="field-value">{{n-a (smart-humanize @model.pod_method)}}</div>
237
+ </div>
238
+ {{/if}}
196
239
  </div>
197
240
  </ContentPanel>
198
241
 
199
242
  {{#if @model.isIntegratedVendorOrder}}
200
- <ContentPanel @title={{concat @model.facilitator.name " Order Details"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
243
+ <ContentPanel
244
+ @title={{concat @model.facilitator.name (t "fleet-ops.operations.orders.index.view.order-details-title")}}
245
+ @open={{true}}
246
+ @pad={{true}}
247
+ @panelBodyClass="bg-white dark:bg-gray-800"
248
+ >
201
249
  <IntegratedOrderDetails @integratedVendor={{@model.facilitator}} @details={{@model.meta.integrated_vendor_order}} />
202
250
  </ContentPanel>
203
251
  {{/if}}
204
252
 
205
253
  {{#if @model.order_config}}
206
254
  {{#each @model.groupedMetaFields as |group|}}
207
- <ContentPanel @title={{if group.value (humanize group.value) "Additional Details"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
255
+ <ContentPanel
256
+ @title={{if group.value (humanize group.value) (t "fleet-ops.operations.orders.index.view.additional-details-title")}}
257
+ @open={{true}}
258
+ @pad={{true}}
259
+ @panelBodyClass="bg-white dark:bg-gray-800"
260
+ >
208
261
  <div class="grid grid-cols-1 lg:grid-cols-2 gap-4 lg:gap-2">
209
262
  {{#each group.items as |metaField|}}
210
263
  <div class="field-info-container space-y-2">
@@ -220,7 +273,14 @@
220
273
  {{/if}}
221
274
 
222
275
  {{#if @model.tracking_number}}
223
- <ContentPanel @title="Tracking" @prefixTitleRight={{@model.tracking}} @isLoading={{this.isLoadingAdditionalData}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
276
+ <ContentPanel
277
+ @title={{t "fleet-ops.operations.orders.index.view.tracking"}}
278
+ @prefixTitleRight={{@model.tracking}}
279
+ @isLoading={{not this.loadOrderRelations.isIdle}}
280
+ @open={{true}}
281
+ @pad={{true}}
282
+ @panelBodyClass="bg-white dark:bg-gray-800"
283
+ >
224
284
  <div class="mb-4 flex justify-end">
225
285
  <Button @size="xs" @type="default" @icon="barcode" @text="Get Order Label" @onClick={{fn this.viewOrderLabel @model}} />
226
286
  </div>
@@ -243,15 +303,15 @@
243
303
  {{else}}
244
304
  <div class="grid grid-cols-1 lg:grid-cols-2 gap-4 lg:gap-2">
245
305
  <div class="field-info-container">
246
- <label class="field-name">Pickup</label>
306
+ <label class="field-name">{{t "fleet-ops.operations.orders.index.view.pickup"}}</label>
247
307
  <DisplayPlace @place={{@model.payload.pickup}} />
248
308
  </div>
249
309
  <div class="field-info-container">
250
- <label class="field-name">Dropoff</label>
310
+ <label class="field-name">{{t "fleet-ops.operations.orders.index.view.dropoff"}}</label>
251
311
  <DisplayPlace @place={{@model.payload.dropoff}} />
252
312
  </div>
253
313
  <div class="field-info-container">
254
- <label class="field-name">Return</label>
314
+ <label class="field-name">{{t "fleet-ops.operations.orders.index.view.return"}}</label>
255
315
  <DisplayPlace @place={{@model.payload.return}} />
256
316
  </div>
257
317
  </div>
@@ -259,7 +319,14 @@
259
319
  </ContentPanel>
260
320
 
261
321
  {{#if @model.isStorefrontOrder}}
262
- <ContentPanel @title="Order Summary" @prefixTitleRight={{if @model.payload.cod_amount "Cash" ""}} @prefixTitleRightClass="text-green-400" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
322
+ <ContentPanel
323
+ @title={{t "fleet-ops.operations.orders.index.view.order-summary"}}
324
+ @prefixTitleRight={{if @model.payload.cod_amount "Cash" ""}}
325
+ @prefixTitleRightClass="text-green-400"
326
+ @open={{true}}
327
+ @pad={{true}}
328
+ @panelBodyClass="bg-white dark:bg-gray-800"
329
+ >
263
330
  <div class="flex flex-col space-y-4 p-2 overflow-hidden">
264
331
  {{#each @model.payload.entities as |entity|}}
265
332
  <div class="flex flex-1">
@@ -301,49 +368,50 @@
301
368
  </div>
302
369
  <div class="p-2 space-y-2 border-t border-b dark:border-gray-800">
303
370
  <div class="flex items-center justify-between">
304
- <span class="dark:text-gray-50 text-sm">Subtotal</span>
371
+ <span class="dark:text-gray-50 text-sm">{{t "fleet-ops.operations.orders.index.view.subtotal"}}</span>
305
372
  <span class="dark:text-gray-50 text-sm">{{format-currency @model.meta.subtotal @model.meta.currency}}</span>
306
373
  </div>
307
374
  {{#unless @model.meta.is_pickup}}
308
375
  <div class="flex items-center justify-between">
309
- <span class="dark:text-gray-50 text-sm">Delivery fee</span>
376
+ <span class="dark:text-gray-50 text-sm">{{t "fleet-ops.operations.orders.index.view.delivery-fee"}}</span>
310
377
  <span class="dark:text-gray-50 text-sm">{{format-currency @model.meta.delivery_fee @model.meta.currency}}</span>
311
378
  </div>
312
379
  {{/unless}}
313
380
  {{#if @model.meta.tip}}
314
381
  <div class="flex items-center justify-between">
315
- <span class="dark:text-gray-50 text-sm">Tip</span>
382
+ <span class="dark:text-gray-50 text-sm">{{t "fleet-ops.operations.orders.index.view.tip"}}</span>
316
383
  <span class="dark:text-gray-50 text-sm">{{get-tip-amount @model.meta.tip @model.meta.subtotal @model.meta.currency}}</span>
317
384
  </div>
318
385
  {{/if}}
319
386
  {{#if @model.meta.delivery_tip}}
320
387
  <div class="flex items-center justify-between">
321
- <span class="dark:text-gray-50 text-sm">Delivery Tip</span>
388
+ <span class="dark:text-gray-50 text-sm">{{t "fleet-ops.operations.orders.index.view.delivery-tip"}}</span>
322
389
  <span class="dark:text-gray-50 text-sm">{{get-tip-amount @model.meta.delivery_tip @model.meta.subtotal @model.meta.currency}}</span>
323
390
  </div>
324
391
  {{/if}}
325
392
  </div>
326
393
  <div class="p-2">
327
394
  <div class="flex items-center justify-between">
328
- <span class="dark:text-gray-50 font-bold text-sm">Total</span>
395
+ <span class="dark:text-gray-50 font-bold text-sm">{{t "fleet-ops.operations.orders.index.view.total"}}</span>
329
396
  <span class="dark:text-gray-50 font-bold text-sm">{{format-currency @model.meta.total @model.meta.currency}}</span>
330
397
  </div>
331
398
  </div>
332
399
  </ContentPanel>
333
400
  {{/if}}
334
401
 
335
- <ContentPanel @title="Payload" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
402
+ <ContentPanel @title={{t "fleet-ops.operations.orders.index.view.payload"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
336
403
  {{#if this.isMultiDropOrder}}
337
404
  <div class="space-y-2">
338
405
  {{#each this.entitiesByDestination as |group|}}
339
406
  <div class="rounded-md border border-gray-200 dark:border-gray-900 p-3">
340
407
  <div class="mb-3 flex justify-between items-start">
341
408
  <div class="flex-1">
342
- <div class="dark:text-gray-100 text-sm mb-1 font-mono">Items drop at</div>
409
+ <div class="dark:text-gray-100 text-sm mb-1 font-mono">{{t "fleet-ops.operations.orders.index.view.items-drop"}}</div>
343
410
  {{!-- <h4 class="font-bold dark:text-gray-100">{{group.waypoint.address}}</h4> --}}
344
411
  <DisplayPlace @place={{group.waypoint}} @addressClass="text-sm font-mono" />
345
412
  <div class="my-2">
346
- <span class="rounded-md bg-yellow-300 text-yellow-900 px-2 py-1 text-sm">Tracking: {{group.waypoint.tracking}}</span>
413
+ <span class="rounded-md bg-yellow-300 text-yellow-900 px-2 py-1 text-sm">{{t "fleet-ops.operations.orders.index.view.tracking"}}
414
+ {{group.waypoint.tracking}}</span>
347
415
  </div>
348
416
  </div>
349
417
  <div>
@@ -351,25 +419,39 @@
351
419
  <Badge @status={{group.waypoint.status_code}} />
352
420
  </div>
353
421
  <div class="flex items-start">
354
- <DropdownButton @triggerClass="mr-2" @iconClass="icon-text-height" @buttonSize="sm" @icon="ellipsis-h" @iconPrefix="fas" @contentClass="dropdown-menu" as |dd|>
422
+ <DropdownButton
423
+ @triggerClass="mr-2"
424
+ @iconClass="icon-text-height"
425
+ @buttonSize="sm"
426
+ @icon="ellipsis-h"
427
+ @iconPrefix="fas"
428
+ @contentClass="dropdown-menu"
429
+ as |dd|
430
+ >
355
431
  <div class="next-dd-menu mt-1 mx-0" aria-labelledby="user-menu">
356
432
  <div class="px-1">
357
433
  <div class="text-sm flex flex-row items-center px-3 py-1 rounded-md my-1 text-gray-300">
358
- Waypoint Actions
434
+ {{t "fleet-ops.operations.orders.index.view.waypoint-actions"}}
359
435
  </div>
360
436
  </div>
361
437
  <div class="next-dd-menu-seperator"></div>
362
438
  <div class="px-1">
363
439
  <a href="javascript:;" class="next-dd-item" {{on "click" (fn this.viewWaypointLabel group.waypoint dd)}}>
364
- Get Label
365
- </a>
366
- <a href="javascript:;" class="next-dd-item">
367
- View Activity
440
+ {{t "fleet-ops.operations.orders.index.view.get-label"}}
368
441
  </a>
442
+ {{!-- <a href="javascript:;" class="next-dd-item">
443
+ {{t "fleet-ops.operations.orders.index.view.view-activity"}}
444
+ </a> --}}
369
445
  </div>
370
446
  </div>
371
447
  </DropdownButton>
372
- <Button @icon="plus" @iconPrefix="fas" @text="Add Item" @size="sm" @onClick={{fn this.addEntity group.waypoint}} />
448
+ <Button
449
+ @icon="plus"
450
+ @iconPrefix="fas"
451
+ @text={{t "fleet-ops.operations.orders.index.view.add-item-button"}}
452
+ @size="sm"
453
+ @onClick={{fn this.addEntity group.waypoint}}
454
+ />
373
455
  </div>
374
456
  </div>
375
457
  </div>
@@ -387,7 +469,12 @@
387
469
  <div class="dark:text-gray-100 truncate mb-2">
388
470
  {{entity.tracking}}
389
471
  </div>
390
- <Button @icon="pencil" @text="Edit Item" @size="xs" @onClick={{fn this.editEntity entity}} />
472
+ <Button
473
+ @icon="pencil"
474
+ @text={{t "fleet-ops.operations.orders.index.view.edit-item-button"}}
475
+ @size="xs"
476
+ @onClick={{fn this.editEntity entity}}
477
+ />
391
478
  </div>
392
479
  <div class="absolute top-0 right-0 p-2">
393
480
  <Button @icon="times" @iconPrefix="fas" @type="danger" @size="xs" @onClick={{fn this.removeEntity entity}} />
@@ -414,10 +501,17 @@
414
501
  <div class="dark:text-gray-100 truncate mb-2">
415
502
  {{entity.tracking}}
416
503
  </div>
417
- <Button @icon="pencil" @text="Edit Item" @size="sm" @onClick={{fn this.editEntity entity}} />
504
+ <Button @icon="pencil" @text={{t "fleet-ops.operations.orders.index.view.edit-item-button"}} @size="sm" @onClick={{fn this.editEntity entity}} />
418
505
  </div>
419
506
  <div class="absolute top-0 right-0 p-2">
420
- <Button @icon="times" @iconPrefix="fas" @type="danger" @size="xs" @onClick={{fn this.removeEntity entity}} @wrapperClass={{if (eq index 0) "invisible"}} />
507
+ <Button
508
+ @icon="times"
509
+ @iconPrefix="fas"
510
+ @type="danger"
511
+ @size="xs"
512
+ @onClick={{fn this.removeEntity entity}}
513
+ @wrapperClass={{if (eq index 0) "invisible"}}
514
+ />
421
515
  </div>
422
516
  </div>
423
517
  </div>
@@ -1,9 +1,9 @@
1
1
  <MapContainer::Topbar class="next-topbar-{{this.layout}}">
2
2
  <MapContainer::ViewSwitch>
3
3
  <FaIcon @icon="layer-group" class="mr-2 text-gray-400 dark:text-gray-600" />
4
- <button type="button" id="ops-map-view-button" class="{{if this.isMapLayout 'active'}}" {{on "click" (fn this.setLayoutMode "map")}}>Map</button>
4
+ <button type="button" id="ops-map-view-button" class="{{if this.isMapLayout 'active'}}" {{on "click" (fn this.setLayoutMode "map")}}>{{t "fleet-ops.operations.orders.index.map"}}</button>
5
5
  <button type="button" id="ops-table-view-button" class="{{if this.isTableLayout 'active'}} flex flex-row items-center relative" {{on "click" (fn this.setLayoutMode "table")}}>
6
- <div class="mr-1.5">Table</div>
6
+ <div class="mr-1.5">{{t "fleet-ops.operations.orders.index.table"}}</div>
7
7
  <Badge class="flex items-center justify-center -mr-4" @spanClass="rounded-full items-center justify-center h-4 w-4" @hideStatusDot={{true}} @status="info">{{@model.meta.total}}</Badge>
8
8
  </button>
9
9
  {{!-- <button type="button" id="ops-kanban-view-button" class="{{if this.isKanbanView 'active'}}" {{on "click" (fn this.setLayoutMode "kanban")}}>Board</button> --}}
@@ -20,26 +20,26 @@
20
20
  {{/if}}
21
21
 
22
22
  {{#if this.isTableLayout}}
23
- <Layout::Section::Header @title="Orders" @onSearch={{perform this.search}}>
24
- <Button @icon="cogs" @text="Config" class="mr-2" @onClick={{fn (transition-to "operations.orders.index.config")}} />
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
25
  <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
26
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
27
27
  {{#if (safe-has this.table "selectedRows")}}
28
- <DropdownButton @icon="layer-group" @type="magic" @text="Bulk Action" @size="sm" @buttonWrapperClass="mr-2" as |dd|>
28
+ <DropdownButton @icon="layer-group" @type="magic" @text={{t "fleet-ops.common.bulk-action"}} @size="sm" @buttonWrapperClass="mr-2" as |dd|>
29
29
  <div class="next-dd-menu mt-2 mx-0">
30
30
  <div class="px-1">
31
31
  <a href="javascript:;" class="next-dd-item" {{on "click" (dropdown-fn dd this.bulkCancelOrders)}}>
32
- Cancel Orders
32
+ {{t "fleet-ops.operations.orders.index.cancel-orders"}}
33
33
  </a>
34
34
  <a href="javascript:;" class="text-red-500 next-dd-item" {{on "click" (dropdown-fn dd this.bulkDeleteOrders)}}>
35
- Delete Orders
35
+ {{t "fleet-ops.operations.orders.index.delete-orders"}}
36
36
  </a>
37
37
  </div>
38
38
  </div>
39
39
  </DropdownButton>
40
40
  {{/if}}
41
- <Button @type="primary" @icon="plus" @iconPrefix="fas" @text="New" @wrapperClass="mr-2" @onClick={{fn (transition-to "operations.orders.index.new")}} />
42
- <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text="Export" @onClick={{this.exportOrders}} />
41
+ <Button @type="primary" @icon="plus" @iconPrefix="fas" @text={{t "fleet-ops.common.new"}} @wrapperClass="mr-2" @onClick={{fn (transition-to "operations.orders.index.new")}} />
42
+ <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text={{t "fleet-ops.common.export"}} @onClick={{this.exportOrders}} />
43
43
  </Layout::Section::Header>
44
44
  <Layout::Section::Body>
45
45
  <Table @rows={{@model}} @columns={{this.columns}} @selectable={{true}} @canSelectAll={{true}} @onSetup={{fn (mut this.table)}} @pagination={{true}} @paginationMeta={{@model.meta}} @page={{this.page}} @onPageChange={{fn (mut this.page)}} @tfootVerticalOffset="53" @tfootVerticalOffsetElements=".next-view-section-subheader,.next-map-container-topbar" />
@@ -47,11 +47,11 @@
47
47
  {{/if}}
48
48
 
49
49
  {{#if this.isKanbanView}}
50
- <Layout::Section::Header @title="Orders" @onSearch={{perform this.search}}>
51
- <Button @icon="cogs" @text="Config" class="mr-2" @onClick={{fn (transition-to "operations.orders.index.config")}} />
50
+ <Layout::Section::Header @title={{t "fleet-ops.common.orders"}} @onSearch={{perform this.search}}>
51
+ <Button @icon="cogs" @text={{t "fleet-ops.common.config"}} class="mr-2" @onClick={{fn (transition-to "operations.orders.index.config")}} />
52
52
  <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" />
53
- <Button @type="primary" @icon="plus" @iconPrefix="fas" @text="New" @wrapperClass="mr-2" @onClick={{fn (transition-to "operations.orders.index.new")}} />
54
- <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text="Export" @onClick={{this.exportOrders}} />
53
+ <Button @type="primary" @icon="plus" @iconPrefix="fas" @text={{t "fleet-ops.common.new"}} @wrapperClass="mr-2" @onClick={{fn (transition-to "operations.orders.index.new")}} />
54
+ <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text={{t "fleet-ops.common.export"}} @onClick={{this.exportOrders}} />
55
55
  </Layout::Section::Header>
56
56
  <Layout::Section::Body>
57
57
  <OrderBoard @type={{this.type}} />
@@ -1,11 +1,11 @@
1
- <Layout::Section::Header @title="Scheduler" />
1
+ <Layout::Section::Header @title={{t "fleet-ops.operations.scheduler.index.title"}} />
2
2
 
3
3
  <Layout::Section::Body class="overflow-y-scroll h-screen">
4
4
  <div class="h-screen">
5
5
  <div class="grid grid-cols-1 lg:grid-cols-3">
6
6
  <div class="scheduler-left-sidebar">
7
7
  <ContentPanel
8
- @title="Unscheduled Orders"
8
+ @title={{t "fleet-ops.operations.scheduler.index.unscheduled-orders"}}
9
9
  @titleStatuRight={{this.unscheduledOrders.length}}
10
10
  @titleStatuRightClass="info-status-badge"
11
11
  @hideStatusDot={{true}}
@@ -22,7 +22,7 @@
22
22
  </div>
23
23
  </ContentPanel>
24
24
  <ContentPanel
25
- @title="Scheduled Orders"
25
+ @title={{t "fleet-ops.operations.scheduler.index.scheduled-orders"}}
26
26
  @titleStatuRight={{this.scheduledOrders.length}}
27
27
  @titleStatusRightClass="info-status-badge"
28
28
  @hideStatusDot={{true}}