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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetmap-reports",
3
- "version": "1.0.951",
3
+ "version": "1.0.953",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -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 = tripsByDay.length ? tripsByDay[0].startOdometer : 0
215
- summaryCurrentDay.endOdometer = tripsByDay.length ? tripsByDay[tripsByDay.length - 1].endOdometer : 0
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, 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')
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
@@ -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('fleetmap.joao.penas2@gmail.com', 'penas46881')
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 === 81202)
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, 6, 13, 0, 0, 0, 0)),
57
- new Date(Date.UTC(2023, 6, 13, 23, 59, 59, 0)),
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, 28)
61
+ assert.equal(first.days[0].distanceOut, 0)
62
62
  }, 4000000)
63
63
  })
@@ -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
- console.log(`PROGRESS_PERC:${counter / dates.length * 100}`)
146
+ if (!ignorePercentage) {
147
+ console.log(`PROGRESS_PERC:${counter / dates.length * 100}`)
148
+ }
147
149
  days.push({
148
150
  date,
149
151
  summary
@@ -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('geofenceIn', d.id, p, g))
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
- })