fleetmap-reports 1.0.628 → 1.0.630
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.
- package/package.json +1 -1
- package/src/idle-report.js +33 -6
package/package.json
CHANGED
package/src/idle-report.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const jsPDF = require('jspdf')
|
|
2
2
|
const { headerFromUser, AmiriRegular } = require('./util/pdfDocument')
|
|
3
|
-
const { convertToLocaleString, convertMS, getTranslations, getLanguage } = require('./util/utils')
|
|
3
|
+
const { convertToLocaleString, convertMS, getTranslations, getLanguage, convertToLocaleDateString, convertToLocaleTimeString } = require('./util/utils')
|
|
4
4
|
const { getStyle } = require('./reportStyle')
|
|
5
5
|
const { getUserPartner } = require('fleetmap-partners')
|
|
6
6
|
const { devicesToProcess } = require('./util/device')
|
|
@@ -8,6 +8,7 @@ const automaticReports = require('./automaticReports')
|
|
|
8
8
|
const traccarHelper = require('./util/traccar')
|
|
9
9
|
const { getIdleEvents } = require('./util/route')
|
|
10
10
|
const { reportByDriver } = require('./util/driver')
|
|
11
|
+
const { getNearestPOIs, insideGeofence } = require('./util/geofence')
|
|
11
12
|
|
|
12
13
|
const fileName = 'IdleReport'
|
|
13
14
|
|
|
@@ -143,6 +144,8 @@ function processDrivers (from, to, userData, data) {
|
|
|
143
144
|
|
|
144
145
|
if (filteredEvents.length) {
|
|
145
146
|
filteredEvents.forEach(e => {
|
|
147
|
+
findGeofenceData(e, userData)
|
|
148
|
+
|
|
146
149
|
const device = userData.devices.find(d => d.id === e.position.deviceId)
|
|
147
150
|
e.deviceName = device ? device.name : ''
|
|
148
151
|
})
|
|
@@ -170,6 +173,8 @@ function processDevices (from, to, devices, routes, userData) {
|
|
|
170
173
|
|
|
171
174
|
if (filteredEvents.length) {
|
|
172
175
|
filteredEvents.forEach(e => {
|
|
176
|
+
findGeofenceData(e, userData)
|
|
177
|
+
|
|
173
178
|
const driver = userData.drivers.find(d => d.id === e.position.attributes.driverUniqueId)
|
|
174
179
|
e.driver = driver ? driver.name : ''
|
|
175
180
|
})
|
|
@@ -185,6 +190,20 @@ function processDevices (from, to, devices, routes, userData) {
|
|
|
185
190
|
return devicesResult
|
|
186
191
|
}
|
|
187
192
|
|
|
193
|
+
function findGeofenceData (event, userData) {
|
|
194
|
+
const nearestPOIs = getNearestPOIs(event.position.longitude, event.position.latitude, userData.geofences)
|
|
195
|
+
if (nearestPOIs.length > 0) {
|
|
196
|
+
event.endPOIName = nearestPOIs[0].p.name
|
|
197
|
+
} else {
|
|
198
|
+
const geofence = userData.geofences.filter(g => g && g.area.startsWith('POLYGON')).some(g =>
|
|
199
|
+
insideGeofence({ latitude: event.position.latitude, longitude: event.position.longitude }, g)
|
|
200
|
+
)
|
|
201
|
+
if (geofence) {
|
|
202
|
+
event.endPOIName = geofence.name
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
188
207
|
async function exportIdleReportToPDF (userData, reportData) {
|
|
189
208
|
console.log('Export to PDF')
|
|
190
209
|
|
|
@@ -195,6 +214,7 @@ async function exportIdleReportToPDF (userData, reportData) {
|
|
|
195
214
|
const idleData = userData.byDriver ? reportData.drivers : reportData.devices
|
|
196
215
|
|
|
197
216
|
const headers = [
|
|
217
|
+
translations.report.date,
|
|
198
218
|
translations.report.start,
|
|
199
219
|
translations.report.end,
|
|
200
220
|
translations.report.address,
|
|
@@ -236,7 +256,8 @@ async function exportIdleReportToPDF (userData, reportData) {
|
|
|
236
256
|
d.idleEvents.forEach(a => {
|
|
237
257
|
const temp = [
|
|
238
258
|
getIdleEventDate(a.position, userData.user),
|
|
239
|
-
|
|
259
|
+
getIdleEventTime(a.position, userData.user),
|
|
260
|
+
getIdleEventTime(a.lastPosition, userData.user),
|
|
240
261
|
a.position.address,
|
|
241
262
|
convertMS(a.idleTime, true),
|
|
242
263
|
userData.byDriver ? a.deviceName : getDriver(a, userData.drivers)
|
|
@@ -246,7 +267,7 @@ async function exportIdleReportToPDF (userData, reportData) {
|
|
|
246
267
|
|
|
247
268
|
const footValues = [
|
|
248
269
|
'Total:' + d.idleEvents.length,
|
|
249
|
-
'',
|
|
270
|
+
'', '', '',
|
|
250
271
|
convertMS(d.idleEvents.reduce((a, b) => a + b.idleTime, 0), true)
|
|
251
272
|
]
|
|
252
273
|
|
|
@@ -306,6 +327,7 @@ function exportIdleReportToExcel (userData, reportData) {
|
|
|
306
327
|
}
|
|
307
328
|
const headers = [
|
|
308
329
|
{ label: userData.byDriver ? translations.report.driver : translations.report.vehicle, value: 'name' },
|
|
330
|
+
{ label: translations.report.date, value: 'date' },
|
|
309
331
|
{ label: translations.report.start, value: 'start' },
|
|
310
332
|
{ label: translations.report.end, value: 'end' },
|
|
311
333
|
{ label: translations.report.address, value: 'address' },
|
|
@@ -321,8 +343,9 @@ function exportIdleReportToExcel (userData, reportData) {
|
|
|
321
343
|
return {
|
|
322
344
|
name: userData.byDriver ? d.driver.name : d.device.name,
|
|
323
345
|
duration: convertMS(a.idleTime, true),
|
|
324
|
-
|
|
325
|
-
|
|
346
|
+
date: getIdleEventDate(a.position, userData.user),
|
|
347
|
+
start: getIdleEventTime(a.position, userData.user),
|
|
348
|
+
end: getIdleEventTime(a.lastPosition, userData.user),
|
|
326
349
|
subname: userData.byDriver ? a.deviceName : getDriver(a, userData.drivers),
|
|
327
350
|
address: a.position.address + (a.geofenceName ? ' - ' + a.geofenceName : '')
|
|
328
351
|
}
|
|
@@ -348,7 +371,11 @@ function deviceName (device) {
|
|
|
348
371
|
}
|
|
349
372
|
|
|
350
373
|
function getIdleEventDate (position, user) {
|
|
351
|
-
return
|
|
374
|
+
return convertToLocaleDateString(position.fixTime, user.attributes.lang, user.attributes.timezone)
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
function getIdleEventTime (position, user) {
|
|
378
|
+
return convertToLocaleTimeString(position.fixTime, user.attributes.lang, user.attributes.timezone)
|
|
352
379
|
}
|
|
353
380
|
|
|
354
381
|
exports.createIdleReport = createIdleReport
|