@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
@@ -10,28 +10,28 @@
10
10
  @width={{or this.width @width "570px"}}
11
11
  >
12
12
  <Overlay::Header
13
- @title={{if this.issue.public_id this.issue.name "New Issue"}}
13
+ @title={{if this.issue.public_id this.issue.name (t "fleet-ops.component.issue-form-panel.issue") }}
14
14
  @status={{this.issue.public_id}}
15
15
  @hideStatusDot={{true}}
16
16
  @createdAt={{this.issue.createdAt}}
17
17
  @titleWrapperClass="leading-5"
18
18
  >
19
19
  <div class="flex flex-1 justify-end">
20
- <Button @icon={{if this.issue.id "save" "check"}} @type="primary" @text={{if this.issue.id "Save Issue" "Create Issue"}} @onClick={{this.save}} @wrapperClass="mr-2" />
20
+ <Button @icon={{if this.issue.id "save" "check"}} @type="primary" @text={{if this.issue.id (t "fleet-ops.component.issue-form-panel.save-issue")(t "fleet-ops.component.issue-form-panel.create-issue") }} @onClick={{this.save}} @wrapperClass="mr-2" />
21
21
  {{#if this.issue.id}}
22
- <Button @type="default" @icon="circle-exclamation" @helpText="View issue details" @onClick={{this.onViewDetails}} @wrapperClass="mr-2" />
22
+ <Button @type="default" @icon="circle-exclamation" @helpText={{t "fleet-ops.component.issue-form-panel.view-details"}} @onClick={{this.onViewDetails}} @wrapperClass="mr-2" />
23
23
  {{/if}}
24
- <Button @type="default" @icon="times" @helpText={{if this.issue.id "Cancel edit issue" "Cancel new issue"}} @onClick={{this.onPressCancel}} />
24
+ <Button @type="default" @icon="times" @helpText={{if this.issue.id (t "fleet-ops.component.issue-form-panel.cancel-edit-issue")(t "fleet-ops.component.issue-form-panel.cancel-new-issue") }} @onClick={{this.onPressCancel}} />
25
25
  </div>
26
26
  </Overlay::Header>
27
27
 
28
28
  <Overlay::Body @wrapperClass="new-service-rate-overlay-body px-4 pt-4" @increaseInnerBodyHeightBy={{1000}}>
29
29
  <div class="grid grid-cols-1 text-xs dark:text-gray-100">
30
- <InputGroup @name="Reported By">
30
+ <InputGroup @name={{t "fleet-ops.component.issue-form-panel.reported-by"}}>
31
31
  <ModelSelect
32
32
  @modelName="user"
33
33
  @selectedModel={{this.issue.reporter}}
34
- @placeholder="Select Reporter"
34
+ @placeholder={{t "fleet-ops.component.issue-form-panel.select-reporter"}}
35
35
  @triggerClass="form-select form-input"
36
36
  @infiniteScroll={{false}}
37
37
  @renderInPlace={{true}}
@@ -43,11 +43,11 @@
43
43
  </ModelSelect>
44
44
  </InputGroup>
45
45
 
46
- <InputGroup @name="Assigned To">
46
+ <InputGroup @name={{t "fleet-ops.component.issue-form-panel.assigned"}}>
47
47
  <ModelSelect
48
48
  @modelName="user"
49
49
  @selectedModel={{this.issue.assignee}}
50
- @placeholder="Select Assignee"
50
+ @placeholder={{t "fleet-ops.component.issue-form-panel.select-assign"}}
51
51
  @triggerClass="form-select form-input"
52
52
  @infiniteScroll={{false}}
53
53
  @renderInPlace={{true}}
@@ -59,11 +59,11 @@
59
59
  </ModelSelect>
60
60
  </InputGroup>
61
61
 
62
- <InputGroup @name="Driver">
62
+ <InputGroup @name={{t "fleet-ops.common.driver"}}>
63
63
  <ModelSelect
64
64
  @modelName="driver"
65
65
  @selectedModel={{this.issue.driver}}
66
- @placeholder="Select Driver"
66
+ @placeholder={{t "fleet-ops.component.issue-form-panel.select-driver"}}
67
67
  @triggerClass="form-select form-input"
68
68
  @infiniteScroll={{false}}
69
69
  @renderInPlace={{true}}
@@ -74,11 +74,11 @@
74
74
  </ModelSelect>
75
75
  </InputGroup>
76
76
 
77
- <InputGroup @name="Vehicle">
77
+ <InputGroup @name={{t "fleet-ops.common.vehicle"}}>
78
78
  <ModelSelect
79
79
  @modelName="vehicle"
80
80
  @selectedModel={{this.issue.vehicle}}
81
- @placeholder="Select Vehicle"
81
+ @placeholder={{t "fleet-ops.component.issue-form-panel.select-vehicle"}}
82
82
  @triggerClass="form-select form-input"
83
83
  @infiniteScroll={{false}}
84
84
  @renderInPlace={{true}}
@@ -89,13 +89,13 @@
89
89
  </ModelSelect>
90
90
  </InputGroup>
91
91
 
92
- <InputGroup @name="Issue Type">
92
+ <InputGroup @name={{t "fleet-ops.component.issue-form-panel.type"}}>
93
93
  <div class="fleetbase-model-select fleetbase-power-select ember-model-select">
94
94
  <PowerSelect
95
95
  @options={{this.issueTypes}}
96
96
  @selected={{this.issue.type}}
97
97
  @onChange={{this.onSelectIssueType}}
98
- @placeholder="Select issue type"
98
+ @placeholder={{t "fleet-ops.component.issue-form-panel.select-type"}}
99
99
  @triggerClass="form-select form-input"
100
100
  as |type|
101
101
  >
@@ -104,13 +104,13 @@
104
104
  </div>
105
105
  </InputGroup>
106
106
 
107
- <InputGroup @name="Issue Category">
107
+ <InputGroup @name={{t "fleet-ops.component.issue-form-panel.category"}}>
108
108
  <div class="fleetbase-model-select fleetbase-power-select ember-model-select">
109
109
  <PowerSelect
110
110
  @options={{this.issueCategories}}
111
111
  @selected={{this.issue.category}}
112
112
  @onChange={{fn (mut this.issue.category)}}
113
- @placeholder="Select issue category"
113
+ @placeholder={{t "fleet-ops.component.issue-form-panel.select-category"}}
114
114
  @triggerClass="form-select form-input"
115
115
  @disabled={{not this.issueCategories}}
116
116
  as |category|
@@ -120,14 +120,14 @@
120
120
  </div>
121
121
  </InputGroup>
122
122
 
123
- <InputGroup @name="Issue Report">
124
- <Textarea @value={{this.issue.report}} aria-label="Issue Report" class="w-full form-input" placeholder="Issue Report" rows={{5}} />
123
+ <InputGroup @name={{t "fleet-ops.component.issue-form-panel.report"}}>
124
+ <Textarea @value={{this.issue.report}} aria-label="Issue Report" class="w-full form-input" placeholder={{t "fleet-ops.component.issue-form-panel.report"}} rows={{5}} />
125
125
  </InputGroup>
126
126
 
127
- <InputGroup @name="Issue Tags">
127
+ <InputGroup @name={{t "fleet-ops.component.issue-form-panel.tags"}}>
128
128
  <TagInput
129
129
  class="form-input"
130
- @placeholder="Add tags"
130
+ @placeholder={{t "fleet-ops.component.issue-form-panel.add-tags"}}
131
131
  @allowSpacesInTags={{true}}
132
132
  @tags={{this.issue.tags}}
133
133
  @addTag={{this.addTag}}
@@ -138,13 +138,13 @@
138
138
  </TagInput>
139
139
  </InputGroup>
140
140
 
141
- <InputGroup @name="Issue Priority">
141
+ <InputGroup @name={{t "fleet-ops.component.issue-form-panel.priority"}}>
142
142
  <div class="fleetbase-model-select fleetbase-power-select ember-model-select">
143
143
  <PowerSelect
144
144
  @options={{this.issuePriorityOptions}}
145
145
  @selected={{this.issue.priority}}
146
146
  @onChange={{fn (mut this.issue.priority)}}
147
- @placeholder="Select issue priority"
147
+ @placeholder={{t "fleet-ops.component.issue-form-panel.select-priority"}}
148
148
  @triggerClass="form-select form-input"
149
149
  as |priority|
150
150
  >
@@ -153,13 +153,13 @@
153
153
  </div>
154
154
  </InputGroup>
155
155
 
156
- <InputGroup @name="Status">
156
+ <InputGroup @name={{t "fleet-ops.common.status"}}>
157
157
  <div class="fleetbase-model-select fleetbase-power-select ember-model-select">
158
158
  <PowerSelect
159
159
  @options={{this.issueStatusOptions}}
160
160
  @selected={{this.issue.status}}
161
161
  @onChange={{fn (mut this.issue.status)}}
162
- @placeholder="Select issue status"
162
+ @placeholder={{t "fleet-ops.component.issue-form-panel.select-status"}}
163
163
  @triggerClass="form-select form-input"
164
164
  as |status|
165
165
  >
@@ -168,7 +168,7 @@
168
168
  </div>
169
169
  </InputGroup>
170
170
 
171
- <InputGroup @name="Coordinates">
171
+ <InputGroup @name={{t "fleet-ops.common.coordinates"}}>
172
172
  <CoordinatesInput @value={{this.issue.location}} @onChange={{fn (mut this.issue.location)}} />
173
173
  </InputGroup>
174
174
  </div>
@@ -20,6 +20,11 @@ export default class IssueFormPanelComponent extends Component {
20
20
  */
21
21
  @service fetch;
22
22
 
23
+ /**
24
+ * @service intl
25
+ */
26
+ @service intl;
27
+
23
28
  /**
24
29
  * @service notifications
25
30
  */
@@ -126,7 +131,7 @@ export default class IssueFormPanelComponent extends Component {
126
131
  return issue
127
132
  .save()
128
133
  .then((issue) => {
129
- this.notifications.success(`Issue (${issue.public_id}) saved successfully.`);
134
+ this.notifications.success(this.intl.t('fleet-ops.component.issue-form-panel.success-message', { publicId: issue.public_id }));
130
135
  contextComponentCallback(this, 'onAfterSave', issue);
131
136
  })
132
137
  .catch((error) => {
@@ -1,46 +1,46 @@
1
1
  <div class="p-4">
2
- <ContentPanel @title="Details" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-900">
2
+ <ContentPanel @title={{t "fleet-ops.common.details"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-900">
3
3
  <div class="grid grid-cols-1 lg:grid-cols-2 gap-2 text-xs md:mb-6 dark:text-gray-100">
4
4
  <div class="field-info-container">
5
- <div class="field-name">Reporter</div>
5
+ <div class="field-name">{{t "fleet-ops.common.reporter"}}</div>
6
6
  <div class="field-value">{{n-a @issue.reporter_name}}</div>
7
7
  </div>
8
8
  <div class="field-info-container">
9
- <div class="field-name">Assigned To</div>
9
+ <div class="field-name">{{t "fleet-ops.component.issue-panel.details.assigned"}}</div>
10
10
  <div class="field-value">{{n-a @issue.assignee_name}}</div>
11
11
  </div>
12
12
  <div class="field-info-container">
13
- <div class="field-name">Driver</div>
13
+ <div class="field-name">{{t "fleet-ops.common.driver"}}</div>
14
14
  <div class="field-value">{{n-a @issue.driver_name}}</div>
15
15
  </div>
16
16
  <div class="field-info-container">
17
- <div class="field-name">Vehicle</div>
17
+ <div class="field-name">{{t "fleet-ops.common.vehicle"}}</div>
18
18
  <div class="field-value">{{n-a @issue.vehicle_name}}</div>
19
19
  </div>
20
20
  <div class="field-info-container">
21
- <div class="field-name">Issue Type</div>
21
+ <div class="field-name">{{t "fleet-ops.component.issue-panel.details.type"}}</div>
22
22
  <div class="field-value">{{n-a @issue.type}}</div>
23
23
  </div>
24
24
  <div class="field-info-container">
25
- <div class="field-name">Issue Category</div>
25
+ <div class="field-name">{{t "fleet-ops.component.issue-panel.details.category"}}</div>
26
26
  <div class="field-value">{{n-a @issue.category}}</div>
27
27
  </div>
28
28
  <div class="field-info-container">
29
- <div class="field-name">Issue Priority</div>
29
+ <div class="field-name">{{t "fleet-ops.component.issue-panel.details.priority"}}</div>
30
30
  <div class="field-value">
31
31
  <Badge @status={{@issue.priority}} />
32
32
  </div>
33
33
  </div>
34
34
  <div class="field-info-container">
35
- <div class="field-name">Date Created</div>
35
+ <div class="field-name">{{t "fleet-ops.common.date-created"}}</div>
36
36
  <div class="field-value">{{@issue.createdAtShort}}</div>
37
37
  </div>
38
38
  <div class="field-info-container">
39
- <div class="field-name">Coordinates</div>
39
+ <div class="field-name">{{t "fleet-ops.common.coordinates"}}</div>
40
40
  <div class="field-value">{{point-coordinates @issue.location}}</div>
41
41
  </div>
42
42
  <div class="field-info-container col-span-2">
43
- <div class="field-name">Report</div>
43
+ <div class="field-name">{{t "fleet-ops.component.issue-panel.details.report"}}</div>
44
44
  <div class="field-value">{{n-a @issue.report}}</div>
45
45
  </div>
46
46
  </div>
@@ -9,9 +9,9 @@
9
9
  @isResizable={{or this.isResizable @isResizable}}
10
10
  @width={{or this.width @width "570px"}}
11
11
  >
12
- <Overlay::Header @title="Issue Details" @status={{this.issue.public_id}} @hideStatusDot={{true}} @createdAt={{this.issue.createdAt}}>
13
- <Button @type="default" @icon="pen" @helpText="Edit Issue" @onClick={{this.onEdit}} @wrapperClass="mr-2" />
14
- <Button @type="default" @icon="times" @helpText={{if this.issue.id "Cancel edit Issue" "Cancel new Issue"}} @onClick={{this.onPressCancel}} />
12
+ <Overlay::Header @title={{t "fleet-ops.component.issue-panel.title"}} @status={{this.issue.public_id}} @hideStatusDot={{true}} @createdAt={{this.issue.createdAt}}>
13
+ <Button @type="default" @icon="pen" @helpText={{t "fleet-ops.component.issue-panel.edit-issue"}} @onClick={{this.onEdit}} @wrapperClass="mr-2" />
14
+ <Button @type="default" @icon="times" @helpText={{if this.issue.id (t "fleet-ops.component.issue-panel.cancel-edit-issue")(t "fleet-ops.component.issue-panel.cancel-new-issue") }} @onClick={{this.onPressCancel}} />
15
15
  </Overlay::Header>
16
16
  <Overlay::Body class="no-padding" @increaseInnerBodyHeightBy={{1000}}>
17
17
  <div class="section-header-actions w-full overflow-x-scroll lg:overflow-x-auto">
@@ -1,5 +1,5 @@
1
1
  <div id="create-order-button-menu-wrapper" class="create-order-menu-button-wrapper mb-2">
2
- <Button @text="Create new order" @type="primary" @size="xs" @icon="paper-plane" @iconPrefix="fas" @iconSize="sm" @wrapperClass="w-full create-order-button-wrapper" class="w-full create-order-button" @onClick={{this.onClickCreateOrder}} />
2
+ <Button @text={{t "fleet-ops.component.layout.fleet-ops-sidebar.title"}} @type="primary" @size="xs" @icon="paper-plane" @iconPrefix="fas" @iconSize="sm" @wrapperClass="w-full create-order-button-wrapper" class="w-full create-order-button" @onClick={{this.onClickCreateOrder}} />
3
3
  </div>
4
4
  {{#each this.universeMenuItems as |menuItem|}}
5
5
  {{#if menuItem.renderComponentInPlace}}
@@ -26,5 +26,5 @@
26
26
  {{/each}}
27
27
  </Layout::Sidebar::Panel>
28
28
  {{/each}}
29
- <Layout::Sidebar::Item @onClick={{this.onClickSettings}} @icon="cogs">Settings</Layout::Sidebar::Item>
29
+ <Layout::Sidebar::Item @onClick={{this.onClickSettings}} @icon="cogs">{{t "fleet-ops.component.layout.fleet-ops-sidebar.settings"}}</Layout::Sidebar::Item>
30
30
  {{yield}}
@@ -15,6 +15,7 @@ export default class LayoutFleetOpsSidebarComponent extends Component {
15
15
  @service universe;
16
16
  @service contextPanel;
17
17
  @service store;
18
+ @service intl;
18
19
  @tracked routePrefix = 'console.fleet-ops.';
19
20
  @tracked menuPanels = [];
20
21
  @tracked universeMenuItems = [];
@@ -36,20 +37,32 @@ export default class LayoutFleetOpsSidebarComponent extends Component {
36
37
  */
37
38
  createMenuPanels() {
38
39
  const operationsItems = [
39
- { title: 'Dashboard', icon: 'home', route: 'operations.orders' },
40
- { title: 'Service Rates', icon: 'file-invoice-dollar', route: 'operations.service-rates' },
41
- { title: 'Scheduler', icon: 'calendar-day', route: 'operations.scheduler' },
40
+ { title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.dashboard'), icon: 'home', route: 'operations.orders' },
41
+ { title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.service-rates'), icon: 'file-invoice-dollar', route: 'operations.service-rates' },
42
+ { title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.scheduler'), icon: 'calendar-day', route: 'operations.scheduler' },
42
43
  ];
43
44
 
44
45
  const resourcesItems = [
45
- { title: 'Drivers', icon: 'id-card', route: 'management.drivers', renderComponentInPlace: true, component: DriverListingComponent },
46
- { title: 'Vehicles', icon: 'truck', route: 'management.vehicles' },
47
- { title: 'Fleets', icon: 'user-group', route: 'management.fleets', renderComponentInPlace: true, component: FleetListingComponent },
48
- { title: 'Vendors', icon: 'warehouse', route: 'management.vendors' },
49
- { title: 'Contacts', icon: 'address-book', route: 'management.contacts' },
50
- { title: 'Places', icon: 'location-dot', route: 'management.places' },
51
- { title: 'Fuel Reports', icon: 'gas-pump', route: 'management.fuel-reports' },
52
- { title: 'Issues', icon: 'triangle-exclamation', route: 'management.issues' },
46
+ {
47
+ title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.drivers'),
48
+ icon: 'id-card',
49
+ route: 'management.drivers',
50
+ renderComponentInPlace: true,
51
+ component: DriverListingComponent,
52
+ },
53
+ { title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.vehicles'), icon: 'truck', route: 'management.vehicles' },
54
+ {
55
+ title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.fleets'),
56
+ icon: 'user-group',
57
+ route: 'management.fleets',
58
+ renderComponentInPlace: true,
59
+ component: FleetListingComponent,
60
+ },
61
+ { title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.vendors'), icon: 'warehouse', route: 'management.vendors' },
62
+ { title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.contacts'), icon: 'address-book', route: 'management.contacts' },
63
+ { title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.places'), icon: 'location-dot', route: 'management.places' },
64
+ { title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.fuel-reports'), icon: 'gas-pump', route: 'management.fuel-reports' },
65
+ { title: this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.issues'), icon: 'triangle-exclamation', route: 'management.issues' },
53
66
  ];
54
67
 
55
68
  const createPanel = (title, routePrefix, items = []) => ({
@@ -64,7 +77,10 @@ export default class LayoutFleetOpsSidebarComponent extends Component {
64
77
  .filter((item) => item.visible),
65
78
  });
66
79
 
67
- this.menuPanels = [createPanel('Operations', 'operations', operationsItems), createPanel('Resources', 'management', resourcesItems)].filter((panel) => {
80
+ this.menuPanels = [
81
+ createPanel(this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.operations'), 'operations', operationsItems),
82
+ createPanel(this.intl.t('fleet-ops.component.layout.fleet-ops-sidebar.resources'), 'management', resourcesItems),
83
+ ].filter((panel) => {
68
84
  const isVisible = panel.visible && panel.items.length > 0;
69
85
  return isVisible;
70
86
  });
@@ -1,6 +1,6 @@
1
1
  <div class="flex flex-row items-center px-5 py-2 border-b border-gray-200 dark:border-gray-700">
2
2
  <div>
3
- <Input @value={{this.query}} {{on "input" this.performSearch}} @type="text" class="form-input form-input-sm w-60" placeholder="Filter drivers by keyword..." />
3
+ <Input @value={{this.query}} {{on "input" this.performSearch}} @type="text" class="form-input form-input-sm w-60" placeholder={{t "fleet-ops.component.live-map-drawer.driver-listing.message"}} />
4
4
  </div>
5
5
  </div>
6
6
  <Table @rows={{this.drivers}} @columns={{this.columns}} @onSetup={{fn (mut this.table)}} />
@@ -37,6 +37,12 @@ export default class LiveMapDrawerDriverListingComponent extends Component {
37
37
  */
38
38
  @service crud;
39
39
 
40
+ /**
41
+ * Service for intl.
42
+ * @service
43
+ */
44
+ @service intl;
45
+
40
46
  /**
41
47
  * The list of drivers to display, tracked for reactivity.
42
48
  * @tracked
@@ -68,7 +74,7 @@ export default class LiveMapDrawerDriverListingComponent extends Component {
68
74
  */
69
75
  @tracked columns = [
70
76
  {
71
- label: 'Driver',
77
+ label: this.intl.t('fleet-ops.common.driver'),
72
78
  valuePath: 'name',
73
79
  photoPath: 'photo_url',
74
80
  width: '100px',
@@ -76,27 +82,27 @@ export default class LiveMapDrawerDriverListingComponent extends Component {
76
82
  onClick: this.focus,
77
83
  },
78
84
  {
79
- label: 'Location',
85
+ label: this.intl.t('fleet-ops.component.live-map-drawer.driver-listing.location'),
80
86
  valuePath: 'location',
81
87
  width: '80px',
82
88
  cellComponent: 'table/cell/point',
83
89
  onClick: this.locate,
84
90
  },
85
91
  {
86
- label: 'Current Job',
92
+ label: this.intl.t('fleet-ops.component.live-map-drawer.driver-listing.current-job'),
87
93
  valuePath: 'current_job_id',
88
94
  width: '80px',
89
95
  cellComponent: 'table/cell/anchor',
90
96
  onClick: this.job,
91
97
  },
92
98
  {
93
- label: 'Status',
99
+ label: this.intl.t('fleet-ops.common.status'),
94
100
  valuePath: 'status',
95
101
  cellComponent: 'table/cell/status',
96
102
  width: '60px',
97
103
  },
98
104
  {
99
- label: 'Last Seen',
105
+ label: this.intl.t('fleet-ops.component.live-map-drawer.driver-listing.last-seen'),
100
106
  valuePath: 'updatedAgo',
101
107
  width: '60px',
102
108
  },
@@ -112,21 +118,21 @@ export default class LiveMapDrawerDriverListingComponent extends Component {
112
118
  width: '90px',
113
119
  actions: [
114
120
  {
115
- label: 'View driver details...',
121
+ label: this.intl.t('fleet-ops.component.live-map-drawer.driver-listing.view-driver'),
116
122
  fn: this.focus,
117
123
  },
118
124
  {
119
- label: 'Edit driver...',
125
+ label: this.intl.t('fleet-ops.component.live-map-drawer.driver-listing.edit-driver'),
120
126
  fn: (driver) => {
121
127
  return this.focus(driver, 'editing');
122
128
  },
123
129
  },
124
130
  {
125
- label: 'Locate driver...',
131
+ label: this.intl.t('fleet-ops.component.live-map-drawer.driver-listing.locate-driver'),
126
132
  fn: this.locate,
127
133
  },
128
134
  {
129
- label: 'Delete driver...',
135
+ label: this.intl.t('fleet-ops.component.live-map-drawer.driver-listing.delete-driver'),
130
136
  fn: this.delete,
131
137
  },
132
138
  ],
@@ -206,7 +212,7 @@ export default class LiveMapDrawerDriverListingComponent extends Component {
206
212
  if (this.liveMap) {
207
213
  this.liveMap.focusLayerByRecord(driver, 18);
208
214
  } else {
209
- this.notifications.warning('Unable to locate driver.');
215
+ this.notifications.warning(this.intl.t('fleet-ops.component.live-map-drawer.driver-listing.warning-message'));
210
216
  }
211
217
  }
212
218
 
@@ -1,6 +1,6 @@
1
1
  <div class="flex flex-row items-center px-5 py-2 border-b border-gray-200 dark:border-gray-700">
2
2
  <div>
3
- <Input @value={{this.query}} {{on "input" this.performSearch}} @type="text" class="form-input form-input-sm w-60" placeholder="Filter places by keyword..." />
3
+ <Input @value={{this.query}} {{on "input" this.performSearch}} @type="text" class="form-input form-input-sm w-60" placeholder={{t "fleet-ops.component.live-map-drawer.place-listing.message"}} />
4
4
  </div>
5
5
  </div>
6
6
  <Table @rows={{this.places}} @columns={{this.columns}} @onSetup={{fn (mut this.table)}} />
@@ -31,6 +31,11 @@ export default class LiveMapDrawerPlaceListingComponent extends Component {
31
31
  */
32
32
  @service crud;
33
33
 
34
+ /**
35
+ * Service for intl.
36
+ * @service
37
+ */
38
+ @service intl;
34
39
  /**
35
40
  * The list of places to display, tracked for reactivity.
36
41
  * @tracked
@@ -62,7 +67,7 @@ export default class LiveMapDrawerPlaceListingComponent extends Component {
62
67
  */
63
68
  @tracked columns = [
64
69
  {
65
- label: 'Place',
70
+ label: this.intl.t('fleet-ops.component.live-map-drawer.place-listing.place'),
66
71
  valuePath: 'address',
67
72
  width: '200px',
68
73
  cellComponent: 'table/cell/anchor',
@@ -70,7 +75,7 @@ export default class LiveMapDrawerPlaceListingComponent extends Component {
70
75
  showOnlineIndicator: true,
71
76
  },
72
77
  {
73
- label: 'Location',
78
+ label: this.intl.t('fleet-ops.component.live-map-drawer.place-listing.location'),
74
79
  valuePath: 'location',
75
80
  width: '80px',
76
81
  cellComponent: 'table/cell/point',
@@ -88,21 +93,21 @@ export default class LiveMapDrawerPlaceListingComponent extends Component {
88
93
  width: '90px',
89
94
  actions: [
90
95
  {
91
- label: 'View place details...',
96
+ label: this.intl.t('fleet-ops.component.live-map-drawer.place-listing.view-place'),
92
97
  fn: this.focus,
93
98
  },
94
99
  {
95
- label: 'Edit place...',
100
+ label: this.intl.t('fleet-ops.component.live-map-drawer.place-listing.edit-place'),
96
101
  fn: (place) => {
97
102
  return this.focus(place, 'editing');
98
103
  },
99
104
  },
100
105
  {
101
- label: 'Locate place...',
106
+ label: this.intl.t('fleet-ops.component.live-map-drawer.place-listing.locate-place'),
102
107
  fn: this.locate,
103
108
  },
104
109
  {
105
- label: 'Delete place...',
110
+ label: this.intl.t('fleet-ops.component.live-map-drawer.place-listing.delete-place'),
106
111
  fn: this.delete,
107
112
  },
108
113
  ],
@@ -182,7 +187,7 @@ export default class LiveMapDrawerPlaceListingComponent extends Component {
182
187
  if (this.liveMap) {
183
188
  this.liveMap.focusLayerByRecord(place, 18);
184
189
  } else {
185
- this.notifications.warning('Unable to locate place.');
190
+ this.notifications.warning(this.intl.t('fleet-ops.component.live-map-drawer.place-listing.warning-message'));
186
191
  }
187
192
  }
188
193
 
@@ -1,6 +1,6 @@
1
1
  <div class="flex flex-row items-center px-5 py-2 border-b border-gray-200 dark:border-gray-700">
2
2
  <div>
3
- <Input @value={{this.query}} {{on "input" this.performSearch}} @type="text" class="form-input form-input-sm w-60" placeholder="Filter vehicles by keyword..." />
3
+ <Input @value={{this.query}} {{on "input" this.performSearch}} @type="text" class="form-input form-input-sm w-60" placeholder={{t "fleet-ops.component.live-map-drawer.vehicle-listing.message"}} />
4
4
  </div>
5
5
  </div>
6
6
  <Table @rows={{this.vehicles}} @columns={{this.columns}} @onSetup={{fn (mut this.table)}} />
@@ -25,6 +25,12 @@ export default class LiveMapDrawerVehicleListingComponent extends Component {
25
25
  */
26
26
  @service notifications;
27
27
 
28
+ /**
29
+ * Service for intl.
30
+ * @service
31
+ */
32
+ @service intl;
33
+
28
34
  /**
29
35
  * Service for CRUD operations.
30
36
  * @service
@@ -62,7 +68,7 @@ export default class LiveMapDrawerVehicleListingComponent extends Component {
62
68
  */
63
69
  @tracked columns = [
64
70
  {
65
- label: 'Vehicle',
71
+ label: this.intl.t('fleet-ops.common.vehicle'),
66
72
  valuePath: 'display_name',
67
73
  photoPath: 'avatar_url',
68
74
  width: '100px',
@@ -71,20 +77,20 @@ export default class LiveMapDrawerVehicleListingComponent extends Component {
71
77
  showOnlineIndicator: true,
72
78
  },
73
79
  {
74
- label: 'Location',
80
+ label: this.intl.t('fleet-ops.component.live-map-drawer.vehicle-listing.location'),
75
81
  valuePath: 'location',
76
82
  width: '80px',
77
83
  cellComponent: 'table/cell/point',
78
84
  onClick: this.locate,
79
85
  },
80
86
  {
81
- label: 'Status',
87
+ label: this.intl.t('fleet-ops.common.status'),
82
88
  valuePath: 'status',
83
89
  cellComponent: 'table/cell/status',
84
90
  width: '60px',
85
91
  },
86
92
  {
87
- label: 'Last Seen',
93
+ label: this.intl.t('fleet-ops.component.live-map-drawer.vehicle-listing.last-seen'),
88
94
  valuePath: 'updatedAgo',
89
95
  width: '60px',
90
96
  },
@@ -100,21 +106,21 @@ export default class LiveMapDrawerVehicleListingComponent extends Component {
100
106
  width: '90px',
101
107
  actions: [
102
108
  {
103
- label: 'View vehicle details...',
109
+ label: this.intl.t('fleet-ops.component.live-map-drawer.vehicle-listing.view-vehicle'),
104
110
  fn: this.focus,
105
111
  },
106
112
  {
107
- label: 'Edit vehicle...',
113
+ label: this.intl.t('fleet-ops.component.live-map-drawer.vehicle-listing.edit-vehicle'),
108
114
  fn: (vehicle) => {
109
115
  return this.focus(vehicle, 'editing');
110
116
  },
111
117
  },
112
118
  {
113
- label: 'Locate vehicle...',
119
+ label: this.intl.t('fleet-ops.component.live-map-drawer.vehicle-listing.locate-vehicle'),
114
120
  fn: this.locate,
115
121
  },
116
122
  {
117
- label: 'Delete vehicle...',
123
+ label: this.intl.t('fleet-ops.component.live-map-drawer.vehicle-listing.delete-vehicle'),
118
124
  fn: this.delete,
119
125
  },
120
126
  ],
@@ -194,7 +200,7 @@ export default class LiveMapDrawerVehicleListingComponent extends Component {
194
200
  if (this.liveMap) {
195
201
  this.liveMap.focusLayerByRecord(vehicle, 18);
196
202
  } else {
197
- this.notifications.warning('Unable to locate vehicle.');
203
+ this.notifications.warning(this.intl.t('fleet-ops.component.live-map-drawer.vehicle-listing.warning-message'));
198
204
  }
199
205
  }
200
206