fleetmap-reports 2.0.144 → 2.0.145

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.144",
3
+ "version": "2.0.145",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -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, getKms } = require('./util/trips')
15
+ const { isInsideTimetable, isPartialInsideTimetable, calculateTrip, getDataByDay, getKms, calculateMultiDayTrips } = require('./util/trips')
16
16
  const { devicesToProcess } = require('./util/device')
17
17
  const { getDriverData } = require('./util/driver')
18
18
  const { calculateConsumption } = require('./util/fuel')
@@ -298,6 +298,8 @@ function processDrivers (from, to, drivers, driversData, userData) {
298
298
  const tripsByDay = trips.filter(t => (new Date(t.startTime) > fromByDay && new Date(t.endTime) < toByDay) &&
299
299
  (userData.allWeek || !userData.weekDays || isInsideTimetable(t, userData) || isPartialInsideTimetable(t, userData, route)))
300
300
 
301
+ calculateMultiDayTrips(trips, route, tripsByDay, fromByDay, toByDay, userData.devices)
302
+
301
303
  driverData.summary.push({
302
304
  date,
303
305
  distance: tripsByDay.filter(t => t.distance > 0).reduce((a, b) => a + b.distance, 0),
package/src/kms-report.js CHANGED
@@ -11,7 +11,7 @@ const { getDates, getTranslations, isClientSide, executeServerSide } = require('
11
11
  const driversUtil = require('./util/driver')
12
12
  const {
13
13
  isInsideTimetable, isPartialInsideTimetable, calculateTrip, getDataByDay, getKms,
14
- getTripTotalKms
14
+ getTripTotalKms, calculateMultiDayTrips
15
15
  } = require('./util/trips')
16
16
  const { devicesToProcess } = require('./util/device')
17
17
  const { getDriverData, reportByDriver } = require('./util/driver')
@@ -183,7 +183,7 @@ async function processDrivers (from, to, userData, data) {
183
183
  const driversResult = []
184
184
 
185
185
  for (const d of userData.drivers) {
186
- const { trips } = await getDriverData(d, data, userData)
186
+ const { trips, route } = await getDriverData(d, data, userData)
187
187
 
188
188
  if (trips.length > 0) {
189
189
  const driverData = {
@@ -198,6 +198,8 @@ async function processDrivers (from, to, userData, data) {
198
198
 
199
199
  const tripsByDay = trips.filter(t => (new Date(t.startTime) > fromByDay && new Date(t.endTime) < toByDay))
200
200
 
201
+ calculateMultiDayTrips(trips, route, tripsByDay, fromByDay, toByDay, userData.devices)
202
+
201
203
  driverData.days.push({
202
204
  date,
203
205
  kms: tripsByDay.filter(t => t.distance > 0).reduce((a, b) => a + b.distance, 0)
package/src/util/trips.js CHANGED
@@ -152,6 +152,7 @@ function getUncompletedTrip (device, deviceRoute, deviceTrips) {
152
152
  }
153
153
 
154
154
  function calculateTrip (device, route) {
155
+ console.log('route', route.length)
155
156
  const startPos = route[0]
156
157
  const endPos = route[route.length - 1]
157
158
 
@@ -235,6 +236,22 @@ function getTripTotalKms (trip, stop, route) {
235
236
  return distance / 1000
236
237
  }
237
238
 
239
+ function calculateMultiDayTrips (trips, route, tripsByDay, fromByDay, toByDay, devices) {
240
+ const startsOutside = trips.filter(t => (new Date(t.startTime) < fromByDay && new Date(t.endTime) > fromByDay))
241
+ if (startsOutside.length > 0) {
242
+ tripsByDay.push(calculateTrip(devices.find(d => d.id === startsOutside[0].deviceId),
243
+ route.filter(p => new Date(p.fixTime) >= fromByDay &&
244
+ new Date(p.fixTime) <= new Date(startsOutside[0].endTime))))
245
+ }
246
+
247
+ const endsOutside = trips.filter(t => (new Date(t.startTime) < toByDay && new Date(t.endTime) > toByDay))
248
+ if (endsOutside.length > 0) {
249
+ tripsByDay.push(calculateTrip(devices.find(d => d.id === endsOutside[0].deviceId),
250
+ route.filter(p => new Date(p.fixTime) >= new Date(endsOutside[0].startTime) &&
251
+ new Date(p.fixTime) <= toByDay)))
252
+ }
253
+ }
254
+
238
255
  exports.isInsideTimetable = isInsideTimetable
239
256
  exports.isPartialInsideTimetable = isPartialInsideTimetable
240
257
  exports.getDataByDay = getDataByDay
@@ -245,3 +262,4 @@ exports.getTripIdleTime = getTripIdleTime
245
262
  exports.calculateStopDuration = calculateStopDuration
246
263
  exports.getUncompletedTrip = getUncompletedTrip
247
264
  exports.getTripTotalKms = getTripTotalKms
265
+ exports.calculateMultiDayTrips = calculateMultiDayTrips