fleetmap-reports 2.0.37 → 2.0.39

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": "2.0.37",
3
+ "version": "2.0.39",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -159,4 +159,21 @@ describe('zones', function () {
159
159
  console.log(first)
160
160
  assert.equal(first.days[6].distanceOut, 867.0554430738234)
161
161
  }, 4000000)
162
+
163
+ it('works with casais zones in columns 7', async () => {
164
+ const report = await getReports()
165
+ const userData = await report.getUserData()
166
+ userData.zonesByColumn = true
167
+ userData.devices = userData.devices.filter(d => d.id === 81166)
168
+ userData.geofences = userData.geofences.filter(g => g.name === 'baliza 1 - raio verde ' ||
169
+ g.name === 'baliza 2 - raio amarelo')
170
+ userData.onlyWithKmsOut = false
171
+ const result = await report.zoneReport(
172
+ new Date(Date.UTC(2023, 9, 9, 0, 0, 0, 0)),
173
+ new Date(Date.UTC(2023, 9, 31, 23, 59, 59, 0)),
174
+ userData)
175
+ const first = result[0].devices[0]
176
+ console.log(first)
177
+ assert.equal(first.days[17].distanceOut, 720.7985320478997)
178
+ }, 4000000)
162
179
  })
@@ -183,21 +183,33 @@ async function processDevices (from, to, devices, data, userData, traccar) {
183
183
  }
184
184
 
185
185
  if (userData.includeTemperature) {
186
- const tripRoute = deviceRoute.filter(p => trip.startTime <= p.fixTime && trip.endTime >= p.fixTime && p.attributes.temp1 !== 175)
187
- trip.maxTemp = tripRoute.length > 0
188
- ? tripRoute.reduce((a, b) => {
189
- return a && a > b.attributes.temp1 ? a : b.attributes.temp1
186
+ const tripRoute = deviceRoute.filter(p => trip.startTime <= p.fixTime && trip.endTime >= p.fixTime)
187
+
188
+ const temperatureValues = tripRoute.map(p => {
189
+ for (let i = 1; i <= 3; i++) {
190
+ const temp = 'temp' + i
191
+ if (p.attributes[temp] && parseFloat(p.attributes[temp]) !== 175) {
192
+ return parseFloat(p.attributes[temp])
193
+ }
194
+ }
195
+
196
+ return undefined
197
+ }).filter(a => a !== undefined)
198
+
199
+ trip.maxTemp = temperatureValues.length > 0
200
+ ? temperatureValues.reduce((a, b) => {
201
+ return a > b ? a : b
190
202
  })
191
203
  : 0
192
- trip.minTemp = tripRoute.length > 0
193
- ? tripRoute.reduce((a, b) => {
194
- return a && a < b.attributes.temp1 ? a : b.attributes.temp1
204
+ trip.minTemp = temperatureValues.length > 0
205
+ ? temperatureValues.reduce((a, b) => {
206
+ return a < b ? a : b
195
207
  })
196
208
  : 0
197
- trip.avgTemp = tripRoute.length > 0
198
- ? (tripRoute.reduce((a, b) => {
199
- return a + b.attributes.temp1
200
- }, 0)) / tripRoute.length
209
+ trip.avgTemp = temperatureValues.length > 0
210
+ ? (temperatureValues.reduce((a, b) => {
211
+ return a + b
212
+ }, 0)) / temperatureValues.length
201
213
  : 0
202
214
  }
203
215
 
@@ -345,6 +345,7 @@ function calculateDistanceOut (zoneInOutDayData, dayRoute, fromByDay, toByDay, f
345
345
  distanceOut = distanceOut + calculateDistance(routeOut, device.attributes['report.ignoreOdometer'])
346
346
  }
347
347
 
348
+ zoneInOutDayData.sort((a, b) => (a.outTime ? new Date(a.outTime.fixTime).getTime() : 0) - (b.outTime ? new Date(b.outTime.fixTime).getTime() : 0))
348
349
  if (zoneInOutDayData[zoneInOutDayData.length - 1].outTime && new Date(zoneInOutDayData[zoneInOutDayData.length - 1].outTime.fixTime) < toByDay) {
349
350
  // Add distanceOut after last exit
350
351
  distanceOut = distanceOut - zoneInOutDayData[zoneInOutDayData.length - 1][field]