fleetmap-reports 2.0.21 → 2.0.23
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/kms-report.js +69 -52
- package/src/speeding-report.js +2 -2
- package/src/tests/index.js +3 -1
- package/src/tests/speeding.test.js +3 -2
package/package.json
CHANGED
package/src/kms-report.js
CHANGED
|
@@ -403,27 +403,46 @@ function getExcelTableColumns (userData, info, translations) {
|
|
|
403
403
|
if (userData.groupByDay) {
|
|
404
404
|
const partner = getUserPartner(userData.user)
|
|
405
405
|
if (partner.reports.kmsReportDaysInColumns) {
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
406
|
+
if (userData.byDriver) {
|
|
407
|
+
columns.push(
|
|
408
|
+
{ label: translations.report.vehicle, value: 'name' },
|
|
409
|
+
{ label: translations.report.group, value: 'group' })
|
|
410
|
+
} else {
|
|
411
|
+
columns.push(
|
|
412
|
+
{ label: translations.report.vehicle, value: 'name' },
|
|
413
|
+
{ label: translations.settings.vehicle_licenseplate, value: 'licenseplate' },
|
|
414
|
+
{ label: translations.report.group, value: 'group' },
|
|
415
|
+
{ label: translations.report.startOdometer, value: 'startOdometer' })
|
|
416
|
+
}
|
|
411
417
|
|
|
412
418
|
const days = info[0].days
|
|
413
419
|
days.forEach((day, index) => {
|
|
414
420
|
columns.push({ label: new Date(day.date).toLocaleDateString(), value: 'day' + index })
|
|
415
421
|
})
|
|
416
422
|
|
|
417
|
-
|
|
418
|
-
{ label: translations.report.
|
|
423
|
+
if (userData.byDriver) {
|
|
424
|
+
columns.push({ label: translations.report.total, value: 'total' })
|
|
425
|
+
} else {
|
|
426
|
+
columns.push({ label: translations.report.total, value: 'total' },
|
|
427
|
+
{ label: translations.report.endOdometer, value: 'endOdometer' })
|
|
428
|
+
}
|
|
419
429
|
} else {
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
430
|
+
if (userData.byDriver) {
|
|
431
|
+
columns.push(
|
|
432
|
+
{ label: translations.report.vehicle, value: 'name' },
|
|
433
|
+
{ label: translations.report.group, value: 'group' },
|
|
434
|
+
{ label: translations.report.date, value: 'date' },
|
|
435
|
+
{ label: translations.report.weekDay, value: 'weekday' },
|
|
436
|
+
{ label: translations.report.distance, value: 'distance' })
|
|
437
|
+
} else {
|
|
438
|
+
columns.push(
|
|
439
|
+
{ label: translations.report.vehicle, value: 'name' },
|
|
440
|
+
{ label: translations.settings.vehicle_licenseplate, value: 'licenseplate' },
|
|
441
|
+
{ label: translations.report.group, value: 'group' },
|
|
442
|
+
{ label: translations.report.date, value: 'date' },
|
|
443
|
+
{ label: translations.report.weekDay, value: 'weekday' },
|
|
444
|
+
{ label: translations.report.distance, value: 'distance' })
|
|
445
|
+
}
|
|
427
446
|
}
|
|
428
447
|
} else if (userData.byDriver) {
|
|
429
448
|
columns.push(
|
|
@@ -456,48 +475,46 @@ function getExcelContent (userData, d, translations) {
|
|
|
456
475
|
? userData.groups.find(g => g.drivers && g.drivers.includes(d.driver.id))
|
|
457
476
|
: userData.groups.find(g => d.device.groupId === g.id)
|
|
458
477
|
|
|
459
|
-
if (
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
if (
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
}
|
|
478
|
+
if (userData.groupByDay) {
|
|
479
|
+
const partner = getUserPartner(userData.user)
|
|
480
|
+
if (d.days) {
|
|
481
|
+
if (partner.reports.kmsReportDaysInColumns) {
|
|
482
|
+
const vehicle = {
|
|
483
|
+
name: userData.byDriver ? d.driver.name : d.device.name,
|
|
484
|
+
group: group ? group.name : '',
|
|
485
|
+
licenseplate: userData.byDriver ? '' : d.device.attributes.license_plate,
|
|
486
|
+
startOdometer: userData.byDriver ? '' : Number((d.startOdometer / 1000).toFixed(1)),
|
|
487
|
+
endOdometer: userData.byDriver ? '' : Number((d.endOdometer / 1000).toFixed(1))
|
|
488
|
+
}
|
|
471
489
|
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
490
|
+
d.days.forEach((day, index) => {
|
|
491
|
+
vehicle['day' + index] = Number((day.kms / 1000).toFixed(0))
|
|
492
|
+
})
|
|
475
493
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
}
|
|
494
|
+
vehicle.total = Number(d.days.reduce((a, b) => a + (b.kms / 1000), 0).toFixed(0))
|
|
495
|
+
|
|
496
|
+
data.push(vehicle)
|
|
497
|
+
} else {
|
|
498
|
+
data.push({})
|
|
499
|
+
data.push(...(d.days.map(a => {
|
|
500
|
+
return {
|
|
501
|
+
name: userData.byDriver ? d.driver.name : d.device.name,
|
|
502
|
+
group: group ? group.name : '',
|
|
503
|
+
licenseplate: userData.byDriver ? '' : d.device.attributes.license_plate,
|
|
504
|
+
date: new Date(a.date).toLocaleDateString(),
|
|
505
|
+
weekday: weekDays[new Date(a.date).getDay()],
|
|
506
|
+
distance: Number((a.kms / 1000).toFixed(0))
|
|
507
|
+
}
|
|
508
|
+
})))
|
|
492
509
|
}
|
|
493
|
-
} else {
|
|
494
|
-
data.push({
|
|
495
|
-
name: userData.byDriver ? d.driver.name : d.device.name,
|
|
496
|
-
group: group ? group.name : '',
|
|
497
|
-
licenseplate: userData.byDriver ? '' : d.device.attributes.license_plate,
|
|
498
|
-
distance: Number((d.summary.distance / 1000).toFixed(0))
|
|
499
|
-
})
|
|
500
510
|
}
|
|
511
|
+
} else {
|
|
512
|
+
data.push({
|
|
513
|
+
name: userData.byDriver ? d.driver.name : d.device.name,
|
|
514
|
+
group: group ? group.name : '',
|
|
515
|
+
licenseplate: userData.byDriver ? '' : d.device.attributes.license_plate,
|
|
516
|
+
distance: Number((d.summary.distance / 1000).toFixed(0))
|
|
517
|
+
})
|
|
501
518
|
}
|
|
502
519
|
return data
|
|
503
520
|
}
|
package/src/speeding-report.js
CHANGED
|
@@ -314,7 +314,7 @@ async function getRoadSpeedLimits (devices, routes, threshold, minimumMinutes =
|
|
|
314
314
|
|
|
315
315
|
exports.getRoadSpeedLimits = getRoadSpeedLimits
|
|
316
316
|
|
|
317
|
-
async function invokeValhalla (route, i, chunk, country, threshold, results, retry =
|
|
317
|
+
async function invokeValhalla (route, i, chunk, country, threshold, results, retry = 10) {
|
|
318
318
|
const slice = route.slice(i, i + chunk)
|
|
319
319
|
const position = slice.find(p => getCountry(p))
|
|
320
320
|
let url
|
|
@@ -360,7 +360,7 @@ async function invokeValhalla (route, i, chunk, country, threshold, results, ret
|
|
|
360
360
|
})
|
|
361
361
|
} catch (e) {
|
|
362
362
|
if (--retry) {
|
|
363
|
-
console.
|
|
363
|
+
console.error(e.message, 'retry:', retry)
|
|
364
364
|
return invokeValhalla(route, i, chunk, country, threshold, results, retry)
|
|
365
365
|
} else {
|
|
366
366
|
console.error(e.message, (e.response && e.response.data) || url, 'deviceId',
|
package/src/tests/index.js
CHANGED
|
@@ -12,7 +12,9 @@ const axios = require('axios').create({ ...traccarConfig.baseOptions, baseURL: t
|
|
|
12
12
|
|
|
13
13
|
const getReports = async (email, password) => {
|
|
14
14
|
try {
|
|
15
|
-
|
|
15
|
+
email = email || process.env.email
|
|
16
|
+
password = password || process.env.password
|
|
17
|
+
console.log('email / pass', email, password)
|
|
16
18
|
const formData = `email=${encodeURIComponent(email)}&password=${encodeURIComponent(password)}`
|
|
17
19
|
const [cookie] = (await axios.post('/session', formData)).headers['set-cookie']
|
|
18
20
|
axios.defaults.headers.common.cookie = cookie
|
|
@@ -16,9 +16,10 @@ async function getSpeedingReport (report, userData) {
|
|
|
16
16
|
// eslint-disable-next-line no-undef
|
|
17
17
|
describe('speeding tests', function () {
|
|
18
18
|
// eslint-disable-next-line no-undef
|
|
19
|
-
it('works with road speed limits', async () => {
|
|
20
|
-
const report = await getReports()
|
|
19
|
+
it('works with road speed limits in Chile', async () => {
|
|
20
|
+
const report = await getReports(process.env.USER_CHILE, process.env.PASS_CHILE)
|
|
21
21
|
const userData = await report.getUserData()
|
|
22
|
+
userData.devices = [userData.devices[0]]
|
|
22
23
|
userData.roadSpeedLimits = true
|
|
23
24
|
const { device } = await getSpeedingReport(report, userData)
|
|
24
25
|
assert.equal(device.alerts.length, 6) // Total Alerts
|