@fleetbase/fleetops-engine 0.4.0 → 0.4.2

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 (207) 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 +8 -4
  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 +6 -2
  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 +8 -3
  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 +7 -2
  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 +127 -30
  162. package/addon/controllers/operations/orders/index/view.js +57 -20
  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 +1 -12
  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/application.js +5 -2
  169. package/addon/routes/management/places/index.js +1 -1
  170. package/addon/routes/operations/orders/index/view.js +2 -14
  171. package/addon/services/driver-actions.js +9 -8
  172. package/addon/services/vehicle-actions.js +2 -1
  173. package/addon/styles/fleetops-engine.css +6 -0
  174. package/addon/templates/management/contacts/index.hbs +6 -6
  175. package/addon/templates/management/drivers/index.hbs +6 -6
  176. package/addon/templates/management/fleets/index.hbs +6 -6
  177. package/addon/templates/management/fuel-reports/index.hbs +7 -7
  178. package/addon/templates/management/index.hbs +17 -17
  179. package/addon/templates/management/issues/index.hbs +6 -6
  180. package/addon/templates/management/places/index.hbs +6 -6
  181. package/addon/templates/management/vehicles/index.hbs +6 -6
  182. package/addon/templates/management/vendors/index.hbs +6 -6
  183. package/addon/templates/operations/orders/index/config/types.hbs +3 -3
  184. package/addon/templates/operations/orders/index/config.hbs +3 -4
  185. package/addon/templates/operations/orders/index/new.hbs +73 -73
  186. package/addon/templates/operations/orders/index/view.hbs +147 -53
  187. package/addon/templates/operations/orders/index.hbs +13 -13
  188. package/addon/templates/operations/scheduler/index.hbs +3 -3
  189. package/addon/templates/operations/service-rates/index/new.hbs +79 -81
  190. package/addon/templates/operations/service-rates/index.hbs +6 -6
  191. package/composer.json +2 -2
  192. package/extension.json +1 -1
  193. package/package.json +4 -2
  194. package/server/resources/views/labels/default.php +40 -18
  195. package/server/resources/views/labels/waypoint-label.php +126 -0
  196. package/server/src/Http/Controllers/Api/v1/DriverController.php +4 -1
  197. package/server/src/Http/Controllers/Api/v1/OrderController.php +1 -1
  198. package/server/src/Http/Resources/v1/Entity.php +2 -2
  199. package/server/src/Http/Resources/v1/Payload.php +11 -30
  200. package/server/src/Http/Resources/v1/Place.php +3 -3
  201. package/server/src/Http/Resources/v1/Waypoint.php +101 -0
  202. package/server/src/Models/Entity.php +1 -1
  203. package/server/src/Models/Payload.php +39 -0
  204. package/server/src/Models/Place.php +5 -2
  205. package/server/src/Models/Proof.php +1 -1
  206. package/server/src/Models/Waypoint.php +15 -3
  207. package/translations/en-us.yaml +1343 -3
@@ -10,39 +10,39 @@
10
10
  @width={{or this.width @width "570px"}}
11
11
  >
12
12
  <Overlay::Header
13
- @title={{if this.place.public_id this.place.name "New Place"}}
13
+ @title={{if this.place.public_id this.place.name (t "fleet-ops.component.place-form-panel.place") }}
14
14
  @status={{this.place.public_id}}
15
15
  @hideStatusDot={{true}}
16
16
  @createdAt={{this.place.createdAt}}
17
17
  @titleWrapperClass="leading-5"
18
18
  >
19
19
  <div class="flex flex-1 justify-end">
20
- <Button @icon={{if this.place.id "save" "check"}} @type="primary" @text={{if this.place.id "Save Place" "Create Place"}} @onClick={{this.save}} @wrapperClass="mr-2" />
21
- <Button @type="default" @icon="times" @helpText={{if this.place.id "Cancel edit place" "Cancel new place"}} @onClick={{this.onPressCancel}} />
20
+ <Button @icon={{if this.place.id "save" "check"}} @type="primary" @text={{if this.place.id (t "fleet-ops.component.place-form-panel.save-place")(t "fleet-ops.component.place-form-panel.create-place") }} @onClick={{this.save}} @wrapperClass="mr-2" />
21
+ <Button @type="default" @icon="times" @helpText={{if this.place.id (t "fleet-ops.component.place-form-panel.cancel-edit-place")(t "fleet-ops.component.place-form-panel.cancel-new-place") }} @onClick={{this.onPressCancel}} />
22
22
  </div>
23
23
  </Overlay::Header>
24
24
 
25
25
  <Overlay::Body @wrapperClass="new-service-rate-overlay-body px-4 space-y-4 pt-4" @increaseInnerBodyHeightBy={{1000}}>
26
26
  <div class="grid grid-cols-3 gap-1 text-xs dark:text-gray-100">
27
- <InputGroup @name="Name" @wrapperClass="col-span-2">
28
- <Input @value={{this.place.name}} @type="text" class="w-full form-input" placeholder="Name" />
27
+ <InputGroup @name={{t "fleet-ops.common.name"}} @wrapperClass="col-span-2">
28
+ <Input @value={{this.place.name}} @type="text" class="w-full form-input" placeholder={{t "fleet-ops.common.name"}} />
29
29
  </InputGroup>
30
- <InputGroup @name="Street 1" @value={{this.place.street1}} @wrapperClass="col-span-3">
31
- <AutocompleteInput @value={{this.place.street1}} @fetchUrl="places/lookup" @onSelect={{this.onAutocomplete}} placeholder="Street 1" class="w-full" as |result|>
30
+ <InputGroup @name={{t "fleet-ops.component.place-form-panel.street-1"}} @value={{this.place.street1}} @wrapperClass="col-span-3">
31
+ <AutocompleteInput @value={{this.place.street1}} @fetchUrl="places/lookup" @onSelect={{this.onAutocomplete}} placeholder={{t "fleet-ops.component.place-form-panel.street-1"}} class="w-full" as |result|>
32
32
  {{result.address}}
33
33
  </AutocompleteInput>
34
34
  </InputGroup>
35
- <InputGroup @name="Street 2" @autocomplete="nope" @value={{this.place.street2}} @wrapperClass="col-span-3" />
36
- <InputGroup @name="Neighborhood" @autocomplete="nope" @value={{this.place.neighborhood}} />
37
- <InputGroup @name="Building" @autocomplete="nope" @value={{this.place.building}} />
38
- <InputGroup @name="Security Access Code" @autocomplete="nope" @value={{this.place.security_access_code}} />
39
- <InputGroup @name="Postal Code" @autocomplete="nope" @value={{this.place.postal_code}} />
40
- <InputGroup @name="City" @autocomplete="nope" @value={{this.place.city}} />
41
- <InputGroup @name="State" @autocomplete="nope" @value={{this.place.province}} />
42
- <InputGroup @name="Country" @wrapperClass="col-span-2">
43
- <CountrySelect class="w-full form-input form-select form-datalist" @value={{this.place.country}} @onChange={{fn (mut this.place.country)}} placeholder="Country" />
35
+ <InputGroup @name={{t "fleet-ops.component.place-form-panel.street-2"}} @autocomplete="nope" @value={{this.place.street2}} @wrapperClass="col-span-3" />
36
+ <InputGroup @name={{t "fleet-ops.component.place-form-panel.neighborhood"}} @autocomplete="nope" @value={{this.place.neighborhood}} />
37
+ <InputGroup @name={{t "fleet-ops.component.place-form-panel.building"}} @autocomplete="nope" @value={{this.place.building}} />
38
+ <InputGroup @name={{t "fleet-ops.component.place-form-panel.security-code"}} @autocomplete="nope" @value={{this.place.security_access_code}} />
39
+ <InputGroup @name={{t "fleet-ops.component.place-form-panel.postal-code"}} @autocomplete="nope" @value={{this.place.postal_code}} />
40
+ <InputGroup @name={{t "fleet-ops.common.city"}} @autocomplete="nope" @value={{this.place.city}} />
41
+ <InputGroup @name={{t "fleet-ops.component.place-form-panel.state"}} @autocomplete="nope" @value={{this.place.province}} />
42
+ <InputGroup @name={{t "fleet-ops.common.country"}} @wrapperClass="col-span-2">
43
+ <CountrySelect class="w-full form-input form-select form-datalist" @value={{this.place.country}} @onChange={{fn (mut this.place.country)}} placeholder={{t "fleet-ops.common.country"}} />
44
44
  </InputGroup>
45
- <InputGroup @name="Coordinates" @wrapperClass="col-span-2">
45
+ <InputGroup @name={{t "fleet-ops.common.coordinates"}} @wrapperClass="col-span-2">
46
46
  <CoordinatesInput
47
47
  @value={{this.place.location}}
48
48
  @onChange={{this.updatePlaceCoordinates}}
@@ -52,7 +52,7 @@
52
52
  />
53
53
  </InputGroup>
54
54
  <div class="col-span-1"></div>
55
- <InputGroup @name="Phone">
55
+ <InputGroup @name={{t "fleet-ops.common.phone"}}>
56
56
  <PhoneInput @value={{this.place.phone}} @autocomplete="nope" @onInput={{this.phone}} class="form-input w-full" />
57
57
  </InputGroup>
58
58
  </div>
@@ -18,6 +18,11 @@ export default class PlaceFormPanelComponent extends Component {
18
18
  */
19
19
  @service fetch;
20
20
 
21
+ /**
22
+ * @service intl
23
+ */
24
+ @service intl;
25
+
21
26
  /**
22
27
  * @service notifications
23
28
  */
@@ -101,7 +106,7 @@ export default class PlaceFormPanelComponent extends Component {
101
106
  return place
102
107
  .save()
103
108
  .then((place) => {
104
- this.notifications.success(`place (${place.address}) saved successfully.`);
109
+ this.notifications.success(this.intl.t('fleet-ops.component.place-form-panel.success-message', { placeAddress: place.address }));
105
110
  contextComponentCallback(this, 'onAfterSave', place);
106
111
  })
107
112
  .catch((error) => {
@@ -22,55 +22,55 @@
22
22
  <ContentPanel @title="Details" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-900">
23
23
  <div class="grid grid-cols-1 lg:grid-cols-3 gap-2 text-xs dark:text-gray-100">
24
24
  <div class="field-info-container col-span-3">
25
- <div class="field-name">Name</div>
25
+ <div class="field-name">{{t "fleet-ops.common.name"}}</div>
26
26
  <div class="field-value">{{n-a @place.name}}</div>
27
27
  </div>
28
28
 
29
29
  <div class="field-info-container col-span-3">
30
- <div class="field-name">Street</div>
30
+ <div class="field-name">{{t "fleet-ops.common.street"}}</div>
31
31
  <div class="field-value">{{n-a @place.street1}}</div>
32
32
  </div>
33
33
 
34
34
  <div class="field-info-container">
35
- <div class="field-name">Neighborhood</div>
35
+ <div class="field-name">{{t "fleet-ops.common.neighborhood"}}</div>
36
36
  <div class="field-value">{{n-a @place.neighborhood}}</div>
37
37
  </div>
38
38
 
39
39
  <div class="field-info-container">
40
- <div class="field-name">Building</div>
40
+ <div class="field-name">{{t "fleet-ops.common.building"}}</div>
41
41
  <div class="field-value">{{n-a @place.building}}</div>
42
42
  </div>
43
43
 
44
44
  <div class="field-info-container">
45
- <div class="field-name">Security Access Code</div>
45
+ <div class="field-name">{{t "fleet-ops.common.security-access-code"}}</div>
46
46
  <div class="field-value">{{n-a @place.security_access_code}}</div>
47
47
  </div>
48
48
 
49
49
  <div class="field-info-container">
50
- <div class="field-name">City</div>
50
+ <div class="field-name">{{t "fleet-ops.common.city"}}</div>
51
51
  <div class="field-value">{{n-a @place.city}}</div>
52
52
  </div>
53
53
 
54
54
  <div class="field-info-container">
55
- <div class="field-name">State</div>
55
+ <div class="field-name">{{t "fleet-ops.common.state"}}</div>
56
56
  <div class="field-value">{{n-a @place.province}}</div>
57
57
  </div>
58
58
 
59
59
  <div class="field-info-container">
60
- <div class="field-name">Country</div>
60
+ <div class="field-name">{{t "fleet-ops.common.country"}}</div>
61
61
  <div class="field-value">
62
62
  <CountryName @country={{@place.country}} @showFlag={{true}} />
63
63
  </div>
64
64
  </div>
65
65
 
66
66
  <div class="field-info-container">
67
- <div class="field-name">Phone</div>
67
+ <div class="field-name">{{t "fleet-ops.common.phone"}}</div>
68
68
  <div class="field-value">{{n-a @place.phone}}</div>
69
69
  </div>
70
70
 
71
71
  <div class="field-info-container col-span-3">
72
72
  <div class="field-name">
73
- Coordinates
73
+ {{t "fleet-ops.common.coordinates"}}
74
74
  {{!-- <a href="javascript:;" class="block ml-3" {{on "click" @place.viewPlaceOnMap}}>
75
75
  <FaIcon @icon="map" class="mr-1" />
76
76
  View on map
@@ -10,8 +10,8 @@
10
10
  @width={{or this.width @width "570px"}}
11
11
  >
12
12
  <Overlay::Header @title={{this.place.name}} @status={{this.place.public_id}} @hideStatusDot={{true}} @createdAt={{this.place.createdAt}}>
13
- <Button @type="default" @icon="pen" @helpText="Edit place" @onClick={{this.onEdit}} @wrapperClass="mr-2" />
14
- <Button @type="default" @icon="times" @helpText={{if this.place.id "Cancel edit place" "Cancel new place"}} @onClick={{this.onPressCancel}} />
13
+ <Button @type="default" @icon="pen" @helpText={{t "fleet-ops.component.place-panel.edit-place"}} @onClick={{this.onEdit}} @wrapperClass="mr-2" />
14
+ <Button @type="default" @icon="times" @helpText={{if this.place.id (t "fleet-ops.component.place-panel.cancel-edit-place")(t "fleet-ops.component.place-panel.cancel-new-place") }} @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">
@@ -15,9 +15,9 @@
15
15
  <div class="px-3 py-2 w-full bg-yellow-200 text-yellow-900 rounded shadow-sm flex flex-col justify-center items-start mb-3">
16
16
  <div class="flex flex-row items-center">
17
17
  <FaIcon @icon="eye" class="mr-2 text-yellow-900" />
18
- <span class="font-bold">{{if this.isWaypointsCollapsed "Tap to expand" "Tap to collapse"}}</span>
18
+ <span class="font-bold">{{if this.isWaypointsCollapsed (t "fleet-ops.component.route-list.expand")(t "fleet-ops.component.route-list.collapse") }}</span>
19
19
  </div>
20
- <div>{{@order.payload.middleWaypoints.length}} more waypoints</div>
20
+ <div>{{@order.payload.middleWaypoints.length}} {{t "fleet-ops.component.route-list.more-waypoints"}}</div>
21
21
  </div>
22
22
  </Button>
23
23
  {{#unless this.isWaypointsCollapsed}}
@@ -1,14 +1,14 @@
1
- <Overlay @onLoad={{this.onLoad}} @isOpen={{@isOpen}} @position="right" @noBackdrop={{true}} @fullHeight={{true}} @isResizable={{true}} @isMaximizable={{true}} @isMinimizable={{true}} @width="570px" as |overlay|>
2
- <Overlay::Header @overlay={{overlay}} @title="FleetOps Settings" @onPressCancel={{@onPressCancel}}>
3
- <Button @icon="save" @type="primary" @text={{if (media 'isMobile') "" "Save Changes"}} @onClick={{this.saveSettings}} @isLoading={{this.isSaving}} @disabled={{or this.isLoading this.isSaving}} />
1
+ <Overlay @onLoad={{this.onLoad}} @isOpen={{@isOpen}} @position="right" @noBackdrop={{true}} @fullHeight={{true}} @isResizable={{true}} @isMaximizable={{true}} @isMinimizable={{true}} @width="600px" as |overlay|>
2
+ <Overlay::Header @overlay={{overlay}} @title={{t "fleet-ops.component.settings-window.title"}} @onPressCancel={{@onPressCancel}}>
3
+ <Button @icon="save" @type="primary" @text={{if (media 'isMobile') "" (t "fleet-ops.component.settings-window.save") }} @onClick={{this.saveSettings}} @isLoading={{this.isSaving}} @disabled={{or this.isLoading this.isSaving}} />
4
4
  </Overlay::Header>
5
5
 
6
6
  <Overlay::Body>
7
7
  <div class="px-5 py-4">
8
- <InputGroup @name="Default Adhoc Ping Distance" @type="number" @value={{this.company.options.fleetops.adhoc_distance}} @wrapperClass="mb-0" @helpText="This setting determines the default distance in meters adhoc orders should ping drivers within vicinity of the order pickup point." />
8
+ <InputGroup @name={{t "fleet-ops.component.settings-window.name"}} @type="number" @value={{this.company.options.fleetops.adhoc_distance}} @wrapperClass="mb-0" @helpText={{t "fleet-ops.component.settings-window.name-text"}} />
9
9
  <div class="mt-2 px-3 py-1 rounded-lg border border-blue-600 bg-blue-100 flex items-center">
10
10
  <FaIcon @icon="triangle-exclamation" class="text-blue-900 mr-1.5" />
11
- <span class="text-blue-900 text-xs">Distance must be in meters</span>
11
+ <span class="text-blue-900 text-xs">{{t "fleet-ops.component.settings-window.message"}}</span>
12
12
  </div>
13
13
  </div>
14
14
  </Overlay::Body>
@@ -7,6 +7,7 @@ export default class SettingsWindowComponent extends Component {
7
7
  @service currentUser;
8
8
  @service store;
9
9
  @service notifications;
10
+ @service intl;
10
11
 
11
12
  @tracked isSaving = false;
12
13
  @tracked isLoading = false;
@@ -53,7 +54,7 @@ export default class SettingsWindowComponent extends Component {
53
54
  return this.company
54
55
  .save()
55
56
  .then(() => {
56
- this.notifications.success('Settings successfully saved.');
57
+ this.notifications.success(this.intl.t('fleet-ops.component.settings-window.success-message'));
57
58
  })
58
59
  .finally(() => {
59
60
  this.isSaving = false;
@@ -13,7 +13,7 @@
13
13
  <div class="flex flex-row items-center justify-between w-full mb-4">
14
14
  <div class="flex flex-1 space-x-2">
15
15
  {{#if this.vehicle.id}}
16
- <Button @type="default" @icon="car" @helpText="View vehicle details" @onClick={{this.onViewDetails}} @disabled={{this.isLoading}} />
16
+ <Button @type="default" @icon="car" @helpText={{t "fleet-ops.component.vehicle-form-panel.view-details"}} @onClick={{this.onViewDetails}} @disabled={{this.isLoading}} />
17
17
  {{/if}}
18
18
  </div>
19
19
  <div class="flex flex-1 justify-end">
@@ -21,7 +21,7 @@
21
21
  <Button
22
22
  @icon={{if this.vehicle.id "save" "check"}}
23
23
  @type="primary"
24
- @text={{if this.vehicle.id "Save Vehicle" "Create Vehicle"}}
24
+ @text={{if this.vehicle.id (t "fleet-ops.component.vehicle-form-panel.save-vehicle")(t "fleet-ops.component.vehicle-form-panel.create-vehicle") }}
25
25
  @onClick={{this.save}}
26
26
  @isLoading={{this.isLoading}}
27
27
  />
@@ -29,7 +29,7 @@
29
29
  <Button
30
30
  @type="default"
31
31
  @icon="times"
32
- @helpText={{if this.vehicle.id "Cancel edit vehicle" "Cancel new vehicle"}}
32
+ @helpText={{if this.vehicle.id (t "fleet-ops.component.vehicle-form-panel.cancel-edit-vehicle")(t "fleet-ops.component.vehicle-form-panel.cancel-new-vehicle") }}
33
33
  @onClick={{this.onPressCancel}}
34
34
  @disabled={{this.isLoading}}
35
35
  />
@@ -42,11 +42,11 @@
42
42
  <div class="upload-avatar-overlay w-12 h-12 flex items-center justify-start rounded-lg">
43
43
  <img src={{this.vehicle.photo_url}} alt={{this.vehicle.name}} height="48" width="48" class="h-12 w-12 rounded-lg shadow-sm" />
44
44
  <Attach::Tooltip @class="clean" @animation="scale" @placement="top">
45
- <InputInfo @text="Upload new photo" />
45
+ <InputInfo @text={{t "fleet-ops.component.vehicle-form-panel.upload-photo"}} />
46
46
  </Attach::Tooltip>
47
47
  <div class="upload-avatar-button-wrapper rounded-lg">
48
48
  <UploadButton
49
- @name="photos"
49
+ @name={{t "fleet-ops.common.photos"}}
50
50
  @accept="image/*"
51
51
  @onFileAdded={{this.onUploadNewPhoto}}
52
52
  @icon="upload"
@@ -65,7 +65,7 @@
65
65
  {{#if this.vehicle.displayName}}
66
66
  {{this.vehicle.displayName}}
67
67
  {{else}}
68
- <span>New Vehicle</span>
68
+ <span>{{t "fleet-ops.component.vehicle-form-panel.new-vehicle"}}</span>
69
69
  {{/if}}
70
70
  {{/if}}
71
71
  </h1>
@@ -76,7 +76,7 @@
76
76
  </div>
77
77
  {{else}}
78
78
  <div class="flex flex-row items-center">
79
- <span class="text-sm dark:text-gray-500 text-gray-700 mr-3">No driver assigned</span>
79
+ <span class="text-sm dark:text-gray-500 text-gray-700 mr-3">{{t "fleet-ops.component.vehicle-form-panel.not-assigned"}}</span>
80
80
  </div>
81
81
  {{/if}}
82
82
  </div>
@@ -93,35 +93,35 @@
93
93
  <div class="flex-1 space-y-4">
94
94
  <ContentPanel @title="Details" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
95
95
  <div class="grid grid-cols-1 gap-4 lg:grid-cols-2 lg:gap-2">
96
- <InputGroup @name="Internal ID">
97
- <Input @value={{this.vehicle.internal_id}} @type="text" class="w-full form-input" placeholder="Internal ID" />
96
+ <InputGroup @name={{t "fleet-ops.common.internal-id"}}>
97
+ <Input @value={{this.vehicle.internal_id}} @type="text" class="w-full form-input" placeholder={{t "fleet-ops.common.internal-id"}} />
98
98
  </InputGroup>
99
99
 
100
- <InputGroup @name="Plate Number">
101
- <Input @value={{this.vehicle.plate_number}} @type="text" class="w-full form-input" placeholder="Plate Number" />
100
+ <InputGroup @name={{t "fleet-ops.component.vehicle-form-panel.plate-number"}}>
101
+ <Input @value={{this.vehicle.plate_number}} @type="text" class="w-full form-input" placeholder={{t "fleet-ops.component.vehicle-form-panel.plate-number"}} />
102
102
  </InputGroup>
103
103
 
104
- <InputGroup @name="VIN Number">
105
- <Input @value={{this.vehicle.vin}} @type="text" class="w-full form-input" placeholder="VIN Number" />
104
+ <InputGroup @name={{t "fleet-ops.component.vehicle-form-panel.vin-number"}}>
105
+ <Input @value={{this.vehicle.vin}} @type="text" class="w-full form-input" placeholder={{t "fleet-ops.component.vehicle-form-panel.vin-number"}} />
106
106
  </InputGroup>
107
107
 
108
- <InputGroup @name="Make">
109
- <Input @value={{this.vehicle.make}} @type="text" class="w-full form-input" placeholder="Vehicle Make" />
108
+ <InputGroup @name={{t "fleet-ops.component.vehicle-form-panel.make"}}>
109
+ <Input @value={{this.vehicle.make}} @type="text" class="w-full form-input" placeholder={{t "fleet-ops.component.vehicle-form-panel.vehicle-make"}} />
110
110
  </InputGroup>
111
111
 
112
- <InputGroup @name="Model">
113
- <Input @value={{this.vehicle.model}} @type="text" class="w-full form-input" placeholder="Vehicle Model" />
112
+ <InputGroup @name={{t "fleet-ops.component.vehicle-form-panel.model"}}>
113
+ <Input @value={{this.vehicle.model}} @type="text" class="w-full form-input" placeholder={{t "fleet-ops.component.vehicle-form-panel.vehicle-model"}} />
114
114
  </InputGroup>
115
115
 
116
- <InputGroup @name="Year">
117
- <Input @value={{this.vehicle.year}} @type="text" class="w-full form-input" placeholder="Vehicle Year" />
116
+ <InputGroup @name={{t "fleet-ops.component.vehicle-form-panel.year"}}>
117
+ <Input @value={{this.vehicle.year}} @type="text" class="w-full form-input" placeholder={{t "fleet-ops.component.vehicle-form-panel.vehicle-year"}} />
118
118
  </InputGroup>
119
119
 
120
- <InputGroup @name="Driver Assigned">
120
+ <InputGroup @name={{t "fleet-ops.component.vehicle-form-panel.driver-assigned"}}>
121
121
  <ModelSelect
122
122
  @modelName="driver"
123
123
  @selectedModel={{this.vehicle.driver}}
124
- @placeholder="Select Driver"
124
+ @placeholder={{t "fleet-ops.component.vehicle-form-panel.select-driver"}}
125
125
  @triggerClass="form-select form-input"
126
126
  @infiniteScroll={{false}}
127
127
  @renderInPlace={{true}}
@@ -132,13 +132,13 @@
132
132
  </ModelSelect>
133
133
  </InputGroup>
134
134
 
135
- <InputGroup @name="Status">
135
+ <InputGroup @name={{t "fleet-ops.common.status"}}>
136
136
  <div class="fleetbase-model-select fleetbase-power-select ember-model-select">
137
137
  <PowerSelect
138
138
  @options={{this.vehicleStatusOptions}}
139
139
  @selected={{this.vehicle.status}}
140
140
  @onChange={{fn (mut this.vehicle.status)}}
141
- @placeholder="Select vehicle status"
141
+ @placeholder={{t "fleet-ops.component.vehicle-form-panel.select-vehicle"}}
142
142
  @triggerClass="form-select form-input"
143
143
  as |status|
144
144
  >
@@ -146,7 +146,7 @@
146
146
  </PowerSelect>
147
147
  </div>
148
148
  </InputGroup>
149
- <InputGroup @name="Coordinates" @wrapperClass="col-span-2">
149
+ <InputGroup @name={{t "fleet-ops.common.coordinates"}} @wrapperClass="col-span-2">
150
150
  <CoordinatesInput
151
151
  @value={{this.vehicle.location}}
152
152
  @onChange={{this.onCoordinatesChanged}}
@@ -158,13 +158,13 @@
158
158
  </div>
159
159
  </ContentPanel>
160
160
 
161
- <ContentPanel @title="Avatar" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
161
+ <ContentPanel @title={{t "fleet-ops.component.vehicle-form-panel.avatar"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
162
162
  <div class="grid grid-cols-1 gap-4 lg:grid-cols-2 lg:gap-2">
163
163
  <div class="input-group mb-2">
164
- <InputLabel @labelText="Select map avatar" @helpText="Select an avatar to be used for rendering on maps when using geolocation tracking features." />
164
+ <InputLabel @labelText={{t "fleet-ops.component.vehicle-form-panel.select-map-avatar"}} @helpText={{t "fleet-ops.component.vehicle-form-panel.select-avatar-rendering"}} />
165
165
  <FetchSelect
166
166
  @wrapperClass="w-60"
167
- @placeholder="Select avatar"
167
+ @placeholder={{t "fleet-ops.component.vehicle-form-panel.select-avatar"}}
168
168
  @endpoint="vehicles/avatars"
169
169
  @selected={{this.vehicle.avatar_url}}
170
170
  @optionValue="value"
@@ -13,10 +13,15 @@ export default class VehicleFormPanelComponent extends Component {
13
13
  @service store;
14
14
 
15
15
  /**
16
- * @service store
16
+ * @service fetch
17
17
  */
18
18
  @service fetch;
19
19
 
20
+ /**
21
+ * @service intl
22
+ */
23
+ @service intl;
24
+
20
25
  /**
21
26
  * @service currentUser
22
27
  */
@@ -98,7 +103,7 @@ export default class VehicleFormPanelComponent extends Component {
98
103
  return vehicle
99
104
  .save()
100
105
  .then((vehicle) => {
101
- this.notifications.success(`Vehicle (${vehicle.displayName}) saved successfully.`);
106
+ this.notifications.success(this.intl.t('fleet-ops.component.vehicle-form-panel.success-message', { vehicleName: vehicle.displayName }));
102
107
  contextComponentCallback(this, 'onAfterSave', vehicle);
103
108
  })
104
109
  .catch((error) => {
@@ -126,7 +131,7 @@ export default class VehicleFormPanelComponent extends Component {
126
131
  {
127
132
  path: `uploads/${this.currentUser.companyId}/vehicles/${this.vehicle.id}`,
128
133
  subject_uuid: this.vehicle.id,
129
- subject_type: 'vehicle',
134
+ subject_type: 'fleet-ops:vehicle',
130
135
  type: 'vehicle_photo',
131
136
  },
132
137
  (uploadedFile) => {
@@ -2,32 +2,32 @@
2
2
  <ContentPanel @title="Details" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-900">
3
3
  <div class="grid grid-cols-2 gap-2 text-xs dark:text-gray-100">
4
4
  <div class="field-info-container">
5
- <div class="field-name">Name</div>
5
+ <div class="field-name">{{t "fleet-ops.common.name"}}</div>
6
6
  <div class="field-value">{{n-a @vehicle.display_name}}</div>
7
7
  </div>
8
8
  <div class="field-info-container">
9
- <div class="field-name">Plate Number</div>
9
+ <div class="field-name">{{t "fleet-ops.common.plate-number"}}</div>
10
10
  <div class="field-value">{{n-a @vehicle.plate_number}}</div>
11
11
  </div>
12
12
  <div class="field-info-container">
13
- <div class="field-name">VIN Number</div>
13
+ <div class="field-name">{{t "fleet-ops.common.vin-number"}}</div>
14
14
  <div class="field-value">{{n-a @vehicle.vin}}</div>
15
15
  </div>
16
16
  <div class="field-info-container">
17
- <div class="field-name">Make</div>
17
+ <div class="field-name">{{t "fleet-ops.common.make"}}</div>
18
18
  <div class="field-value">{{n-a @vehicle.make}}</div>
19
19
  </div>
20
20
  <div class="field-info-container">
21
- <div class="field-name">Model</div>
21
+ <div class="field-name">{{t "fleet-ops.common.model"}}</div>
22
22
  <div class="field-value">{{n-a @vehicle.model}}</div>
23
23
  </div>
24
24
  <div class="field-info-container">
25
- <div class="field-name">Year</div>
25
+ <div class="field-name">{{t "fleet-ops.common.year"}}</div>
26
26
  <div class="field-value">{{n-a @vehicle.year}}</div>
27
27
  </div>
28
28
  <div class="field-info-container col-span-3">
29
29
  <div class="field-name">
30
- Coordinates
30
+ {{t "fleet-ops.common.coordinates"}}
31
31
  </div>
32
32
  <div class="field-value">
33
33
  {{point-coordinates @vehicle.location}}
@@ -12,10 +12,10 @@
12
12
  <Overlay::Header @hideLeftSection={{true}} @actionsWrapperClass="flex-1 flex-col py-3" class="h-auto-i min-h-[127px]">
13
13
  <div class="flex flex-row items-center justify-between w-full mb-4">
14
14
  <div class="flex flex-1 space-x-2">
15
- <Button @type="default" @icon="pen" @helpText="Edit vehicle" @onClick={{this.onEdit}} />
15
+ <Button @type="default" @icon="pen" @helpText={{t "fleet-ops.component.vehicle-panel.edit"}} @onClick={{this.onEdit}} />
16
16
  </div>
17
17
  <div class="flex flex-1 justify-end">
18
- <Button @type="default" @icon="times" @helpText="Close vehicle details" @onClick={{this.onPressCancel}} />
18
+ <Button @type="default" @icon="times" @helpText={{t "fleet-ops.component.vehicle-panel.close"}} @onClick={{this.onPressCancel}} />
19
19
  </div>
20
20
  </div>
21
21
  <div class="flex flex-row justify-between w-full">
@@ -45,8 +45,8 @@
45
45
  </div>
46
46
  {{else}}
47
47
  <div class="flex flex-row items-center">
48
- <span class="text-sm dark:text-gray-500 text-gray-700 mr-3">No driver assigned</span>
49
- {{! <Button @icon="user-plus" @size="xs" @helpText="Assign a driver to vehicle" /> }}
48
+ <span class="text-sm dark:text-gray-500 text-gray-700 mr-3">{{t "fleet-ops.component.vehicle-panel.not-assigned"}}</span>
49
+ {{!-- <Button @icon="user-plus" @size="xs" @helpText={{t "fleet-ops.component.vehicle-panel.assign-driver"}} /> --}}
50
50
  </div>
51
51
  {{/if}}
52
52
  </div>