fleetmap-reports 1.0.961 → 1.0.962

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.962",
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,19 @@ 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
+ const { routeByDay, zoneInOutDayData } = await getDataByDay(d, date, { route: deviceRoute, zoneInOutData: filteredByGeofence }, userData)
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 firstIn = zoneInOutDayData.find(z => z.inTime && new Date(z.inTime.fixTime) > startDate)
116
+ const lastOut = zoneInOutDayData.slice().reverse().find(z => z.outTime && new Date(z.outTime.fixTime) < endDate)
115
117
 
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)
118
-
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)
118
+ const timeIn = calculateTimeIn(zoneInOutDayData, startDate, from, endDate, to)
119
+ const distanceIn = calculateDistanceIn(zoneInOutDayData, deviceRoute, routeByDay, startDate, endDate, to, d)
120
+ const distanceOut = calculateDistanceOut(zoneInOutDayData, routeByDay, startDate, endDate, 'distanceOut', d)
122
121
 
123
122
  dataByDay.push({
124
123
  date,
@@ -141,15 +140,14 @@ async function processDevices (from, to, devices, userData, data) {
141
140
  if (userData.zonesByColumn) {
142
141
  const groupByDay = []
143
142
  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)
146
-
147
- const { routeByDay } = await getDataByDay(d, date, { route: deviceRoute }, userData)
143
+ const startDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.startTime)
144
+ const endDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.endTime)
145
+ const startDate = isClientSide() ? startDateLocal : convertFromLocal(startDateLocal, userData.user.attributes.timezone)
146
+ const endDate = isClientSide() ? endDateLocal : convertFromLocal(endDateLocal, userData.user.attributes.timezone)
148
147
 
149
- const zoneInOutDayData = zoneInOutData.filter(z => (!z.inTime || (new Date(z.inTime.fixTime) < toByDay)) &&
150
- (!z.outTime || (new Date(z.outTime.fixTime) > fromByDay)))
148
+ const { routeByDay, zoneInOutDayData } = await getDataByDay(d, date, { route: deviceRoute, zoneInOutData }, userData)
151
149
 
152
- const distanceOut = calculateDistanceOut(zoneInOutDayData, routeByDay, fromByDay, toByDay, 'distanceOutAny', d)
150
+ const distanceOut = calculateDistanceOut(zoneInOutDayData, routeByDay, startDate, endDate, 'distanceOutAny', d)
153
151
 
154
152
  const geofences = geofencesData.map(g => {
155
153
  const day = g.days.find(day => day.date === date)