fleetmap-reports 2.0.358 → 2.0.360

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 (82) hide show
  1. package/package.json +1 -1
  2. package/src/partnerReports/driverranking-report.js +39 -7
  3. package/src/util/utils.js +3 -0
  4. package/.claude/worktrees/eager-stonebraker-c08ac7/.eslintrc.js +0 -15
  5. package/.claude/worktrees/eager-stonebraker-c08ac7/lang/enGB.js +0 -309
  6. package/.claude/worktrees/eager-stonebraker-c08ac7/lang/esCL.js +0 -297
  7. package/.claude/worktrees/eager-stonebraker-c08ac7/lang/frFR.json +0 -324
  8. package/.claude/worktrees/eager-stonebraker-c08ac7/lang/index.js +0 -35
  9. package/.claude/worktrees/eager-stonebraker-c08ac7/lang/ptBR.js +0 -301
  10. package/.claude/worktrees/eager-stonebraker-c08ac7/lang/ptPT.js +0 -310
  11. package/.claude/worktrees/eager-stonebraker-c08ac7/package-lock.json +0 -11944
  12. package/.claude/worktrees/eager-stonebraker-c08ac7/package.json +0 -45
  13. package/.claude/worktrees/eager-stonebraker-c08ac7/src/activity-report.js +0 -822
  14. package/.claude/worktrees/eager-stonebraker-c08ac7/src/automaticReports.js +0 -34
  15. package/.claude/worktrees/eager-stonebraker-c08ac7/src/carbone/index.js +0 -13
  16. package/.claude/worktrees/eager-stonebraker-c08ac7/src/custom/vistawasteActivity-report.js +0 -544
  17. package/.claude/worktrees/eager-stonebraker-c08ac7/src/events-report.js +0 -360
  18. package/.claude/worktrees/eager-stonebraker-c08ac7/src/fuel-consumption-report.js +0 -296
  19. package/.claude/worktrees/eager-stonebraker-c08ac7/src/fuel-drop-report.js +0 -128
  20. package/.claude/worktrees/eager-stonebraker-c08ac7/src/here.js +0 -172
  21. package/.claude/worktrees/eager-stonebraker-c08ac7/src/idle-report.js +0 -403
  22. package/.claude/worktrees/eager-stonebraker-c08ac7/src/index.js +0 -244
  23. package/.claude/worktrees/eager-stonebraker-c08ac7/src/kms-report.js +0 -549
  24. package/.claude/worktrees/eager-stonebraker-c08ac7/src/location-report.js +0 -496
  25. package/.claude/worktrees/eager-stonebraker-c08ac7/src/machines-report.js +0 -278
  26. package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/afriquia.js +0 -129
  27. package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/dailyuse-report.js +0 -80
  28. package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/delayedstart-report.js +0 -223
  29. package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/driverranking-report.js +0 -328
  30. package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/gpsjump-report.js +0 -61
  31. package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/performance-report.js +0 -359
  32. package/.claude/worktrees/eager-stonebraker-c08ac7/src/refueling-report.js +0 -345
  33. package/.claude/worktrees/eager-stonebraker-c08ac7/src/reportStyle.js +0 -34
  34. package/.claude/worktrees/eager-stonebraker-c08ac7/src/sensor-report.js +0 -447
  35. package/.claude/worktrees/eager-stonebraker-c08ac7/src/speeding-report.js +0 -663
  36. package/.claude/worktrees/eager-stonebraker-c08ac7/src/stop-report.js +0 -242
  37. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/ActivityReportTemplate.mjml +0 -51
  38. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/EmptyReportTemplate.mjml +0 -25
  39. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/EventsReportTemplate.mjml +0 -75
  40. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/FuelDropReportTemplate.mjml +0 -60
  41. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/IdleReportTemplate.mjml +0 -54
  42. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/KmsReportGroupByDayTemplate.mjml +0 -43
  43. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/KmsReportTemplate.mjml +0 -44
  44. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/LocationReportTemplate.mjml +0 -37
  45. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/RefuelingReportTemplate.mjml +0 -60
  46. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/SensorReportTemplate.mjml +0 -23
  47. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/SpeedingReportTemplate.mjml +0 -80
  48. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/TripReportTemplate.mjml +0 -97
  49. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/ZoneReportTemplate.mjml +0 -52
  50. package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/report.mjml +0 -96
  51. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/activity.test.js +0 -99
  52. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/carbone.test.js +0 -20
  53. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/events.test.js +0 -30
  54. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/fuel.test.js +0 -35
  55. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/idle.test.js +0 -16
  56. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/index.js +0 -24
  57. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/index.test.js +0 -203
  58. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/kms.test.js +0 -74
  59. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/performance.test.js +0 -36
  60. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/positions.test.js +0 -67
  61. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/speeding.test.js +0 -120
  62. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/translations.test.js +0 -21
  63. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/trips.test.js +0 -140
  64. package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/zones.test.js +0 -162
  65. package/.claude/worktrees/eager-stonebraker-c08ac7/src/trip-report.js +0 -641
  66. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/device.js +0 -13
  67. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/driver.js +0 -90
  68. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/fuel.js +0 -102
  69. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/geofence.js +0 -52
  70. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/odoo.js +0 -18
  71. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/parallel.js +0 -64
  72. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/pdfDocument.js +0 -140
  73. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/route.js +0 -78
  74. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/timetable.js +0 -30
  75. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/traccar.js +0 -213
  76. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/traccar.worker.js +0 -49
  77. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/trips.js +0 -270
  78. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/utils.js +0 -358
  79. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/worker.js +0 -14
  80. package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/xpert.js +0 -58
  81. package/.claude/worktrees/eager-stonebraker-c08ac7/src/word/index.js +0 -95
  82. package/.claude/worktrees/eager-stonebraker-c08ac7/src/zone-report.js +0 -904
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetmap-reports",
3
- "version": "2.0.358",
3
+ "version": "2.0.360",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -2,7 +2,7 @@ const traccarHelper = require('../util/traccar')
2
2
  const { getDriverData, devicesByDriver } = require('../util/driver')
3
3
  const { getCanDriverStyleMessages, parseCanDriverStyleMessage } = require('../util/xpert')
4
4
  const { calculateRPMSections } = require('./performance-report')
5
- const { getTranslations, isClientSide, convertToLocaleString, convertMS } = require('../util/utils')
5
+ const { getTranslations, isClientSide, convertToLocaleString, convertMS, executeServerSide } = require('../util/utils')
6
6
  const jsPDF = require('jspdf')
7
7
  const { headerFromUser, addTable } = require('../util/pdfDocument')
8
8
  const { getStyle } = require('../reportStyle')
@@ -65,9 +65,28 @@ async function create (from, to, userData, traccar) {
65
65
  userData.geofences = []
66
66
  userData.roadSpeedLimits = true
67
67
 
68
- const { devices, drivers } = await devicesByDriver(traccar, from, to, userData.drivers, userData.devices)
69
- userData.drivers = drivers
68
+ if (!userData.requestToRunServerSide) {
69
+ const { devices, drivers } = await devicesByDriver(traccar, from, to, userData.drivers, userData.devices)
70
+ userData.devices = devices
71
+ userData.drivers = drivers
72
+ }
73
+
74
+ if (isClientSide() && (userData.drivers.length > 50 || ((new Date(to).getTime() - new Date(from).getTime()) > (1000 * 60 * 60 * 24 * 15)))) {
75
+ const sliced = automaticReports.sliceArray(userData.drivers, 5)
76
+ userData.requestToRunServerSide = true
77
+ userData.byDriver = true
78
+ const allDriversData = await executeServerSide('driverranking-report', sliced, from, to, userData, userData.drivers.length, traccar, 5)
70
79
 
80
+ allDriversData.sort((a, b) => b.overallScore - a.overallScore)
81
+ allDriversData.forEach((d, index) => { d.rank = index + 1 })
82
+
83
+ reportData.drivers = allDriversData
84
+ reportData.target = buildTargets(userData)
85
+ reportData.coefficient = buildCoefficients()
86
+ return reportData
87
+ }
88
+
89
+ const devices = userData.devices
71
90
  let deviceCount = 0
72
91
  const driversData = new Map()
73
92
  const overspeedEvents = await getOverspeedEvents(from, to, userData, devices, userData, traccar)
@@ -133,8 +152,14 @@ async function create (from, to, userData, traccar) {
133
152
  allDriversData.forEach((d, index) => { d.rank = index + 1 })
134
153
 
135
154
  reportData.drivers.push(...allDriversData)
155
+ reportData.target = buildTargets(userData)
156
+ reportData.coefficient = buildCoefficients()
136
157
 
137
- reportData.target = {
158
+ return reportData
159
+ }
160
+
161
+ function buildTargets (userData) {
162
+ return {
138
163
  distanceTarget: userData.distanceTarget,
139
164
  rpmTarget: userData.rpmTarget,
140
165
  hardBrakingTarget: userData.hardBrakingTarget,
@@ -147,8 +172,10 @@ async function create (from, to, userData, traccar) {
147
172
  reverseTarget: userData.reverseTarget,
148
173
  otherTarget: userData.otherTarget
149
174
  }
175
+ }
150
176
 
151
- reportData.coefficient = {
177
+ function buildCoefficients () {
178
+ return {
152
179
  distanceCoefficient,
153
180
  rpmCoefficient,
154
181
  hardBrakingCoefficient,
@@ -161,8 +188,6 @@ async function create (from, to, userData, traccar) {
161
188
  reverseCoefficient,
162
189
  otherCoefficient
163
190
  }
164
-
165
- return reportData
166
191
  }
167
192
 
168
193
  async function processDevice (driversData, device, userData, allInOne, alarmEvents, overspeedEvents) {
@@ -423,6 +448,13 @@ async function exportToPDF (userData, reportData) {
423
448
  }
424
449
  }
425
450
 
451
+ // Entry point for the generic server-side report dispatcher (see executeServerSide / pinme-backend-v2's getReport),
452
+ // which requires a "create" + PascalCase(report name) export returning an array.
453
+ async function createDriverrankingReport (from, to, userData, traccar) {
454
+ return [await create(from, to, userData, traccar)]
455
+ }
456
+
426
457
  exports.create = create
458
+ exports.createDriverrankingReport = createDriverrankingReport
427
459
  exports.exportToPDF = exportToPDF
428
460
  exports.exportToExcel = exportToExcel
package/src/util/utils.js CHANGED
@@ -285,6 +285,9 @@ async function executeServerSide (type, sliced, from, to, userData, totalItems,
285
285
  } catch (e) {
286
286
  console.error(e)
287
287
  }
288
+ if (items[0] && items[0].name) {
289
+ console.log('LOADING_MESSAGE:' + items[0].name)
290
+ }
288
291
  console.log(`PROGRESS_PERC:${itemsCount / totalItems * 100}`)
289
292
  }))
290
293
  }
@@ -1,15 +0,0 @@
1
- module.exports = {
2
- env: {
3
- browser: true,
4
- commonjs: true,
5
- es2021: true
6
- },
7
- extends: [
8
- 'standard'
9
- ],
10
- parserOptions: {
11
- ecmaVersion: 'latest'
12
- },
13
- rules: {
14
- }
15
- }
@@ -1,309 +0,0 @@
1
- module.exports = {
2
- route: {
3
- map: 'Map',
4
- dashboard: 'Dashboard',
5
- reports: 'Reports',
6
- report: 'Report',
7
- report_trip_title: 'Trip Report',
8
- report_location_title: 'Location Report',
9
- report_zone_crossing: 'Zone Report',
10
- report_speeding: 'Relatório de Excessos de Velocidade',
11
- report_speeding_beta: 'Relatório de Excessos de Velocidade BETA',
12
- report_tolls: 'Relatório de Portagens',
13
- settings: 'Settings',
14
- duration: 'Duration'
15
- },
16
- map: {
17
- geofence_create_title: 'New geofence',
18
- geofence_create_name: 'Please enter the name of this geofence...',
19
- geofence_created: 'Geofence created sucessfully!',
20
- geofence_create_canceled: 'Input canceled',
21
- poi_create_title: 'New POI',
22
- poi_create_name: 'Please enter the name of this POI...',
23
- poi_created: 'POI created sucessfully!',
24
- poi_create_canceled: 'Input canceled',
25
- create_confirm: 'OK',
26
- create_cancel: 'Cancel',
27
- loading: 'Loading',
28
- totalDistance: 'Distância total'
29
- },
30
- vehicleList: {
31
- title: 'Vehicle',
32
- search: 'Search...',
33
- column_name: 'Name',
34
- column_speed: 'Km/h',
35
- column_lastUpdate: 'Last update'
36
- },
37
- vehicleTable: {
38
- immobilize: 'Immobilize',
39
- de_immobilize: 'De-Immobilize',
40
- send_immobilization: 'Send immobilization command?',
41
- send_de_immobilization: 'Send de-immobilization command?',
42
- all_vehicles: 'All',
43
- moving_vehicles: 'Moving',
44
- idle_vehicles: 'Idle',
45
- stopped_vehicles: 'Stopped',
46
- disconnected_vehicles: 'Disconnected'
47
- },
48
- vehicleDetail: {
49
- show_route: 'Show route'
50
- },
51
- poiTable: {
52
- showPOIs: 'Show POIs',
53
- edit_poi: 'Edit',
54
- delete_poi: 'Delete'
55
- },
56
- dashboard: {
57
- startdate: 'Start date',
58
- enddate: 'End Date',
59
- period_lastweek: 'Last week',
60
- period_lastmonth: 'Last month',
61
- period_last3month: 'Last 3 months'
62
- },
63
- navbar: {
64
- profile: 'Profile',
65
- notifications: 'Notifications',
66
- settings: 'Settings',
67
- logout: 'Log Out'
68
- },
69
- login: {
70
- login_user: 'Email',
71
- login_password: 'Password',
72
- login_button: 'Login',
73
- login_password_warn: 'The password can not be less than 6 digits'
74
- },
75
- profile: {
76
- user_account: 'Account',
77
- user_name: 'Name',
78
- user_email: 'E-mail',
79
- user_password: 'Password',
80
- user_phone: 'Phone',
81
- user_language: 'Language',
82
- user_timezone: 'Timezone',
83
- user_update_button: 'Update',
84
- user_updated: 'User information has been updated successfully.',
85
- user_name_required: 'Name field is required',
86
- user_email_required: 'Please input a valid email',
87
- user_password_lengh: 'The password can not be less than 6 digits'
88
- },
89
- settings: {
90
- map: 'Map',
91
- vehicles: 'Vehicles',
92
- title: 'Settings',
93
- route_match: 'Route match',
94
- alerts: 'Alerts',
95
- alerts_type: 'Type',
96
- alerts_notificators: 'Notificators',
97
- alert_ignitionOff: 'Ignition Off',
98
- alert_ignitionOn: 'Ignition On',
99
- alert_geofenceEnter: 'Geofence Enter',
100
- alert_geofenceExit: 'Geofence Exit',
101
- alert_deviceOverspeed: 'Device Overspeed',
102
- alert_deleted: 'Alert has been deleted',
103
- alert_delete_info: 'Do you want to delete the alert ',
104
- alert_delete_title: 'Delete Alert',
105
- alert_edit_confirm: 'Confirm',
106
- alert_edit_cancel: 'Cancel',
107
- alert_created: 'Alert created sucessfully!',
108
- alert_updated: 'Alert updated sucessfully!',
109
- alert_add: 'Add Alert',
110
- alert_edit: 'Edit Alert',
111
- alert_delete: 'Delete Alert',
112
- alert_overspeed_warning: 'Vehicle without defined top speed',
113
- alert_geofences_warning: 'Vehicle without associated geofences',
114
- alert_associate_geofences: 'Associate Geofences',
115
- alert_form_type: 'Type:',
116
- alert_form_type_placeholder: 'Select alert type',
117
- alert_form_vehicles: 'Vehicles:',
118
- alert_form_geofences: 'Geofences:',
119
- alert_form_all_vehicles: 'All vehicles',
120
- alert_form_vehicles_placeholder: 'Select vehicles',
121
- alert_form_notificator_web: 'Web',
122
- alert_form_notificator_email: 'E-mail',
123
- alert_form_notificator_sms: 'SMS',
124
- alert_form_confirm: 'Save',
125
- alert_form_cancel: 'Cancel',
126
- alert_form_geofences_placeholder: 'Select geofences',
127
- vehicle_edit: 'Edit Vehicle',
128
- vehicle_name: 'Name',
129
- vehicle_licenseplate: 'License Plate',
130
- vehicle_model: 'Model',
131
- vehicle_speed_limit: 'Speed Limit',
132
- vehicle_form_cancel: 'Cancel',
133
- vehicle_form_confirm: 'Save',
134
- vehicle_form_name: 'Name',
135
- vehicle_form_model: 'Model',
136
- vehicle_form_speed_limit: 'Speed Limit (Km/h)',
137
- vehicle_updated: 'Vehicle updated sucessfully!'
138
- },
139
- geofence: {
140
- showGeofences: 'Show Geofences',
141
- geofence_name: 'Name',
142
- geofence_edit: 'Edit',
143
- geofence_delete: 'Delete',
144
- geofence_deleted: 'Geofence has been deleted',
145
- geofence_delete_info: 'Do you want to delete geofence ',
146
- geofence_delete_title: 'Delete Geofence',
147
- geofence_edit_title: 'Edit Geofence',
148
- geofence_edit_name: 'Please enter the name of this geofence...',
149
- geofence_edit_confirm: 'Confirm',
150
- geofence_edit_cancel: 'Cancel',
151
- geofence_edit_canceled: 'Edit canceled',
152
- geofence_edited: 'Geofence edited sucessfully!',
153
- poi_delete_info: 'Do you want to delete POI ',
154
- poi_delete_title: 'Delete POI',
155
- poi_edited: 'POI edited sucessfully!',
156
- poi_deleted: 'POI has been deleted',
157
- poi_edit_title: 'Edit POI',
158
- poi_edit_name: 'Please enter the name of this POI...',
159
- searchGeofence: 'Search geofence',
160
- edit_geofence: 'Edit',
161
- delete_geofence: 'Delete'
162
- },
163
- report: {
164
- alarm: 'Alarm',
165
- distanceIn: 'Kms inside',
166
- distanceOut: 'Kms outside',
167
- closed: 'Door Closed',
168
- opened: 'Door Opened',
169
- sun: 'Sun',
170
- rain: 'Rain',
171
- temperature: 'Temperatura',
172
- select_vehicles: 'Select vehicles',
173
- select_vehicles_placeholder: 'Vehicles',
174
- select_geofences: 'Select geofences',
175
- select_geofences_placeholder: 'Geofences',
176
- select_period: 'Select period',
177
- period: 'Period',
178
- date_start: 'Start date',
179
- date_end: 'End date',
180
- generate_report: 'Generate report',
181
- validate_period: 'Por favor seleccione o período',
182
- user: 'User',
183
- titleTripReport: 'Trip Report',
184
- titleLocationReport: 'Locations Report',
185
- titleSpeedingReport: 'Overspeed Report',
186
- titleZoneReport: 'Zone Report',
187
- titleRefuelingReport: 'Refueling Report',
188
- titleFuelConsumptionReport: 'Fuel Consumption Report',
189
- titleFuelDropReport: 'Fuel Drop Report',
190
- titleEventsReport: 'Events Report',
191
- titleActivityReport: 'Activity Report',
192
- titleKmsReport: 'Kms Report',
193
- titleIdleReport: 'Idle Report',
194
- titleMachinesReport: 'Machines Report',
195
- titleStopReport: 'Stop Report',
196
- titleSensorReport: 'Sensor Report',
197
- from: 'From',
198
- to: 'to',
199
- headerStartAddress: 'Start address',
200
- headerDistance: 'Distance',
201
- headerDrivingTime: 'Driving Time',
202
- headerMaxSpeed: 'Max Speed',
203
- date: 'Date',
204
- start: 'Start',
205
- end: 'End',
206
- stopped: 'Stopped',
207
- yes: 'Yes',
208
- no: 'No',
209
- endAddress: 'Destination',
210
- tripTime: 'Duration',
211
- idleTime: 'Idle',
212
- stopTime: 'Stop',
213
- distance: 'Distance',
214
- speed: 'Speed',
215
- roadSpeedLimit: 'Road Speed Limit',
216
- overspeed: 'Alert On',
217
- avgSpeed: 'Avg Speed',
218
- maxSpeed: 'Max Speed',
219
- driver: 'Driver',
220
- group: 'Group',
221
- address: 'Address',
222
- ignition: 'Ignition',
223
- ignitionOn: 'On',
224
- ignitionOff: 'Off',
225
- enter: 'Enter',
226
- exit: 'Exit',
227
- geofence: 'Geofence',
228
- duration: 'Duration',
229
- vehicles: 'Vehicles',
230
- vehicle: 'Vehicle',
231
- licensePlate: 'License Plate',
232
- consumption: 'Consumption (L)',
233
- avg_consumption: 'Avg. Consumption (L/100)',
234
- avg_consumption_by_liters: 'Avg. Consumption (Kms/L)',
235
- odometer: 'Odometer',
236
- startOdometer: 'Start (Km)',
237
- endOdometer: 'End (Km)',
238
- spentFuel: 'Spent Fuel',
239
- engineHours: 'Use (H:m)',
240
- totalEngineHours: 'Total Use (H:m)',
241
- driverHours: 'Driving Time (H:m)',
242
- refueling: 'Refueling',
243
- fueldrop: 'Fuel Drop (L)',
244
- totalRefueled: 'Total Refueled',
245
- totalFuelDrops: 'Total Fuel Drops',
246
- totalFuelDropLiters: 'Total Fuel Lost',
247
- speedLimit: 'Speed Limit',
248
- eventType: 'Event',
249
- info: 'Information',
250
- event_ignitionOff: 'Ignition Off',
251
- event_ignitionOn: 'Ignition On',
252
- event_deviceOverspeed: 'Device Overspeed',
253
- event_geofenceEnter: 'Geofence Enter',
254
- event_geofenceExit: 'Geofence Exit',
255
- event_deviceFuelDrop: 'Fuel Drop',
256
- event_driverChanged: 'Driver Changed',
257
- event_sos: 'SOS',
258
- event_powerOn: 'Power TakeOff',
259
- event_powerCute: 'Power Cut',
260
- monday: 'Monday',
261
- tuesday: 'Tuesday',
262
- wednesday: 'Wednesday',
263
- thursday: 'Thursday',
264
- friday: 'Friday',
265
- saturday: 'Saturday',
266
- sunday: 'Sunday',
267
- weekDay: 'Week Day',
268
- unsubscribeTripReport: 'If you no longer wish to receive these emails, please go to %url% and remove the option "Trip report" in the settings in the "Reports" section.',
269
- unsubscribeLocationsReport: 'If you no longer wish to receive these emails, please go to %url% and remove the option "Locations report" in the settings in the "Reports" section.',
270
- unsubscribeSpeedingReport: 'If you no longer wish to receive these emails, please go to %url% and remove the option "Overspeed report" in the settings in the "Reports" section.',
271
- unsubscribeZoneReport: 'If you no longer wish to receive these emails, please go to %url% and remove the option "Zone report" in the settings in the "Reports" section.',
272
- unsubscribeRefuelingReport: 'If you no longer wish to receive these emails, please go to %url% and remove the option "Refueling report" in the settings in the "Reports" section.',
273
- unsubscribeFuelDropReport: 'If you no longer wish to receive these emails, please go to %url% and remove the option "Fuel drop report" in the settings in the "Reports" section.',
274
- minimumMinutes: 'Minimum time',
275
- maximumSpeed: 'Maximum speed',
276
- minutes: 'Minutes',
277
- zone: 'Zone',
278
- firstIn: 'First In',
279
- lastOut: 'Last Out',
280
- timeIn: 'Time In',
281
- timeOut: 'Time Out',
282
- maxTemp: 'Max Temp',
283
- minTemp: 'Min Temp',
284
- avgTemp: 'Avg Temp',
285
- total: 'Total'
286
- },
287
- layout: {
288
- deviceOnline: 'Device Online',
289
- deviceMoving: 'Device Moving',
290
- deviceStopped: 'Device Stopped',
291
- ignitionOff: 'Ignition Off',
292
- ignitionOn: 'Ignition On',
293
- deviceOverspeed: 'Device Overspeed',
294
- geofenceEnter: 'Geofence Enter',
295
- geofenceExit: 'Geofence Exit',
296
- deviceFuelDrop: 'Fuel Drop',
297
- driverChanged: 'Driver Changed',
298
- test: 'Test Notification',
299
- sos: 'Panic',
300
- powerOn: 'Power Take-Off',
301
- device: 'Device',
302
- time: 'Time',
303
- address: 'Address',
304
- driver: 'Driver',
305
- group: 'Group',
306
- in: 'in',
307
- fuelDropInfo: 'Fuel drop greater than '
308
- }
309
- }