fleetmap-reports 1.0.961 → 1.0.963

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.961",
3
+ "version": "1.0.963",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
package/src/util/trips.js CHANGED
@@ -131,7 +131,12 @@ async function getDataByDay (device, date, data, userData, traccarInstance) {
131
131
 
132
132
  const refuelingPositionsByDay = data.refuelingPositions ? data.refuelingPositions.filter(p => (new Date(p.date) > startDate && new Date(p.date) < endDate)) : []
133
133
 
134
- return { tripsByDay, routeByDay, refuelingPositionsByDay }
134
+ const zoneInOutDayData = data.zoneInOutData
135
+ ? data.zoneInOutData.filter(z => (!z.inTime || (new Date(z.inTime.fixTime) < endDate)) &&
136
+ (!z.outTime || (new Date(z.outTime.fixTime) > startDate)))
137
+ : []
138
+
139
+ return { tripsByDay, routeByDay, refuelingPositionsByDay, zoneInOutDayData }
135
140
  }
136
141
 
137
142
  function getKms (trips) {
@@ -4,7 +4,7 @@ const {
4
4
  calculateDistance,
5
5
  sortPositions, getDates, convertToLocaleDateString, convertToLocaleTimeString,
6
6
  isClientSide,
7
- getLanguage
7
+ getLanguage, convertFromUTC, convertFromLocal
8
8
  } = require('./util/utils')
9
9
  const jsPDF = require('jspdf')
10
10
  require('jspdf-autotable')
@@ -105,20 +105,21 @@ async function processDevices (from, to, devices, userData, data) {
105
105
 
106
106
  const dataByDay = []
107
107
  for (const date of dates) {
108
- const fromByDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0)
109
- const toByDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59)
108
+ const startDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.startTime)
109
+ const endDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.endTime)
110
+ const startDate = isClientSide() ? startDateLocal : convertFromLocal(startDateLocal, userData.user.attributes.timezone)
111
+ const endDate = isClientSide() ? endDateLocal : convertFromLocal(endDateLocal, userData.user.attributes.timezone)
110
112
 
111
- const { routeByDay } = await getDataByDay(d, date, { route: deviceRoute }, userData)
113
+ console.log(startDate, endDate)
112
114
 
113
- const zoneInOutDayData = filteredByGeofence.filter(z => (!z.inTime || (new Date(z.inTime.fixTime) < toByDay)) &&
114
- (!z.outTime || (new Date(z.outTime.fixTime) > fromByDay)))
115
+ const { routeByDay, zoneInOutDayData } = await getDataByDay(d, date, { route: deviceRoute, zoneInOutData: filteredByGeofence }, userData)
115
116
 
116
- const firstIn = zoneInOutDayData.find(z => z.inTime && new Date(z.inTime.fixTime) > fromByDay)
117
- const lastOut = zoneInOutDayData.slice().reverse().find(z => z.outTime && new Date(z.outTime.fixTime) < toByDay)
117
+ const firstIn = zoneInOutDayData.find(z => z.inTime && new Date(z.inTime.fixTime) > startDate)
118
+ const lastOut = zoneInOutDayData.slice().reverse().find(z => z.outTime && new Date(z.outTime.fixTime) < endDate)
118
119
 
119
- const timeIn = calculateTimeIn(zoneInOutDayData, fromByDay, from, toByDay, to)
120
- const distanceIn = calculateDistanceIn(zoneInOutDayData, deviceRoute, routeByDay, fromByDay, toByDay, to, d)
121
- const distanceOut = calculateDistanceOut(zoneInOutDayData, routeByDay, fromByDay, toByDay, 'distanceOut', d)
120
+ const timeIn = calculateTimeIn(zoneInOutDayData, startDate, from, endDate, to)
121
+ const distanceIn = calculateDistanceIn(zoneInOutDayData, deviceRoute, routeByDay, startDate, endDate, to, d)
122
+ const distanceOut = calculateDistanceOut(zoneInOutDayData, routeByDay, startDate, endDate, 'distanceOut', d)
122
123
 
123
124
  dataByDay.push({
124
125
  date,
@@ -141,15 +142,16 @@ async function processDevices (from, to, devices, userData, data) {
141
142
  if (userData.zonesByColumn) {
142
143
  const groupByDay = []
143
144
  for (const date of dates) {
144
- const fromByDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0)
145
- const toByDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59)
145
+ const startDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.startTime)
146
+ const endDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.endTime)
147
+ const startDate = isClientSide() ? startDateLocal : convertFromLocal(startDateLocal, userData.user.attributes.timezone)
148
+ const endDate = isClientSide() ? endDateLocal : convertFromLocal(endDateLocal, userData.user.attributes.timezone)
146
149
 
147
- const { routeByDay } = await getDataByDay(d, date, { route: deviceRoute }, userData)
150
+ console.log(startDate, endDate)
148
151
 
149
- const zoneInOutDayData = zoneInOutData.filter(z => (!z.inTime || (new Date(z.inTime.fixTime) < toByDay)) &&
150
- (!z.outTime || (new Date(z.outTime.fixTime) > fromByDay)))
152
+ const { routeByDay, zoneInOutDayData } = await getDataByDay(d, date, { route: deviceRoute, zoneInOutData }, userData)
151
153
 
152
- const distanceOut = calculateDistanceOut(zoneInOutDayData, routeByDay, fromByDay, toByDay, 'distanceOutAny', d)
154
+ const distanceOut = calculateDistanceOut(zoneInOutDayData, routeByDay, startDate, endDate, 'distanceOutAny', d)
153
155
 
154
156
  const geofences = geofencesData.map(g => {
155
157
  const day = g.days.find(day => day.date === date)
@@ -309,33 +311,33 @@ function calculateDistanceIn (zoneInOutDayData, deviceRoute, dayRoute, fromByDay
309
311
  return distanceIn
310
312
  }
311
313
 
312
- function calculateDistanceOut (zoneInOutDayData, dayRoute, fromByDay, toByDay, field, device) {
314
+ function calculateDistanceOut (zoneInOutDayData, dayRoute, from, to, field, device) {
313
315
  if (zoneInOutDayData.length) {
314
- const dataInsideDay = zoneInOutDayData.filter(z => z.outTime && new Date(z.outTime.fixTime) < toByDay)
316
+ const dataInsideDay = zoneInOutDayData.filter(z => z.outTime && new Date(z.outTime.fixTime) < to)
315
317
  let distanceOut = dataInsideDay.reduce((a, b) => a + (b[field] || 0), 0)
316
318
 
317
- if (zoneInOutDayData[0].inTime && new Date(zoneInOutDayData[0].inTime.fixTime) > fromByDay && (field !== 'distanceOutAny' || zoneInOutDayData[0].anyLastExit)) {
319
+ if (zoneInOutDayData[0].inTime && new Date(zoneInOutDayData[0].inTime.fixTime) > from && (field !== 'distanceOutAny' || zoneInOutDayData[0].anyLastExit)) {
318
320
  // Add distanceOut before the first entry
319
321
  const routeOut = dayRoute.filter(p =>
320
322
  new Date(p.fixTime).getTime() < new Date(zoneInOutDayData[0].inTime.fixTime).getTime() &&
321
- new Date(p.fixTime).getTime() >= fromByDay.getTime()
323
+ new Date(p.fixTime).getTime() >= from.getTime()
322
324
  )
323
325
  distanceOut = distanceOut + calculateDistance(routeOut, device.attributes['report.ignoreOdometer'])
324
326
  }
325
327
 
326
- if (zoneInOutDayData[zoneInOutDayData.length - 1].outTime && new Date(zoneInOutDayData[zoneInOutDayData.length - 1].outTime.fixTime) < toByDay && (field !== 'distanceOutAny' || zoneInOutDayData[zoneInOutDayData.length - 1].anyNextIn)) {
328
+ if (zoneInOutDayData[zoneInOutDayData.length - 1].outTime && new Date(zoneInOutDayData[zoneInOutDayData.length - 1].outTime.fixTime) < to && (field !== 'distanceOutAny' || zoneInOutDayData[zoneInOutDayData.length - 1].anyNextIn)) {
327
329
  // Add distanceOut after last exit
328
330
  distanceOut = distanceOut - zoneInOutDayData[zoneInOutDayData.length - 1][field]
329
331
  const routeOut = dayRoute.filter(p =>
330
332
  new Date(p.fixTime) >= new Date(zoneInOutDayData[zoneInOutDayData.length - 1].outTime.fixTime).getTime() &&
331
- new Date(p.fixTime) < toByDay.getTime())
333
+ new Date(p.fixTime) < to.getTime())
332
334
  distanceOut = distanceOut + calculateDistance(routeOut, device.attributes['report.ignoreOdometer'])
333
335
  }
334
336
 
335
337
  return distanceOut
336
338
  }
337
339
 
338
- return calculateDistance(dayRoute.filter(p => new Date(p.fixTime) >= fromByDay && new Date(p.fixTime) < toByDay), device.attributes['report.ignoreOdometer'])
340
+ return calculateDistance(dayRoute.filter(p => new Date(p.fixTime) >= from && new Date(p.fixTime) < to), device.attributes['report.ignoreOdometer'])
339
341
  }
340
342
 
341
343
  function analyseAlerts (alerts, deviceRoute, userData, from, to, device) {