@fleetbase/fleetops-engine 0.3.9 → 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 (209) 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/Console/Commands/FixDriverCompanies.php +65 -0
  195. package/server/src/Exceptions/IntegratedVendorException.php +11 -12
  196. package/server/src/Http/Controllers/Api/v1/DriverController.php +41 -32
  197. package/server/src/Http/Controllers/Api/v1/OrderController.php +1 -1
  198. package/server/src/Http/Controllers/Internal/v1/DriverController.php +17 -1
  199. package/server/src/Http/Resources/v1/Driver.php +1 -1
  200. package/server/src/Http/Resources/v1/Entity.php +2 -2
  201. package/server/src/Http/Resources/v1/Payload.php +11 -30
  202. package/server/src/Http/Resources/v1/Place.php +3 -3
  203. package/server/src/Http/Resources/v1/Waypoint.php +101 -0
  204. package/server/src/Models/Payload.php +39 -0
  205. package/server/src/Models/Place.php +5 -2
  206. package/server/src/Models/Waypoint.php +15 -3
  207. package/server/src/Providers/FleetOpsServiceProvider.php +1 -0
  208. package/server/src/Support/Flow.php +19 -2
  209. package/translations/en-us.yaml +1341 -3
@@ -17,6 +17,7 @@ export default class OrderConfigFieldsEditorComponent extends Component {
17
17
  }
18
18
  }
19
19
 
20
+ @service intl;
20
21
  @service modalsManager;
21
22
  @service notifications;
22
23
 
@@ -25,34 +26,34 @@ export default class OrderConfigFieldsEditorComponent extends Component {
25
26
  @tracked fields = [];
26
27
  @tracked metaFieldTypes = [
27
28
  {
28
- label: 'Text Field',
29
+ label: this.intl.t('fleet-ops.component.order-config.fields-editor.text-field'),
29
30
  key: 'text',
30
31
  },
31
32
  {
32
- label: 'Boolean',
33
- description: 'Allows user to toggle a true or false property by checkbox',
33
+ label: this.intl.t('fleet-ops.component.order-config.fields-editor.boolean'),
34
+ description: this.intl.t('fleet-ops.component.order-config.fields-editor.boolean-text'),
34
35
  key: 'boolean',
35
36
  },
36
37
  {
37
- label: 'Dropdown Select',
38
- description: 'Allows user to select an option from a dropdown of options',
38
+ label: this.intl.t('fleet-ops.component.order-config.fields-editor.dropdown'),
39
+ description: this.intl.t('fleet-ops.component.order-config.fields-editor.dropdown-text'),
39
40
  key: 'select',
40
41
  hasOptions: true,
41
42
  },
42
43
  {
43
- label: 'Datetime Selector',
44
- description: 'Allows user to select a date & time',
44
+ label: this.intl.t('fleet-ops.component.order-config.fields-editor.datetime'),
45
+ description: this.intl.t('fleet-ops.component.order-config.fields-editor.datetime'),
45
46
  key: 'datetime',
46
47
  },
47
48
  {
48
- label: 'Port Selector',
49
- description: 'Allows user to select a port',
49
+ label: this.intl.t('fleet-ops.component.order-config.fields-editor.port'),
50
+ description: this.intl.t('fleet-ops.component.order-config.fields-editor.port-text'),
50
51
  serialize: 'model:port',
51
52
  key: 'port',
52
53
  },
53
54
  {
54
- label: 'Vessel Selector',
55
- description: 'Allows user to select a vessel',
55
+ label: this.intl.t('fleet-ops.component.order-config.fields-editor.vessel'),
56
+ description: this.intl.t('fleet-ops.component.order-config.fields-editor.vessel-text'),
56
57
  serialize: 'model:vessel',
57
58
  key: 'vessel',
58
59
  },
@@ -99,7 +100,7 @@ export default class OrderConfigFieldsEditorComponent extends Component {
99
100
  const groupName = modal.getOption('groupName');
100
101
 
101
102
  if (typeof groupName !== 'string') {
102
- return this.notifications.warning('No group name entered.');
103
+ return this.notifications.warning(this.intl.t('fleet-ops.component.order-config.fields-editor.warning-message'));
103
104
  }
104
105
 
105
106
  const group = underscore(groupName.toLowerCase());
@@ -2,23 +2,23 @@
2
2
  <div class="space-y-1">
3
3
  <div class="px-5 mt-6 flex">
4
4
  <div class="flex-1">
5
- <InfoBlock class="px-3 py-2">Select an order configuration to modify, or click "New Config" to create a new order configuration.</InfoBlock>
5
+ <InfoBlock class="px-3 py-2">{{t "fleet-ops.component.order-config.select-message"}}</InfoBlock>
6
6
  </div>
7
7
  <div>
8
- <Button class="ml-6" @icon="plus" @iconPrefix="fas" @text="New Config" @size="md" @onClick={{this.createNewOrderConfig}} />
8
+ <Button class="ml-6" @icon="plus" @iconPrefix="fas" @text={{t "fleet-ops.component.order-config.new-config"}} @size="md" @onClick={{this.createNewOrderConfig}} />
9
9
  </div>
10
10
  </div>
11
11
  <div class="flex items-center justify-between p-4">
12
12
  {{#if this.isLoading}}
13
13
  <div class="flex text-center items-center justify-center p-4">
14
14
  <Spinner class="mr-2 dark:text-gray-100" />
15
- <span class="dark:text-gray-100">Loading your order configurations...</span>
15
+ <span class="dark:text-gray-100">{{t "fleet-ops.component.order-config.loading-configuration"}}</span>
16
16
  </div>
17
17
  {{else}}
18
- <Select class="w-full flex-1" @value={{this.selected}} @options={{this.configurations}} @optionLabel="name" @optionValue="namespace" @placeholder="Select order configuration" @onSelect={{this.selectConfig}} />
18
+ <Select class="w-full flex-1" @value={{this.selected}} @options={{this.configurations}} @optionLabel="name" @optionValue="namespace" @placeholder={{t "fleet-ops.component.order-config.select-order"}} @onSelect={{this.selectConfig}} />
19
19
  {{#if this.selected}}
20
20
  <div class="pl-6">
21
- <Button @type="primary" @icon="save" @text="Save Changes" @size="md" @isLoading={{this.isSaving}} @onClick={{this.saveConfig}} />
21
+ <Button @type="primary" @icon="save" @text={{t "fleet-ops.component.order-config.save-changes"}} @size="md" @isLoading={{this.isSaving}} @onClick={{this.saveConfig}} />
22
22
  </div>
23
23
  {{/if}}
24
24
  {{/if}}
@@ -30,19 +30,19 @@
30
30
  <nav>
31
31
  <a href="javascript:;" class="ui-tab {{if (eq this.activeTab 'details') 'active'}}" {{on "click" (fn
32
32
  (mut this.activeTab) "details" )}}>
33
- Details
33
+ {{t "fleet-ops.component.order-config.details"}}
34
34
  </a>
35
35
  <a href="javascript:;" class="ui-tab {{if (eq this.activeTab 'meta') 'active'}}" {{on "click" (fn
36
36
  (mut this.activeTab) "meta" )}}>
37
- Custom Fields
37
+ {{t "fleet-ops.component.order-config.fields"}}
38
38
  </a>
39
39
  <a href="javascript:;" class="ui-tab {{if (eq this.activeTab 'activity') 'active'}}" {{on "click"
40
40
  (fn (mut this.activeTab) "activity" )}}>
41
- Activity Flow
41
+ {{t "fleet-ops.component.order-config.flow"}}
42
42
  </a>
43
43
  <a href="javascript:;" class="ui-tab {{if (eq this.activeTab 'entities') 'active'}}" {{on "click"
44
44
  (fn (mut this.activeTab) "entities" )}}>
45
- Entities
45
+ {{t "fleet-ops.component.order-config.entities"}}
46
46
  </a>
47
47
  </nav>
48
48
  </div>
@@ -9,6 +9,7 @@ export default class OrderConfigComponent extends Component {
9
9
  @service modalsManager;
10
10
  @service fetch;
11
11
  @service socket;
12
+ @service intl;
12
13
  @service store;
13
14
  @service notifications;
14
15
  @service crud;
@@ -95,7 +96,7 @@ export default class OrderConfigComponent extends Component {
95
96
  const tags = [];
96
97
 
97
98
  this.modalsManager.show('modals/new-order-config', {
98
- title: 'Create a new order configuration',
99
+ title: this.intl.t('fleet-ops.component.order-config.create-new-title'),
99
100
  acceptButtonIcon: 'check',
100
101
  acceptButtonIconPrefix: 'fas',
101
102
  declineButtonIcon: 'times',
@@ -116,7 +117,7 @@ export default class OrderConfigComponent extends Component {
116
117
 
117
118
  if (!name) {
118
119
  modal.stopLoading();
119
- return this.notifications.warning('Order configuration requires a name');
120
+ return this.notifications.warning(this.intl.t('fleet-ops.component.order-config.warning-message'));
120
121
  }
121
122
 
122
123
  return this.fetch
@@ -125,7 +126,7 @@ export default class OrderConfigComponent extends Component {
125
126
  const newConfigExtension = this.fetch.jsonToModel(newConfig, 'extension');
126
127
 
127
128
  this.configurations.pushObject(newConfigExtension);
128
- this.notifications.success('New order config created successfully.');
129
+ this.notifications.success(this.intl.t('fleet-ops.component.order-config.success-message'));
129
130
  this.selectConfig(newConfigExtension.namespace);
130
131
  })
131
132
  .catch((error) => {
@@ -139,7 +140,7 @@ export default class OrderConfigComponent extends Component {
139
140
  const { orderConfig } = this;
140
141
 
141
142
  if (!orderConfig) {
142
- this.notifications.warning('No order configuration selected.');
143
+ this.notifications.warning(this.intl.t('fleet-ops.component.order-config.no-order-warning'));
143
144
 
144
145
  return;
145
146
  }
@@ -150,7 +151,7 @@ export default class OrderConfigComponent extends Component {
150
151
  data: orderConfig,
151
152
  })
152
153
  .then(() => {
153
- this.notifications.success(`${orderConfig.name} order configuration saved.`);
154
+ this.notifications.success(this.intl.t('fleet-ops.component.order-config.saved-success', { orderName: orderConfig.name }));
154
155
  this.isSaving = false;
155
156
  })
156
157
  .catch((error) => {
@@ -164,7 +165,7 @@ export default class OrderConfigComponent extends Component {
164
165
  const description = extension.description;
165
166
 
166
167
  this.modalsManager.show('modals/clone-config-form', {
167
- title: 'Enter name of cloned configuration',
168
+ title: this.intl.t('fleet-ops.component.order-config.enter-name-title'),
168
169
  acceptButtonIcon: 'check',
169
170
  acceptButtonIconPrefix: 'fas',
170
171
  declineButtonIcon: 'times',
@@ -177,7 +178,7 @@ export default class OrderConfigComponent extends Component {
177
178
  const { name, description } = modal.getOptions();
178
179
 
179
180
  if (!name) {
180
- return this.notifications.warning('No config name entered.');
181
+ return this.notifications.warning(this.intl.t('fleet-ops.component.order-config.no-config-warning'));
181
182
  }
182
183
 
183
184
  return this.fetch
@@ -190,7 +191,7 @@ export default class OrderConfigComponent extends Component {
190
191
  .then((newConfig) => {
191
192
  const clone = this.fetch.jsonToModel(newConfig, 'extension');
192
193
  this.configurations.pushObject(clone);
193
- this.notifications.success('Order config successfully cloned.');
194
+ this.notifications.success(this.intl.t('fleet-ops.component.order-config.cloned-success'));
194
195
  this.selectConfig(clone.namespace);
195
196
  })
196
197
  .catch((error) => {
@@ -204,7 +205,7 @@ export default class OrderConfigComponent extends Component {
204
205
  const uninstall = isModel(extension) ? extension : this.fetch.jsonToModel(extension, 'extension');
205
206
 
206
207
  return this.crud.delete(uninstall, {
207
- body: 'Once this order configuration is deleted you will not be able to create orders using it anymore. Are you sure?',
208
+ body: this.intl.t('fleet-ops.component.order-config.body'),
208
209
  acceptButtonIcon: 'trash',
209
210
  declineButtonIcon: 'times',
210
211
  declineButtonIconPrefix: 'fas',
@@ -221,7 +222,7 @@ export default class OrderConfigComponent extends Component {
221
222
  this.listenForUninstallProgress(extension);
222
223
 
223
224
  this.modalsManager.show('modals/uninstall-prompt', {
224
- title: 'Uninstall Configuration',
225
+ title: this.intl.t('fleet-ops.component.order-config.uninstall-title'),
225
226
  acceptButtonText: 'Uninstall',
226
227
  acceptButtonScheme: 'danger',
227
228
  extension,
@@ -236,7 +237,7 @@ export default class OrderConfigComponent extends Component {
236
237
  .uninstall()
237
238
  .then(() => {
238
239
  this.closeUninstallChannel();
239
- this.notifications.success(`Extension '${extensionName}' uninstalled.`);
240
+ this.notifications.success(this.intl.t('fleet-ops.component.order-config.uninstall-success', { extensionName: extensionName }));
240
241
  this.configurations.removeObject(extension);
241
242
  this.selected = undefined;
242
243
  done();
@@ -4,7 +4,7 @@
4
4
  <div class="absolute h-full left-0 top-0 bottom-0 pl-4 flex items-center justify-center">
5
5
  <FaIcon @icon="search" />
6
6
  </div>
7
- <Input @value={{this.query}} @type="text" placeholder="Search orders..." class="w-full p-0 m-0 h-full bg-transparent order-list-overlay-search" />
7
+ <Input @value={{this.query}} @type="text" placeholder={{t "fleet-ops.component.order-list-overlay.search"}} class="w-full p-0 m-0 h-full bg-transparent order-list-overlay-search" />
8
8
  </div>
9
9
  {{#if this.selectedOrders.length}}
10
10
  <BasicDropdown class="mr-2" @renderInPlace={{true}} as |dd|>
@@ -17,14 +17,14 @@
17
17
  <div class="next-dd-menu">
18
18
  <div class="px-1">
19
19
  <div class="text-sm flex flex-row items-center px-3 py-0.5 rounded-md my-1">
20
- Selected {{pluralize this.selectedOrders.length "Order"}}
20
+ {{t "fleet-ops.component.order-list-overlay.selected"}} {{pluralize this.selectedOrders.length "Order"}}
21
21
  </div>
22
22
  </div>
23
23
  <div class="next-dd-menu-seperator"></div>
24
24
  <div class="px-1">
25
- <a href="javascript:;" class="next-dd-item" {{on "click" (fn this.onDropdownAction dd "onPressAssignOrders")}}>Assign to driver...</a>
26
- <a href="javascript:;" class="next-dd-item" {{on "click" (fn this.onDropdownAction dd "onPressCancelOrders" this.selectedOrders)}}>Cancel orders...</a>
27
- <a href="javascript:;" class="next-dd-item text-danger" {{on "click" (fn this.onDropdownAction dd "onPressDeleteOrders" this.selectedOrders)}}>Delete orders...</a>
25
+ <a href="javascript:;" class="next-dd-item" {{on "click" (fn this.onDropdownAction dd "onPressAssignOrders")}}>{{t "fleet-ops.component.order-list-overlay.assign"}}</a>
26
+ <a href="javascript:;" class="next-dd-item" {{on "click" (fn this.onDropdownAction dd "onPressCancelOrders" this.selectedOrders)}}>{{t "fleet-ops.component.order-list-overlay.cancel"}}</a>
27
+ <a href="javascript:;" class="next-dd-item text-danger" {{on "click" (fn this.onDropdownAction dd "onPressDeleteOrders" this.selectedOrders)}}>{{t "fleet-ops.component.order-list-overlay.delete"}}</a>
28
28
  </div>
29
29
  </div>
30
30
  </dd.Content>
@@ -40,13 +40,13 @@
40
40
  <div class="next-dd-menu">
41
41
  <div class="px-1">
42
42
  <div class="text-sm flex flex-row items-center px-3 py-0.5 rounded-md my-1">
43
- Actions
43
+ {{t "fleet-ops.component.order-list-overlay.actions"}}
44
44
  </div>
45
45
  </div>
46
46
  <div class="next-dd-menu-seperator"></div>
47
47
  <div class="px-1">
48
- <a href="javascript:;" class="next-dd-item" {{on "click" (fn this.onDropdownAction dd "onPressCreateOrder")}}>Create new order...</a>
49
- <a href="javascript:;" class="next-dd-item" {{on "click" (fn this.onDropdownAction dd "onPressCreateFleet")}}>Create new fleet...</a>
48
+ <a href="javascript:;" class="next-dd-item" {{on "click" (fn this.onDropdownAction dd "onPressCreateOrder")}}>{{t "fleet-ops.component.order-list-overlay.create-order"}}</a>
49
+ <a href="javascript:;" class="next-dd-item" {{on "click" (fn this.onDropdownAction dd "onPressCreateFleet")}}>{{t "fleet-ops.component.order-list-overlay.create-fleet"}}</a>
50
50
  </div>
51
51
  </div>
52
52
  </dd.Content>
@@ -57,34 +57,34 @@
57
57
  {{#if this.isLoading}}
58
58
  <div class="flex items-center p-4">
59
59
  <Spinner class="mr-2" />
60
- <span>Loading...</span>
60
+ <span>{{t "fleet-ops.common.loading"}}</span>
61
61
  </div>
62
62
  {{/if}}
63
63
 
64
64
  <div class="space-y-4 orders-panel-fleets">
65
65
  <div class="next-content-panel-wrapper mb-2">
66
- <ContentPanel @title="Active orders" @subtitle={{pluralize this.activeOrders.length "Order"}} @open={{this.activeOrders.length}} @pad={{true}} @panelSubtitleInlineClass="text-xs" @panelBodyClass="order-listings bg-white dark:bg-gray-800">
66
+ <ContentPanel @title={{t "fleet-ops.component.order-list-overlay.active-order"}} @subtitle={{pluralize this.activeOrders.length "Order"}} @open={{this.activeOrders.length}} @pad={{true}} @panelSubtitleInlineClass="text-xs" @panelBodyClass="order-listings bg-white dark:bg-gray-800">
67
67
  {{#each this.activeOrders as |order index|}}
68
68
  <OrderListOverlay::Order @order={{order}} @index={{add index 1}} @isSelected={{includes order this.selectedOrders}} @onClick={{this.selectOrder}} @onDoubleClick={{fn this.onAction "onPressViewOrder"}} as |isSelected|>
69
69
  {{#if isSelected}}
70
70
  <div class="order-listings-row selected px-4 py-2">
71
71
  <div class="flex flex-row items-center space-x-2">
72
72
  {{!-- <Button @type="default" @icon="map" @text="Map" @size="xs" class="btn-transparent-border" /> --}}
73
- <Button @type="default" @icon="file-invoice" @text="Details" @size="xs" class="btn-transparent-border" @onClick={{fn this.onAction "onPressViewOrder" order}} />
73
+ <Button @type="default" @icon="file-invoice" @text={{t "fleet-ops.common.details"}} @size="xs" class="btn-transparent-border" @onClick={{fn this.onAction "onPressViewOrder" order}} />
74
74
  </div>
75
75
  </div>
76
76
  {{/if}}
77
77
  </OrderListOverlay::Order>
78
78
  {{/each}}
79
79
  </ContentPanel>
80
- <ContentPanel @title="Unassigned orders" @subtitle={{pluralize this.unassignedOrders.length "Order"}} @open={{this.unassignedOrders.length}} @pad={{true}} @panelSubtitleInlineClass="text-xs" @panelBodyClass="order-listings bg-white dark:bg-gray-800">
80
+ <ContentPanel @title={{t "fleet-ops.component.order-list-overlay.unassigned-order"}} @subtitle={{pluralize this.unassignedOrders.length "Order"}} @open={{this.unassignedOrders.length}} @pad={{true}} @panelSubtitleInlineClass="text-xs" @panelBodyClass="order-listings bg-white dark:bg-gray-800">
81
81
  {{#each this.unassignedOrders as |order index|}}
82
82
  <OrderListOverlay::Order @order={{order}} @index={{add index 1}} @isSelected={{includes order this.selectedOrders}} @onClick={{this.selectOrder}} @onDoubleClick={{fn this.onAction "onPressViewOrder"}} as |isSelected|>
83
83
  {{#if isSelected}}
84
84
  <div class="order-listings-row selected px-4 py-2">
85
85
  <div class="flex flex-row items-center space-x-2">
86
86
  {{!-- <Button @type="default" @icon="map" @text="Map" @size="xs" class="btn-transparent-border" /> --}}
87
- <Button @type="default" @icon="file-invoice" @text="Details" @size="xs" class="btn-transparent-border" @onClick={{fn this.onAction "onPressViewOrder" order}} />
87
+ <Button @type="default" @icon="file-invoice" @text={{t "fleet-ops.common.details"}} @size="xs" class="btn-transparent-border" @onClick={{fn this.onAction "onPressViewOrder" order}} />
88
88
  </div>
89
89
  </div>
90
90
  {{/if}}
@@ -105,7 +105,7 @@
105
105
  <div class="order-listings-row selected px-4 py-2">
106
106
  <div class="flex flex-row items-center space-x-2">
107
107
  {{!-- <Button @type="default" @icon="map" @text="Map" @size="xs" class="btn-transparent-border" /> --}}
108
- <Button @type="default" @icon="file-invoice" @text="Details" @size="xs" class="btn-transparent-border" @onClick={{fn this.onAction "onPressViewOrder" order}} />
108
+ <Button @type="default" @icon="file-invoice" @text={{t "fleet-ops.common.details"}} @size="xs" class="btn-transparent-border" @onClick={{fn this.onAction "onPressViewOrder" order}} />
109
109
  </div>
110
110
  </div>
111
111
  {{/if}}
@@ -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;