fleetmap-reports 1.0.951 → 1.0.953
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
CHANGED
package/src/activity-report.js
CHANGED
|
@@ -17,6 +17,7 @@ const { devicesToProcess } = require('./util/device')
|
|
|
17
17
|
const { getDriverData } = require('./util/driver')
|
|
18
18
|
const { calculateConsumption } = require('./util/fuel')
|
|
19
19
|
const axios = require('axios')
|
|
20
|
+
const { getSummaryByDay } = require('./util/traccar')
|
|
20
21
|
|
|
21
22
|
const fileName = 'ActivityReport'
|
|
22
23
|
|
|
@@ -101,6 +102,12 @@ async function createActivityReportByDevice (from, to, userData, traccarInstance
|
|
|
101
102
|
const sliced = automaticReports.sliceArray(allDevices, 10)
|
|
102
103
|
await executeServerSide(allData, sliced, from, to, userData, allDevices.length)
|
|
103
104
|
} else {
|
|
105
|
+
let summaryByDay = []
|
|
106
|
+
if (userData.allWeek && userData.groupByDay) {
|
|
107
|
+
const dates = getDates(from, to, userData.user.attributes.timezone || getUserPartner(userData.user).timezone)
|
|
108
|
+
summaryByDay = await getSummaryByDay(dates, userData, traccarInstance, allDevices, true)
|
|
109
|
+
}
|
|
110
|
+
|
|
104
111
|
let deviceCount = 0
|
|
105
112
|
const sliced = automaticReports.sliceArray(allDevices, 20)
|
|
106
113
|
for (const devices of sliced) {
|
|
@@ -113,7 +120,7 @@ async function createActivityReportByDevice (from, to, userData, traccarInstance
|
|
|
113
120
|
|
|
114
121
|
// Process report data
|
|
115
122
|
if (summary.length || trips.length) {
|
|
116
|
-
allData.devices = allData.devices.concat(await processDevices(from, to, devices, { summary, trips, route }, userData, traccarInstance))
|
|
123
|
+
allData.devices = allData.devices.concat(await processDevices(from, to, devices, { summaryByDay, summary, trips, route }, userData, traccarInstance))
|
|
117
124
|
}
|
|
118
125
|
deviceCount += devices.length
|
|
119
126
|
}
|
|
@@ -201,9 +208,12 @@ async function processDevices (from, to, devices, data, userData, traccarInstanc
|
|
|
201
208
|
})
|
|
202
209
|
}
|
|
203
210
|
} else {
|
|
211
|
+
const summaryByDay = data.summaryByDay.find(a => a.date.getTime() === date.getTime())
|
|
212
|
+
const summaryByDevice = summaryByDay.summary.find(a => a.deviceId === d.id)
|
|
213
|
+
|
|
204
214
|
const summaryCurrentDay = { date, deviceId: d.id }
|
|
205
215
|
summaryCurrentDay.engineHours = tripsByDay.reduce((a, b) => a + b.duration, 0)
|
|
206
|
-
summaryCurrentDay.distance = distance
|
|
216
|
+
summaryCurrentDay.distance = summaryByDevice.distance
|
|
207
217
|
summaryCurrentDay.averageSpeed = distance > 0 ? ((tripsByDay.reduce((a, b) => a + (b.averageSpeed * b.distance), 0)) / distance) : 0
|
|
208
218
|
summaryCurrentDay.maxSpeed = tripsByDay.reduce((a, b) => { return a > b.maxSpeed ? a : b.maxSpeed }, 0)
|
|
209
219
|
summaryCurrentDay.convertedSpentFuel = calculateConsumption(d, { route: routeByDay })
|
|
@@ -211,8 +221,8 @@ async function processDevices (from, to, devices, data, userData, traccarInstanc
|
|
|
211
221
|
summaryCurrentDay.startAddress = tripsByDay.length && tripsByDay[0].startAddress
|
|
212
222
|
summaryCurrentDay.endTime = tripsByDay.length && tripsByDay[tripsByDay.length - 1].endTime
|
|
213
223
|
summaryCurrentDay.endAddress = tripsByDay.length && tripsByDay[tripsByDay.length - 1].endAddress
|
|
214
|
-
summaryCurrentDay.startOdometer =
|
|
215
|
-
summaryCurrentDay.endOdometer =
|
|
224
|
+
summaryCurrentDay.startOdometer = summaryByDevice.startOdometer
|
|
225
|
+
summaryCurrentDay.endOdometer = summaryByDevice.endOdometer
|
|
216
226
|
summaryCurrentDay.startTimeIsOut = tripsByDay.some(t => t.startTimeIsOut)
|
|
217
227
|
summaryCurrentDay.endTimeIsOut = tripsByDay.some(t => t.endTimeIsOut)
|
|
218
228
|
summary.push(summaryCurrentDay)
|
|
@@ -2,11 +2,7 @@ const automaticReports = require('../automaticReports')
|
|
|
2
2
|
const traccarHelper = require('../util/traccar')
|
|
3
3
|
const { getUncompletedTrip } = require('../util/trips')
|
|
4
4
|
const { getEndTripMessages, getCanDriverStyleMessages, parseEndTripMessage, parseCanDriverStyleMessage } = require('../util/xpert')
|
|
5
|
-
const { calculateDistance
|
|
6
|
-
const { addTable } = require('../util/pdfDocument')
|
|
7
|
-
const jsPDF = require('jspdf')
|
|
8
|
-
const { getStyle } = require('../reportStyle')
|
|
9
|
-
const { getUserPartner } = require('fleetmap-partners')
|
|
5
|
+
const { calculateDistance } = require('../util/utils')
|
|
10
6
|
|
|
11
7
|
async function createPerformanceReport (from, to, userData, traccar) {
|
|
12
8
|
const reportData = []
|
|
@@ -218,48 +214,4 @@ function calculateRPMSections (route, min, max) {
|
|
|
218
214
|
return sections
|
|
219
215
|
}
|
|
220
216
|
|
|
221
|
-
function exportPerformanceReportToPDF (userData, reportData) {
|
|
222
|
-
const timezone = userData.user.attributes.timezone
|
|
223
|
-
const translations = getTranslations(userData)
|
|
224
|
-
const lang = getLanguage(userData)
|
|
225
|
-
|
|
226
|
-
const headers = [
|
|
227
|
-
translations.report.vehicle,
|
|
228
|
-
'Totale Utilisation',
|
|
229
|
-
'Conduite',
|
|
230
|
-
'Ralenti',
|
|
231
|
-
'Totale (L)',
|
|
232
|
-
'Conduite (L)',
|
|
233
|
-
'Ralenti (L)',
|
|
234
|
-
'Conduite (Km)',
|
|
235
|
-
'Économique',
|
|
236
|
-
'Économique (L)',
|
|
237
|
-
'Économique (Km)',
|
|
238
|
-
'Cruise Control',
|
|
239
|
-
'Cruise Control (L)',
|
|
240
|
-
'Cruise Control (Km)',
|
|
241
|
-
'Tour moteur élevé',
|
|
242
|
-
'Accéleration brusque (Sum)',
|
|
243
|
-
'Freinage brusque (Sum)',
|
|
244
|
-
'Virages brusque'
|
|
245
|
-
]
|
|
246
|
-
|
|
247
|
-
const data = []
|
|
248
|
-
reportData.devices.forEach(d => {
|
|
249
|
-
|
|
250
|
-
})
|
|
251
|
-
|
|
252
|
-
const doc = new jsPDF.jsPDF('l')
|
|
253
|
-
const style = getStyle(getUserPartner(userData.user))
|
|
254
|
-
|
|
255
|
-
addTable(doc, headers, data, footValues, style)
|
|
256
|
-
return doc
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
function exportPerformanceReportToExcel (userData, reportData) {
|
|
260
|
-
|
|
261
|
-
}
|
|
262
|
-
|
|
263
217
|
exports.createPerformanceReport = createPerformanceReport
|
|
264
|
-
exports.exportPerformanceReportToPDF = exportPerformanceReportToPDF
|
|
265
|
-
exports.exportPerformanceReportToExcel = exportPerformanceReportToExcel
|
package/src/tests/zones.test.js
CHANGED
|
@@ -45,19 +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()
|
|
49
49
|
const userData = await report.getUserData()
|
|
50
50
|
userData.zonesByColumn = true
|
|
51
|
-
userData.devices = userData.devices.filter(d => d.id ===
|
|
51
|
+
userData.devices = userData.devices.filter(d => d.id === 81201)
|
|
52
52
|
userData.geofences = userData.geofences.filter(g => g.name === 'baliza 1 - raio verde ' ||
|
|
53
53
|
g.name === 'baliza 2 - raio amarelo')
|
|
54
54
|
userData.onlyWithKmsOut = false
|
|
55
55
|
const result = await report.zoneReport(
|
|
56
|
-
new Date(Date.UTC(2023,
|
|
57
|
-
new Date(Date.UTC(2023,
|
|
56
|
+
new Date(Date.UTC(2023, 7, 17, 0, 0, 0, 0)),
|
|
57
|
+
new Date(Date.UTC(2023, 7, 20, 23, 59, 59, 0)),
|
|
58
58
|
userData)
|
|
59
59
|
const first = result[0].devices[0]
|
|
60
60
|
console.log(first)
|
|
61
|
-
assert.equal(first.days[0].distanceOut,
|
|
61
|
+
assert.equal(first.days[0].distanceOut, 0)
|
|
62
62
|
}, 4000000)
|
|
63
63
|
})
|
package/src/util/traccar.js
CHANGED
|
@@ -129,7 +129,7 @@ async function getAllInOne (
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
async function getSummaryByDay (dates, userData, traccarInstance, allDevices) {
|
|
132
|
+
async function getSummaryByDay (dates, userData, traccarInstance, allDevices, ignorePercentage = false) {
|
|
133
133
|
const days = []
|
|
134
134
|
let counter = 0
|
|
135
135
|
for (const date of dates) {
|
|
@@ -143,7 +143,9 @@ async function getSummaryByDay (dates, userData, traccarInstance, allDevices) {
|
|
|
143
143
|
} = await getAllInOne(traccarInstance, startDate, endDate, allDevices, false, false, false, true, 0, allDevices.length, allDevices.length, allDevices.length, undefined, true)
|
|
144
144
|
|
|
145
145
|
counter = counter + 1
|
|
146
|
-
|
|
146
|
+
if (!ignorePercentage) {
|
|
147
|
+
console.log(`PROGRESS_PERC:${counter / dates.length * 100}`)
|
|
148
|
+
}
|
|
147
149
|
days.push({
|
|
148
150
|
date,
|
|
149
151
|
summary
|
package/src/zone-report.js
CHANGED
|
@@ -441,7 +441,7 @@ async function getInAndOutEvents (devices, route, userData) {
|
|
|
441
441
|
geofencesFeatures.forEach((g, id) => {
|
|
442
442
|
if (checkGeofenceIn(p, g)) {
|
|
443
443
|
p.inside[id] = true
|
|
444
|
-
events.push(createEvent('
|
|
444
|
+
events.push(createEvent('geofenceEnter', d.id, p, g))
|
|
445
445
|
}
|
|
446
446
|
})
|
|
447
447
|
return
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
const { getReports } = require('./index')
|
|
2
|
-
const assert = require('assert')
|
|
3
|
-
const { convertMS } = require('../util/utils')
|
|
4
|
-
const { createGPSJumpReport } = require('../partnerReports/gpsjump-report')
|
|
5
|
-
|
|
6
|
-
// eslint-disable-next-line no-undef
|
|
7
|
-
describe('gpsjump', function () {
|
|
8
|
-
// eslint-disable-next-line no-undef
|
|
9
|
-
it('gpsjump report', async () => {
|
|
10
|
-
const report = await getReports()
|
|
11
|
-
const userData = await report.getUserData()
|
|
12
|
-
userData.devices = userData.devices.filter(d => d.id === 22326)
|
|
13
|
-
const data = await createGPSJumpReport(
|
|
14
|
-
new Date(Date.UTC(2023, 6, 1, 0, 0, 0, 0)),
|
|
15
|
-
new Date(Date.UTC(2023, 6, 17, 23, 59, 59, 0)),
|
|
16
|
-
userData,
|
|
17
|
-
report.traccar)
|
|
18
|
-
console.log(data)
|
|
19
|
-
assert.equal(data[0].consumption, 19.799999999999997)
|
|
20
|
-
assert.equal(data[0].distance, 326.7657)
|
|
21
|
-
assert.equal(convertMS(data[1].time * 1000, false), '08:19')
|
|
22
|
-
}, 8000000)
|
|
23
|
-
})
|