fleetmap-reports 1.0.912 → 1.0.916
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/tests/zones.test.js +9 -8
- package/src/zone-report.js +10 -4
package/package.json
CHANGED
package/src/tests/zones.test.js
CHANGED
|
@@ -45,18 +45,19 @@ describe('zones', function () {
|
|
|
45
45
|
|
|
46
46
|
// eslint-disable-next-line no-undef
|
|
47
47
|
it('works with casais zones in columns', async () => {
|
|
48
|
-
const report = await getReports(
|
|
48
|
+
const report = await getReports('fleetmap.joao.penas2@gmail.com', 'penas46881')
|
|
49
49
|
const userData = await report.getUserData()
|
|
50
50
|
userData.zonesByColumn = true
|
|
51
|
-
userData.devices = userData.devices.filter(d => d.
|
|
52
|
-
userData.geofences = userData.geofences.filter(g => g.name === 'baliza 1 - raio verde '
|
|
53
|
-
|
|
51
|
+
userData.devices = userData.devices.filter(d => d.id === 81202)
|
|
52
|
+
userData.geofences = userData.geofences.filter(g => g.name === 'baliza 1 - raio verde ' ||
|
|
53
|
+
g.name === 'baliza 2 - raio amarelo')
|
|
54
|
+
userData.onlyWithKmsOut = false
|
|
54
55
|
const result = await report.zoneReport(
|
|
55
|
-
new Date(Date.UTC(2023,
|
|
56
|
-
new Date(Date.UTC(2023,
|
|
56
|
+
new Date(Date.UTC(2023, 6, 13, 0, 0, 0, 0)),
|
|
57
|
+
new Date(Date.UTC(2023, 6, 13, 23, 59, 59, 0)),
|
|
57
58
|
userData)
|
|
58
|
-
const first = result[0].devices[0]
|
|
59
|
+
const first = result[0].devices[0]
|
|
59
60
|
console.log(first)
|
|
60
|
-
assert.equal(first.distanceOut,
|
|
61
|
+
assert.equal(first.days[0].distanceOut, 28)
|
|
61
62
|
}, 4000000)
|
|
62
63
|
})
|
package/src/zone-report.js
CHANGED
|
@@ -261,8 +261,13 @@ function getAnyNextIn (outDate, alerts, deviceRoute) {
|
|
|
261
261
|
const next = alerts
|
|
262
262
|
.filter(a => a.type === 'geofenceEnter')
|
|
263
263
|
.find(a => new Date(a.position.fixTime).getTime() > outDate)
|
|
264
|
-
|
|
265
|
-
|
|
264
|
+
|
|
265
|
+
if (!alerts.filter(a => a.type === 'geofenceExit' &&
|
|
266
|
+
new Date(a.position.fixTime).getTime() > outDate &&
|
|
267
|
+
new Date(a.position.fixTime).getTime() < new Date(next.position.fixTime).getTime()).length) {
|
|
268
|
+
return (next && next.position && new Date(next.position.fixTime).getTime()) ||
|
|
269
|
+
new Date(deviceRoute.slice(-1)[0].fixTime).getTime()
|
|
270
|
+
}
|
|
266
271
|
}
|
|
267
272
|
|
|
268
273
|
function calculateDistanceIn (zoneInOutDayData, deviceRoute, dayRoute, fromByDay, toByDay, to, device) {
|
|
@@ -289,8 +294,8 @@ function calculateDistanceIn (zoneInOutDayData, deviceRoute, dayRoute, fromByDay
|
|
|
289
294
|
|
|
290
295
|
function calculateDistanceOut (zoneInOutDayData, dayRoute, fromByDay, toByDay, field, device) {
|
|
291
296
|
if (zoneInOutDayData.length) {
|
|
292
|
-
|
|
293
|
-
|
|
297
|
+
const dataInsideDay = zoneInOutDayData.filter(z => z.outTime && new Date(z.outTime.fixTime) < toByDay)
|
|
298
|
+
let distanceOut = dataInsideDay.reduce((a, b) => a + (b[field] || 0), 0)
|
|
294
299
|
|
|
295
300
|
if (zoneInOutDayData[0].inTime && new Date(zoneInOutDayData[0].inTime.fixTime) > fromByDay) {
|
|
296
301
|
// Add distanceOut before the first entry
|
|
@@ -302,6 +307,7 @@ function calculateDistanceOut (zoneInOutDayData, dayRoute, fromByDay, toByDay, f
|
|
|
302
307
|
}
|
|
303
308
|
|
|
304
309
|
if (zoneInOutDayData[zoneInOutDayData.length - 1].outTime && new Date(zoneInOutDayData[zoneInOutDayData.length - 1].outTime.fixTime) < toByDay) {
|
|
310
|
+
distanceOut = distanceOut - zoneInOutDayData[zoneInOutDayData.length - 1][field]
|
|
305
311
|
const routeOut = dayRoute.filter(p =>
|
|
306
312
|
new Date(p.fixTime) >= new Date(zoneInOutDayData[zoneInOutDayData.length - 1].outTime.fixTime).getTime() &&
|
|
307
313
|
new Date(p.fixTime) < toByDay.getTime())
|