fleetmap-reports 1.0.937 → 1.0.939
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
|
@@ -12,7 +12,7 @@ const {
|
|
|
12
12
|
const { getStyle } = require('./reportStyle')
|
|
13
13
|
const { getUserPartner } = require('fleetmap-partners')
|
|
14
14
|
const traccar = require('./util/traccar')
|
|
15
|
-
const { isInsideTimetable, isPartialInsideTimetable, calculateTrip, getDataByDay } = require('./util/trips')
|
|
15
|
+
const { isInsideTimetable, isPartialInsideTimetable, calculateTrip, getDataByDay, getKms } = require('./util/trips')
|
|
16
16
|
const { devicesToProcess } = require('./util/device')
|
|
17
17
|
const { getDriverData } = require('./util/driver')
|
|
18
18
|
const { calculateConsumption } = require('./util/fuel')
|
|
@@ -178,8 +178,7 @@ async function processDevices (from, to, devices, data, userData, traccarInstanc
|
|
|
178
178
|
const dates = getDates(from, to, userData.user.attributes.timezone || getUserPartner(userData.user).timezone)
|
|
179
179
|
for (const date of dates) {
|
|
180
180
|
const { tripsByDay, routeByDay } = await getDataByDay(d, date, { trips, route: deviceRoute }, userData, traccarInstance)
|
|
181
|
-
|
|
182
|
-
const distance = tripsByDay.reduce((a, b) => a + b.distance, 0)
|
|
181
|
+
const distance = getKms(tripsByDay)
|
|
183
182
|
if (!userData.allWeek && userData.weekDays && userData.dayHours) {
|
|
184
183
|
if (weekDaySelected(date, userData.weekDays)) {
|
|
185
184
|
summary.push({
|
|
@@ -222,7 +221,7 @@ async function processDevices (from, to, devices, data, userData, traccarInstanc
|
|
|
222
221
|
} else {
|
|
223
222
|
if (!userData.allWeek && userData.weekDays && userData.dayHours) {
|
|
224
223
|
const trips = deviceTrips.filter(t => userData.allWeek || !userData.weekDays || isInsideTimetable(t, userData) || isPartialInsideTimetable(t, userData, deviceRoute))
|
|
225
|
-
const distance = trips
|
|
224
|
+
const distance = getKms(trips)
|
|
226
225
|
summary.push({
|
|
227
226
|
deviceId: d.id,
|
|
228
227
|
averageSpeed: distance > 0 ? ((trips.reduce((a, b) => a + (b.averageSpeed * b.distance), 0)) / distance) : 0,
|
|
@@ -244,7 +243,7 @@ async function processDevices (from, to, devices, data, userData, traccarInstanc
|
|
|
244
243
|
if (summary.length) {
|
|
245
244
|
summary.forEach(s => {
|
|
246
245
|
s.engineHours = deviceTrips.reduce((a, b) => a + b.duration, 0)
|
|
247
|
-
s.distance = deviceTrips
|
|
246
|
+
s.distance = getKms(deviceTrips)
|
|
248
247
|
s.convertedSpentFuel = calculateConsumption(d, { route: deviceRoute, summary: s })
|
|
249
248
|
s.startTime = deviceTrips.length && deviceTrips[0].startTime
|
|
250
249
|
s.startAddress = deviceTrips.length && deviceTrips[0].startAddress
|
package/src/kms-report.js
CHANGED
|
@@ -9,7 +9,7 @@ const { getUserPartner } = require('fleetmap-partners')
|
|
|
9
9
|
const traccar = require('./util/traccar')
|
|
10
10
|
const { getDates, getTranslations, isClientSide, executeServerSide } = require('./util/utils')
|
|
11
11
|
const drivers = require('./util/driver')
|
|
12
|
-
const { isInsideTimetable, isPartialInsideTimetable, calculateTrip, getDataByDay, checkTripsKms } = require('./util/trips')
|
|
12
|
+
const { isInsideTimetable, isPartialInsideTimetable, calculateTrip, getDataByDay, checkTripsKms, getKms } = require('./util/trips')
|
|
13
13
|
const traccarHelper = require('./util/traccar')
|
|
14
14
|
const { devicesToProcess } = require('./util/device')
|
|
15
15
|
const { getDriverData } = require('./util/driver')
|
|
@@ -178,10 +178,9 @@ async function processDevices (from, to, devices, data, userData, traccarInstanc
|
|
|
178
178
|
const dates = getDates(from, to, userData.user.attributes.timezone || getUserPartner(userData.user).timezone)
|
|
179
179
|
const days = await Promise.all(dates.map(async date => {
|
|
180
180
|
const { tripsByDay } = await getDataByDay(d, date, { trips }, userData, traccarInstance)
|
|
181
|
-
const odometerKms = tripsByDay.length > 0 ? tripsByDay[tripsByDay.length - 1].endOdometer - tripsByDay[0].startOdometer : 0
|
|
182
181
|
return {
|
|
183
182
|
date,
|
|
184
|
-
kms:
|
|
183
|
+
kms: getKms(tripsByDay)
|
|
185
184
|
}
|
|
186
185
|
}))
|
|
187
186
|
|
|
@@ -193,13 +192,12 @@ async function processDevices (from, to, devices, data, userData, traccarInstanc
|
|
|
193
192
|
})
|
|
194
193
|
}
|
|
195
194
|
} else {
|
|
196
|
-
const odometerKms = trips.length > 0 ? trips[trips.length - 1].endOdometer - trips[0].startOdometer : 0
|
|
197
195
|
devicesResult.push({
|
|
198
196
|
device: d,
|
|
199
197
|
summary: {
|
|
200
198
|
startOdometer: trips.length ? trips[0].startOdometer : 0,
|
|
201
199
|
endOdometer: trips.length ? trips[trips.length - 1].endOdometer : 0,
|
|
202
|
-
distance:
|
|
200
|
+
distance: getKms(trips)
|
|
203
201
|
}
|
|
204
202
|
})
|
|
205
203
|
}
|
|
@@ -2,7 +2,11 @@ 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 } = require('../util/utils')
|
|
5
|
+
const { calculateDistance, getTranslations, getLanguage } = require('../util/utils')
|
|
6
|
+
const { addTable } = require('../util/pdfDocument')
|
|
7
|
+
const jsPDF = require('jspdf')
|
|
8
|
+
const { getStyle } = require('../reportStyle')
|
|
9
|
+
const { getUserPartner } = require('fleetmap-partners')
|
|
6
10
|
|
|
7
11
|
async function createPerformanceReport (from, to, userData, traccar) {
|
|
8
12
|
const reportData = []
|
|
@@ -215,7 +219,41 @@ function calculateRPMSections (route, min, max) {
|
|
|
215
219
|
}
|
|
216
220
|
|
|
217
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 => {
|
|
218
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
|
|
219
257
|
}
|
|
220
258
|
|
|
221
259
|
function exportPerformanceReportToExcel (userData, reportData) {
|
package/src/util/trips.js
CHANGED
|
@@ -45,7 +45,7 @@ async function calculatePartialTrip (device, startDate, endDate, route, t, tracc
|
|
|
45
45
|
route = allInOneData.route
|
|
46
46
|
}
|
|
47
47
|
const routeInside = route.filter(p => new Date(p.fixTime).getTime() < new Date(endDate.toUTCString()).getTime() && new Date(p.fixTime).getTime() > new Date(t.startTime).getTime() && t.deviceId === p.deviceId)
|
|
48
|
-
updateTrip(t, routeInside)
|
|
48
|
+
updateTrip(device, t, routeInside)
|
|
49
49
|
t.endTime = endDate.toISOString().replace('Z', '+0000')
|
|
50
50
|
t.endTimeIsOut = true
|
|
51
51
|
isPartialInside = true
|
|
@@ -59,7 +59,7 @@ async function calculatePartialTrip (device, startDate, endDate, route, t, tracc
|
|
|
59
59
|
route = allInOneData.route
|
|
60
60
|
}
|
|
61
61
|
const routeInside = route.filter(p => new Date(p.fixTime).getTime() > startDate.getTime() && new Date(p.fixTime).getTime() < new Date(t.endTime).getTime() && t.deviceId === p.deviceId)
|
|
62
|
-
updateTrip(t, routeInside)
|
|
62
|
+
updateTrip(device, t, routeInside)
|
|
63
63
|
t.startTime = startDate.toISOString().replace('Z', '+0000')
|
|
64
64
|
t.startTimeIsOut = true
|
|
65
65
|
isPartialInside = true
|
|
@@ -73,7 +73,7 @@ async function calculatePartialTrip (device, startDate, endDate, route, t, tracc
|
|
|
73
73
|
route = allInOneData.route
|
|
74
74
|
}
|
|
75
75
|
const routeInside = route.filter(p => new Date(p.fixTime).getTime() > new Date(startDate.toUTCString()).getTime() && new Date(p.fixTime).getTime() < new Date(t.endTime).getTime() && t.deviceId === p.deviceId)
|
|
76
|
-
updateTrip(t, routeInside)
|
|
76
|
+
updateTrip(device, t, routeInside)
|
|
77
77
|
t.startTime = startDate.toISOString().replace('Z', '+0000')
|
|
78
78
|
t.startTimeIsOut = true
|
|
79
79
|
isPartialInside = true
|
|
@@ -87,7 +87,7 @@ async function calculatePartialTrip (device, startDate, endDate, route, t, tracc
|
|
|
87
87
|
route = allInOneData.route
|
|
88
88
|
}
|
|
89
89
|
const routeInside = route.filter(p => new Date(p.fixTime).getTime() < endDate.getTime() && new Date(p.fixTime).getTime() > new Date(t.startTime).getTime() && t.deviceId === p.deviceId)
|
|
90
|
-
updateTrip(t, routeInside)
|
|
90
|
+
updateTrip(device, t, routeInside)
|
|
91
91
|
t.endTime = endDate.toISOString().replace('Z', '+0000')
|
|
92
92
|
t.endTimeIsOut = true
|
|
93
93
|
isPartialInside = true
|
|
@@ -129,11 +129,16 @@ async function getDataByDay (device, date, data, userData, traccarInstance) {
|
|
|
129
129
|
return { tripsByDay, routeByDay }
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
+
function getKms (trips) {
|
|
133
|
+
const odometerKms = trips.length > 0 ? trips[trips.length - 1].endOdometer - trips[0].startOdometer : 0
|
|
134
|
+
return odometerKms > 0 ? odometerKms : trips.filter(t => t.distance > 0).reduce((a, b) => a + b.distance, 0)
|
|
135
|
+
}
|
|
136
|
+
|
|
132
137
|
function isInsideTimetable (t, userData) {
|
|
133
138
|
return isInside(t.startTime, t.endTime, userData)
|
|
134
139
|
}
|
|
135
140
|
|
|
136
|
-
function updateTrip (t, route) {
|
|
141
|
+
function updateTrip (device, t, route) {
|
|
137
142
|
if (!route[route.length - 1]) { return }
|
|
138
143
|
route = route.filter(p => p.attributes.ignition)
|
|
139
144
|
const distance = calculateDistance(route, false) * 1000
|
|
@@ -141,6 +146,8 @@ function updateTrip (t, route) {
|
|
|
141
146
|
t.duration = new Date(route[route.length - 1].fixTime).getTime() - new Date(route[0].fixTime).getTime()
|
|
142
147
|
t.maxSpeed = route.reduce((a, b) => Math.max(a, b.speed), 0)
|
|
143
148
|
t.averageSpeed = distance > 0 ? ((route.reduce((a, b) => a + b.speed, 0)) / route.length) : 0
|
|
149
|
+
t.startOdometer = !device.attributes['report.ignoreOdometer'] && route[0].attributes.odometer ? route[0].attributes.odometer : route[0].attributes.totalDistance
|
|
150
|
+
t.endOdometer = !device.attributes['report.ignoreOdometer'] && route[route.length - 1].attributes.odometer ? route[route.length - 1].attributes.odometer : route[route.length - 1].attributes.totalDistance
|
|
144
151
|
}
|
|
145
152
|
|
|
146
153
|
function getUncompletedTrip (device, deviceRoute, deviceTrips) {
|
|
@@ -199,6 +206,7 @@ exports.checkTripsKms = checkTripsKms
|
|
|
199
206
|
exports.isInsideTimetable = isInsideTimetable
|
|
200
207
|
exports.isPartialInsideTimetable = isPartialInsideTimetable
|
|
201
208
|
exports.getDataByDay = getDataByDay
|
|
209
|
+
exports.getKms = getKms
|
|
202
210
|
exports.calculatePartialTrip = calculatePartialTrip
|
|
203
211
|
exports.calculateTrip = calculateTrip
|
|
204
212
|
exports.getTripIdleTime = getTripIdleTime
|