@fleetbase/fleetops-engine 0.6.25 → 0.6.26

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 (48) hide show
  1. package/DRIVER_SCHEDULING.md +186 -0
  2. package/addon/components/driver/schedule.hbs +100 -0
  3. package/addon/components/driver/schedule.js +267 -0
  4. package/addon/components/order/kanban-card.hbs +2 -2
  5. package/addon/components/vehicle/details.hbs +594 -4
  6. package/addon/components/vehicle/form.hbs +467 -41
  7. package/addon/controllers/analytics/reports/index.js +3 -2
  8. package/addon/controllers/connectivity/devices/index.js +3 -3
  9. package/addon/controllers/connectivity/events/index.js +3 -2
  10. package/addon/controllers/connectivity/sensors/index.js +3 -5
  11. package/addon/controllers/connectivity/telematics/index.js +3 -1
  12. package/addon/controllers/maintenance/equipment/index.js +4 -4
  13. package/addon/controllers/maintenance/parts/index.js +4 -4
  14. package/addon/controllers/maintenance/work-orders/index.js +4 -4
  15. package/addon/controllers/management/contacts/customers.js +12 -10
  16. package/addon/controllers/management/contacts/index.js +3 -10
  17. package/addon/controllers/management/drivers/index/details.js +26 -13
  18. package/addon/controllers/management/drivers/index.js +4 -16
  19. package/addon/controllers/management/fleets/index.js +3 -13
  20. package/addon/controllers/management/fuel-reports/index.js +3 -10
  21. package/addon/controllers/management/issues/index.js +3 -12
  22. package/addon/controllers/management/places/index.js +4 -12
  23. package/addon/controllers/management/vehicles/index.js +3 -13
  24. package/addon/controllers/management/vendors/index.js +3 -13
  25. package/addon/controllers/operations/orders/index.js +5 -22
  26. package/addon/controllers/operations/scheduler/index.js +195 -6
  27. package/addon/controllers/operations/service-rates/index.js +34 -34
  28. package/addon/controllers/settings/payments/index.js +0 -6
  29. package/addon/routes.js +1 -0
  30. package/addon/services/driver-scheduling.js +171 -0
  31. package/addon/services/leaflet-layer-visibility-manager.js +4 -1
  32. package/addon/services/service-rate-actions.js +5 -1
  33. package/addon/templates/management/drivers/index/details/positions.hbs +1 -2
  34. package/addon/templates/management/drivers/index/details/schedule.hbs +1 -2
  35. package/addon/templates/operations/scheduler/index.hbs +48 -10
  36. package/addon/utils/fleet-ops-options.js +86 -0
  37. package/app/services/driver-scheduling.js +1 -0
  38. package/composer.json +1 -1
  39. package/extension.json +1 -1
  40. package/package.json +3 -3
  41. package/server/migrations/2025_11_17_033648_add_additional_columns_to_vehicles_table.php +142 -0
  42. package/server/src/Constraints/HOSConstraint.php +244 -0
  43. package/server/src/Http/Controllers/Api/v1/OrderController.php +1 -1
  44. package/server/src/Http/Controllers/Internal/v1/OrderController.php +8 -3
  45. package/server/src/Http/Resources/v1/Vehicle.php +197 -19
  46. package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +211 -28
  47. package/server/src/Models/Driver.php +12 -8
  48. package/server/src/Models/Vehicle.php +101 -15
@@ -57,9 +57,9 @@ export default class ConnectivitySensorsIndexController extends Controller {
57
57
  /** columns */
58
58
  @tracked columns = [
59
59
  {
60
+ sticky: true,
60
61
  label: this.intl.t('column.name'),
61
62
  valuePath: 'displayName',
62
- width: '180px',
63
63
  cellComponent: 'table/cell/anchor',
64
64
  cellClassNames: 'uppercase',
65
65
  action: this.sensorActions.transition.view,
@@ -121,7 +121,6 @@ export default class ConnectivitySensorsIndexController extends Controller {
121
121
  label: this.intl.t('column.status'),
122
122
  valuePath: 'status',
123
123
  cellComponent: 'table/cell/status',
124
- width: '10%',
125
124
  resizable: true,
126
125
  sortable: true,
127
126
  filterable: true,
@@ -132,7 +131,6 @@ export default class ConnectivitySensorsIndexController extends Controller {
132
131
  label: this.intl.t('column.created-at'),
133
132
  valuePath: 'createdAt',
134
133
  sortParam: 'created_at',
135
- width: '10%',
136
134
  resizable: true,
137
135
  sortable: true,
138
136
  filterable: true,
@@ -142,7 +140,6 @@ export default class ConnectivitySensorsIndexController extends Controller {
142
140
  label: this.intl.t('column.updated-at'),
143
141
  valuePath: 'updatedAt',
144
142
  sortParam: 'updated_at',
145
- width: '10%',
146
143
  resizable: true,
147
144
  sortable: true,
148
145
  hidden: true,
@@ -159,7 +156,8 @@ export default class ConnectivitySensorsIndexController extends Controller {
159
156
  ddMenuLabel: this.intl.t('common.resource-actions', { resource: this.intl.t('resource.sensor') }),
160
157
  cellClassNames: 'overflow-visible',
161
158
  wrapperClass: 'flex items-center justify-end mx-2',
162
- width: '10%',
159
+ sticky: 'right',
160
+ width: 60,
163
161
  actions: [
164
162
  {
165
163
  label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.sensor') }),
@@ -57,6 +57,7 @@ export default class ConnectivityTelematicsIndexController extends Controller {
57
57
  /** columns */
58
58
  @tracked columns = [
59
59
  {
60
+ sticky: true,
60
61
  label: 'Provider',
61
62
  valuePath: 'provider',
62
63
  cellComponent: 'table/cell/anchor',
@@ -108,7 +109,8 @@ export default class ConnectivityTelematicsIndexController extends Controller {
108
109
  ddMenuLabel: this.intl.t('common.resource-actions', { resource: this.intl.t('resource.telematic') }),
109
110
  cellClassNames: 'overflow-visible',
110
111
  wrapperClass: 'flex items-center justify-end mx-2',
111
- width: '10%',
112
+ sticky: 'right',
113
+ width: 60,
112
114
  actions: [
113
115
  {
114
116
  label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.telematic') }),
@@ -56,7 +56,7 @@ export default class MaintenanceEquipmentIndexController extends Controller {
56
56
  {
57
57
  label: this.intl.t('column.name'),
58
58
  valuePath: 'name',
59
- width: '180px',
59
+
60
60
  cellComponent: 'table/cell/anchor',
61
61
  cellClassNames: 'uppercase',
62
62
  action: this.equipmentActions.transition.view,
@@ -72,7 +72,7 @@ export default class MaintenanceEquipmentIndexController extends Controller {
72
72
  label: this.intl.t('column.created-at'),
73
73
  valuePath: 'createdAt',
74
74
  sortParam: 'created_at',
75
- width: '10%',
75
+
76
76
  resizable: true,
77
77
  sortable: true,
78
78
  filterable: true,
@@ -82,7 +82,7 @@ export default class MaintenanceEquipmentIndexController extends Controller {
82
82
  label: this.intl.t('column.updated-at'),
83
83
  valuePath: 'updatedAt',
84
84
  sortParam: 'updated_at',
85
- width: '10%',
85
+
86
86
  resizable: true,
87
87
  sortable: true,
88
88
  hidden: true,
@@ -99,7 +99,7 @@ export default class MaintenanceEquipmentIndexController extends Controller {
99
99
  ddMenuLabel: this.intl.t('common.resource-actions', { resource: this.intl.t('resource.equipment') }),
100
100
  cellClassNames: 'overflow-visible',
101
101
  wrapperClass: 'flex items-center justify-end mx-2',
102
- width: '10%',
102
+
103
103
  actions: [
104
104
  {
105
105
  label: this.intl.t('column.view-details'),
@@ -56,7 +56,7 @@ export default class MaintenancePartsIndexController extends Controller {
56
56
  {
57
57
  label: this.intl.t('column.name'),
58
58
  valuePath: 'name',
59
- width: '180px',
59
+
60
60
  cellComponent: 'table/cell/anchor',
61
61
  cellClassNames: 'uppercase',
62
62
  action: this.partActions.transition.view,
@@ -72,7 +72,7 @@ export default class MaintenancePartsIndexController extends Controller {
72
72
  label: this.intl.t('column.created-at'),
73
73
  valuePath: 'createdAt',
74
74
  sortParam: 'created_at',
75
- width: '10%',
75
+
76
76
  resizable: true,
77
77
  sortable: true,
78
78
  filterable: true,
@@ -82,7 +82,7 @@ export default class MaintenancePartsIndexController extends Controller {
82
82
  label: this.intl.t('column.updated-at'),
83
83
  valuePath: 'updatedAt',
84
84
  sortParam: 'updated_at',
85
- width: '10%',
85
+
86
86
  resizable: true,
87
87
  sortable: true,
88
88
  hidden: true,
@@ -99,7 +99,7 @@ export default class MaintenancePartsIndexController extends Controller {
99
99
  ddMenuLabel: this.intl.t('common.resource-actions', { resource: this.intl.t('resource.part') }),
100
100
  cellClassNames: 'overflow-visible',
101
101
  wrapperClass: 'flex items-center justify-end mx-2',
102
- width: '10%',
102
+
103
103
  actions: [
104
104
  {
105
105
  label: this.intl.t('column.view-details'),
@@ -56,7 +56,7 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
56
56
  {
57
57
  label: this.intl.t('column.name'),
58
58
  valuePath: 'name',
59
- width: '180px',
59
+
60
60
  cellComponent: 'table/cell/anchor',
61
61
  cellClassNames: 'uppercase',
62
62
  action: this.workOrderActions.transition.view,
@@ -72,7 +72,7 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
72
72
  label: this.intl.t('column.created-at'),
73
73
  valuePath: 'createdAt',
74
74
  sortParam: 'created_at',
75
- width: '10%',
75
+
76
76
  resizable: true,
77
77
  sortable: true,
78
78
  filterable: true,
@@ -82,7 +82,7 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
82
82
  label: this.intl.t('column.updated-at'),
83
83
  valuePath: 'updatedAt',
84
84
  sortParam: 'updated_at',
85
- width: '10%',
85
+
86
86
  resizable: true,
87
87
  sortable: true,
88
88
  hidden: true,
@@ -99,7 +99,7 @@ export default class MaintenanceWorkOrdersIndexController extends Controller {
99
99
  ddMenuLabel: this.intl.t('common.resource-actions', { resource: this.intl.t('resource.Work Order') }),
100
100
  cellClassNames: 'overflow-visible',
101
101
  wrapperClass: 'flex items-center justify-end mx-2',
102
- width: '10%',
102
+
103
103
  actions: [
104
104
  {
105
105
  label: this.intl.t('column.view-details'),
@@ -8,9 +8,10 @@ export default class ManagementContactsCustomersController extends ManagementCon
8
8
  get columns() {
9
9
  return [
10
10
  {
11
+ sticky: true,
11
12
  label: this.intl.t('column.name'),
12
13
  valuePath: 'name',
13
- width: '140px',
14
+
14
15
  cellComponent: 'table/cell/media-name',
15
16
  action: this.contactActions.transition.view,
16
17
  permission: 'fleet-ops view contact',
@@ -23,7 +24,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
23
24
  label: this.intl.t('column.id'),
24
25
  valuePath: 'public_id',
25
26
  cellComponent: 'click-to-copy',
26
- width: '120px',
27
+
27
28
  resizable: true,
28
29
  sortable: true,
29
30
  filterable: true,
@@ -33,7 +34,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
33
34
  label: this.intl.t('column.internal-id'),
34
35
  valuePath: 'internal_id',
35
36
  cellComponent: 'click-to-copy',
36
- width: '100px',
37
+
37
38
  resizable: true,
38
39
  sortable: true,
39
40
  filterable: true,
@@ -43,7 +44,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
43
44
  label: this.intl.t('column.title'),
44
45
  valuePath: 'title',
45
46
  cellComponent: 'click-to-copy',
46
- width: '80px',
47
+
47
48
  resizable: true,
48
49
  sortable: true,
49
50
  filterable: true,
@@ -54,7 +55,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
54
55
  label: this.intl.t('column.email'),
55
56
  valuePath: 'email',
56
57
  cellComponent: 'click-to-copy',
57
- width: '150px',
58
+
58
59
  resizable: true,
59
60
  sortable: true,
60
61
  filterable: true,
@@ -64,7 +65,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
64
65
  label: this.intl.t('column.phone'),
65
66
  valuePath: 'phone',
66
67
  cellComponent: 'click-to-copy',
67
- width: '130px',
68
+
68
69
  resizable: true,
69
70
  sortable: true,
70
71
  filterable: true,
@@ -75,7 +76,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
75
76
  valuePath: 'address',
76
77
  cellComponent: 'table/cell/anchor',
77
78
  action: this.contactActions.viewPlace,
78
- width: '170px',
79
+
79
80
  resizable: true,
80
81
  sortable: true,
81
82
  filterable: true,
@@ -86,7 +87,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
86
87
  label: this.intl.t('column.created'),
87
88
  valuePath: 'createdAt',
88
89
  sortParam: 'created_at',
89
- width: '160px',
90
+
90
91
  resizable: true,
91
92
  sortable: true,
92
93
  filterable: true,
@@ -96,7 +97,7 @@ export default class ManagementContactsCustomersController extends ManagementCon
96
97
  label: this.intl.t('column.updated'),
97
98
  valuePath: 'updatedAt',
98
99
  sortParam: 'updated_at',
99
- width: '130px',
100
+
100
101
  resizable: true,
101
102
  sortable: true,
102
103
  hidden: true,
@@ -112,7 +113,8 @@ export default class ManagementContactsCustomersController extends ManagementCon
112
113
  ddMenuLabel: this.intl.t('common.resource-actions', { resource: this.intl.t('resource.customer') }),
113
114
  cellClassNames: 'overflow-visible',
114
115
  wrapperClass: 'flex items-center justify-end mx-2',
115
- width: '9%',
116
+ sticky: 'right',
117
+ width: 60,
116
118
  actions: [
117
119
  {
118
120
  label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.customer') }),
@@ -67,9 +67,9 @@ export default class ManagementContactsIndexController extends Controller {
67
67
  get columns() {
68
68
  return [
69
69
  {
70
+ sticky: true,
70
71
  label: this.intl.t('column.name'),
71
72
  valuePath: 'name',
72
- width: '140px',
73
73
  cellComponent: 'table/cell/media-name',
74
74
  action: this.contactActions.transition.view,
75
75
  permission: 'fleet-ops view contact',
@@ -82,7 +82,6 @@ export default class ManagementContactsIndexController extends Controller {
82
82
  label: this.intl.t('column.id'),
83
83
  valuePath: 'public_id',
84
84
  cellComponent: 'click-to-copy',
85
- width: '120px',
86
85
  resizable: true,
87
86
  sortable: true,
88
87
  filterable: true,
@@ -92,7 +91,6 @@ export default class ManagementContactsIndexController extends Controller {
92
91
  label: this.intl.t('column.internal-id'),
93
92
  valuePath: 'internal_id',
94
93
  cellComponent: 'click-to-copy',
95
- width: '100px',
96
94
  resizable: true,
97
95
  sortable: true,
98
96
  filterable: true,
@@ -102,7 +100,6 @@ export default class ManagementContactsIndexController extends Controller {
102
100
  label: this.intl.t('column.title'),
103
101
  valuePath: 'title',
104
102
  cellComponent: 'click-to-copy',
105
- width: '80px',
106
103
  resizable: true,
107
104
  sortable: true,
108
105
  filterable: true,
@@ -113,7 +110,6 @@ export default class ManagementContactsIndexController extends Controller {
113
110
  label: this.intl.t('column.email'),
114
111
  valuePath: 'email',
115
112
  cellComponent: 'click-to-copy',
116
- width: '150px',
117
113
  resizable: true,
118
114
  sortable: true,
119
115
  filterable: true,
@@ -123,7 +119,6 @@ export default class ManagementContactsIndexController extends Controller {
123
119
  label: this.intl.t('column.phone'),
124
120
  valuePath: 'phone',
125
121
  cellComponent: 'click-to-copy',
126
- width: '130px',
127
122
  resizable: true,
128
123
  sortable: true,
129
124
  filterable: true,
@@ -134,7 +129,6 @@ export default class ManagementContactsIndexController extends Controller {
134
129
  valuePath: 'address',
135
130
  cellComponent: 'table/cell/anchor',
136
131
  action: this.contactActions.viewPlace,
137
- width: '170px',
138
132
  resizable: true,
139
133
  sortable: true,
140
134
  filterable: true,
@@ -145,7 +139,6 @@ export default class ManagementContactsIndexController extends Controller {
145
139
  label: this.intl.t('column.created'),
146
140
  valuePath: 'createdAt',
147
141
  sortParam: 'created_at',
148
- width: '160px',
149
142
  resizable: true,
150
143
  sortable: true,
151
144
  filterable: true,
@@ -155,7 +148,6 @@ export default class ManagementContactsIndexController extends Controller {
155
148
  label: this.intl.t('column.updated'),
156
149
  valuePath: 'updatedAt',
157
150
  sortParam: 'updated_at',
158
- width: '130px',
159
151
  resizable: true,
160
152
  sortable: true,
161
153
  hidden: true,
@@ -171,7 +163,8 @@ export default class ManagementContactsIndexController extends Controller {
171
163
  ddMenuLabel: this.intl.t('common.resource-actions', { resource: this.intl.t('resource.contact') }),
172
164
  cellClassNames: 'overflow-visible',
173
165
  wrapperClass: 'flex items-center justify-end mx-2',
174
- width: '9%',
166
+ sticky: 'right',
167
+ width: 60,
175
168
  actions: [
176
169
  {
177
170
  label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.contact') }),
@@ -1,19 +1,32 @@
1
1
  import Controller from '@ember/controller';
2
- import { tracked } from '@glimmer/tracking';
3
2
  import { inject as service } from '@ember/service';
4
3
 
5
4
  export default class ManagementDriverIndexDetailsController extends Controller {
6
5
  @service hostRouter;
7
- @tracked tabs = [
8
- {
9
- route: 'management.drivers.index.details.index',
10
- label: 'Overview',
11
- },
12
- ];
13
- @tracked actionButtons = [
14
- {
15
- icon: 'pencil',
16
- fn: () => this.hostRouter.transitionTo('console.fleet-ops.management.drivers.index.edit', this.model),
17
- },
18
- ];
6
+
7
+ get tabs() {
8
+ return [
9
+ {
10
+ route: 'management.drivers.index.details.index',
11
+ label: 'Overview',
12
+ },
13
+ {
14
+ route: 'management.drivers.index.details.positions',
15
+ label: 'Positions',
16
+ },
17
+ // {
18
+ // route: 'management.drivers.index.details.schedule',
19
+ // label: 'Schedule',
20
+ // },
21
+ ];
22
+ }
23
+
24
+ get actionButtons() {
25
+ return [
26
+ {
27
+ icon: 'pencil',
28
+ fn: () => this.hostRouter.transitionTo('console.fleet-ops.management.drivers.index.edit', this.model),
29
+ },
30
+ ];
31
+ }
19
32
  }
@@ -94,9 +94,9 @@ export default class ManagementDriversIndexController extends Controller {
94
94
  get columns() {
95
95
  return [
96
96
  {
97
+ sticky: true,
97
98
  label: this.intl.t('column.name'),
98
99
  valuePath: 'name',
99
- width: '200px',
100
100
  cellComponent: 'table/cell/driver-name',
101
101
  permission: 'fleet-ops view driver',
102
102
  action: this.driverActions.transition.view,
@@ -108,7 +108,6 @@ export default class ManagementDriversIndexController extends Controller {
108
108
  {
109
109
  label: this.intl.t('column.id'),
110
110
  valuePath: 'public_id',
111
- width: '130px',
112
111
  cellComponent: 'click-to-copy',
113
112
  resizable: true,
114
113
  sortable: true,
@@ -120,7 +119,6 @@ export default class ManagementDriversIndexController extends Controller {
120
119
  label: this.intl.t('column.internal-id'),
121
120
  valuePath: 'internal_id',
122
121
  cellComponent: 'click-to-copy',
123
- width: '130px',
124
122
  resizable: true,
125
123
  sortable: true,
126
124
  filterable: true,
@@ -140,7 +138,6 @@ export default class ManagementDriversIndexController extends Controller {
140
138
  },
141
139
  valuePath: 'vendor.name',
142
140
  modelNamePath: 'name',
143
- width: '180px',
144
141
  resizable: true,
145
142
  filterable: true,
146
143
  filterComponent: 'filter/model',
@@ -163,7 +160,6 @@ export default class ManagementDriversIndexController extends Controller {
163
160
  valuePath: 'vehicle.display_name',
164
161
  modelNamePath: 'display_name',
165
162
  resizable: true,
166
- width: '180px',
167
163
  filterable: true,
168
164
  filterComponent: 'filter/model',
169
165
  filterComponentPlaceholder: 'Select vehicle to filter by',
@@ -174,11 +170,8 @@ export default class ManagementDriversIndexController extends Controller {
174
170
  label: this.intl.t('column.fleet'),
175
171
  cellComponent: 'table/cell/link-list',
176
172
  cellComponentLabelPath: 'name',
177
- action: (fleet) => {
178
- this.fleetActions.panel.view(fleet);
179
- },
173
+ action: this.fleetActions.panel.view,
180
174
  valuePath: 'fleets',
181
- width: '180px',
182
175
  resizable: true,
183
176
  hidden: true,
184
177
  filterable: true,
@@ -191,7 +184,6 @@ export default class ManagementDriversIndexController extends Controller {
191
184
  label: this.intl.t('column.license'),
192
185
  valuePath: 'drivers_license_number',
193
186
  cellComponent: 'table/cell/base',
194
- width: '150px',
195
187
  resizable: true,
196
188
  sortable: true,
197
189
  filterable: true,
@@ -201,7 +193,6 @@ export default class ManagementDriversIndexController extends Controller {
201
193
  label: this.intl.t('column.phone'),
202
194
  valuePath: 'phone',
203
195
  cellComponent: 'table/cell/base',
204
- width: '150px',
205
196
  resizable: true,
206
197
  sortable: true,
207
198
  filterable: true,
@@ -213,7 +204,6 @@ export default class ManagementDriversIndexController extends Controller {
213
204
  valuePath: 'country',
214
205
  cellComponent: 'table/cell/country',
215
206
  cellClassNames: 'uppercase',
216
- width: '120px',
217
207
  resizable: true,
218
208
  hidden: true,
219
209
  sortable: true,
@@ -230,7 +220,6 @@ export default class ManagementDriversIndexController extends Controller {
230
220
  label: this.intl.t('column.status'),
231
221
  valuePath: 'status',
232
222
  cellComponent: 'table/cell/status',
233
- width: '10%',
234
223
  resizable: true,
235
224
  sortable: true,
236
225
  filterable: true,
@@ -242,7 +231,6 @@ export default class ManagementDriversIndexController extends Controller {
242
231
  valuePath: 'createdAt',
243
232
  sortParam: 'created_at',
244
233
  filterParam: 'created_at',
245
- width: '130px',
246
234
  resizable: true,
247
235
  sortable: true,
248
236
  filterable: true,
@@ -253,7 +241,6 @@ export default class ManagementDriversIndexController extends Controller {
253
241
  valuePath: 'updatedAt',
254
242
  sortParam: 'updated_at',
255
243
  filterParam: 'updated_at',
256
- width: '130px',
257
244
  resizable: true,
258
245
  sortable: true,
259
246
  hidden: true,
@@ -269,7 +256,8 @@ export default class ManagementDriversIndexController extends Controller {
269
256
  ddMenuLabel: this.intl.t('common.resource-actions', { resource: this.intl.t('resource.driver') }),
270
257
  cellClassNames: 'overflow-visible',
271
258
  wrapperClass: 'flex items-center justify-end mx-2',
272
- width: '10%',
259
+ sticky: 'right',
260
+ width: 60,
273
261
  actions: [
274
262
  {
275
263
  label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.driver') }),
@@ -73,9 +73,9 @@ export default class ManagementFleetsIndexController extends Controller {
73
73
  get columns() {
74
74
  return [
75
75
  {
76
+ sticky: true,
76
77
  label: this.intl.t('column.name'),
77
78
  valuePath: 'name',
78
- width: '150px',
79
79
  cellComponent: 'table/cell/anchor',
80
80
  permission: 'fleet-ops view fleet',
81
81
  action: this.fleetActions.transition.view,
@@ -95,7 +95,6 @@ export default class ManagementFleetsIndexController extends Controller {
95
95
  permission: 'fleet-ops view service-area',
96
96
  valuePath: 'service_area.name',
97
97
  resizable: true,
98
- width: '130px',
99
98
  filterable: true,
100
99
  filterComponent: 'filter/model',
101
100
  filterComponentPlaceholder: 'Select service area',
@@ -112,7 +111,6 @@ export default class ManagementFleetsIndexController extends Controller {
112
111
  },
113
112
  valuePath: 'parent_fleet.name',
114
113
  resizable: true,
115
- width: '130px',
116
114
  filterable: true,
117
115
  filterComponent: 'filter/model',
118
116
  filterComponentPlaceholder: 'Select fleet',
@@ -129,7 +127,6 @@ export default class ManagementFleetsIndexController extends Controller {
129
127
  },
130
128
  valuePath: 'vendor.name',
131
129
  resizable: true,
132
- width: '130px',
133
130
  hidden: true,
134
131
  filterable: true,
135
132
  filterComponent: 'filter/model',
@@ -147,7 +144,6 @@ export default class ManagementFleetsIndexController extends Controller {
147
144
  },
148
145
  valuePath: 'zone.name',
149
146
  resizable: true,
150
- width: '130px',
151
147
  filterable: true,
152
148
  filterComponent: 'filter/model',
153
149
  filterComponentPlaceholder: 'Select zone',
@@ -157,7 +153,6 @@ export default class ManagementFleetsIndexController extends Controller {
157
153
  {
158
154
  label: this.intl.t('column.id'),
159
155
  valuePath: 'public_id',
160
- width: '120px',
161
156
  cellComponent: 'click-to-copy',
162
157
  action: this.fleetActions.transition.view,
163
158
  hidden: true,
@@ -169,7 +164,6 @@ export default class ManagementFleetsIndexController extends Controller {
169
164
  {
170
165
  label: this.intl.t('column.manpower'),
171
166
  valuePath: 'drivers_count',
172
- width: '100px',
173
167
  resizable: true,
174
168
  sortable: true,
175
169
  filterable: false,
@@ -178,7 +172,6 @@ export default class ManagementFleetsIndexController extends Controller {
178
172
  label: this.intl.t('column.active-manpower'),
179
173
  valuePath: 'drivers_online_count',
180
174
  hidden: true,
181
- width: '120px',
182
175
  resizable: true,
183
176
  sortable: true,
184
177
  filterable: false,
@@ -187,7 +180,6 @@ export default class ManagementFleetsIndexController extends Controller {
187
180
  label: this.intl.t('column.task'),
188
181
  valuePath: 'task',
189
182
  cellComponent: 'table/cell/base',
190
- width: '120px',
191
183
  resizable: true,
192
184
  sortable: true,
193
185
  filterable: true,
@@ -197,7 +189,6 @@ export default class ManagementFleetsIndexController extends Controller {
197
189
  label: this.intl.t('column.status'),
198
190
  valuePath: 'status',
199
191
  cellComponent: 'table/cell/status',
200
- width: '100px',
201
192
  resizable: true,
202
193
  sortable: true,
203
194
  filterable: true,
@@ -210,7 +201,6 @@ export default class ManagementFleetsIndexController extends Controller {
210
201
  label: this.intl.t('column.created-at'),
211
202
  valuePath: 'createdAt',
212
203
  sortParam: 'created_at',
213
- width: '120px',
214
204
  resizable: true,
215
205
  sortable: true,
216
206
  filterable: true,
@@ -220,7 +210,6 @@ export default class ManagementFleetsIndexController extends Controller {
220
210
  label: this.intl.t('column.updated-at'),
221
211
  valuePath: 'updatedAt',
222
212
  sortParam: 'updated_at',
223
- width: '120px',
224
213
  resizable: true,
225
214
  sortable: true,
226
215
  hidden: true,
@@ -236,7 +225,8 @@ export default class ManagementFleetsIndexController extends Controller {
236
225
  ddMenuLabel: this.intl.t('common.resource-actions', { resource: this.intl.t('resource.fleet') }),
237
226
  cellClassNames: 'overflow-visible',
238
227
  wrapperClass: 'flex items-center justify-end mx-2',
239
- width: '10%',
228
+ sticky: 'right',
229
+ width: 60,
240
230
  actions: [
241
231
  {
242
232
  label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.fleet') }),