fleetmap-reports 1.0.907 → 1.0.908

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.907",
3
+ "version": "1.0.908",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -1,7 +1,7 @@
1
1
  const automaticReports = require('./automaticReports')
2
2
  const {
3
3
  convertMS, getDates, getTranslations, weekDaySelected, convertToLocaleString, isClientSide,
4
- getLanguage, convertFromUTC, convertFromLocal
4
+ getLanguage
5
5
  } = require('./util/utils')
6
6
  const jsPDF = require('jspdf')
7
7
  require('jspdf-autotable')
@@ -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, calculatePartialTrip } = require('./util/trips')
15
+ const { isInsideTimetable, isPartialInsideTimetable, calculateTrip, getDataByDay } = require('./util/trips')
16
16
  const { devicesToProcess } = require('./util/device')
17
17
  const { getDriverData } = require('./util/driver')
18
18
  const { calculateConsumption } = require('./util/fuel')
@@ -157,14 +157,6 @@ async function createActivityReportByDriver (from, to, userData, traccarInstance
157
157
  return allData
158
158
  }
159
159
 
160
- function checkTripsPartialInsideDate (date, userData, tripsByDay, deviceRoute) {
161
- const startDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.startTime)
162
- const endDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.endTime)
163
- const startDate = isClientSide() ? startDateLocal : convertFromLocal(startDateLocal, userData.user.attributes.timezone)
164
- const endDate = isClientSide() ? endDateLocal : convertFromLocal(endDateLocal, userData.user.attributes.timezone)
165
- tripsByDay.forEach(t => calculatePartialTrip(startDate, endDate, deviceRoute, t))
166
- }
167
-
168
160
  function processDevices (from, to, devices, data, userData) {
169
161
  const devicesResult = []
170
162
 
@@ -183,18 +175,11 @@ function processDevices (from, to, devices, data, userData) {
183
175
  const summary = []
184
176
  if (userData.groupByDay) {
185
177
  const trips = deviceTrips.filter(t => userData.allWeek || !userData.weekDays || isInsideTimetable(t, userData) || isPartialInsideTimetable(t, userData, deviceRoute))
186
-
187
178
  const dates = getDates(from, to, userData.user.attributes.timezone || getUserPartner(userData.user).timezone)
188
179
  for (const date of dates) {
189
- const fromByDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0)
190
- const toByDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59)
191
- const tripsByDay = trips.filter(t => new Date(t.endTime) > fromByDay && new Date(t.startTime) < toByDay).map(t => { return { ...t } })
180
+ const { tripsByDay, routeByDay } = getDataByDay(date, trips, userData, deviceRoute)
192
181
 
193
- checkTripsPartialInsideDate(date, userData, tripsByDay, deviceRoute)
194
-
195
- const routeByDay = deviceRoute.filter(p => (new Date(p.fixTime) > fromByDay && new Date(p.fixTime) < toByDay))
196
182
  const distance = tripsByDay.reduce((a, b) => a + b.distance, 0)
197
-
198
183
  if (!userData.allWeek && userData.weekDays && userData.dayHours) {
199
184
  if (weekDaySelected(date, userData.weekDays)) {
200
185
  summary.push({
package/src/kms-report.js CHANGED
@@ -7,10 +7,10 @@ const {
7
7
  } = require('./util/pdfDocument')
8
8
  const { getUserPartner } = require('fleetmap-partners')
9
9
  const traccar = require('./util/traccar')
10
- const { getDates, convertFromUTC, getTranslations } = require('./util/utils')
10
+ const { getDates, getTranslations } = require('./util/utils')
11
11
  const trips = require('./util/trips')
12
12
  const drivers = require('./util/driver')
13
- const { isInsideTimetable, isPartialInsideTimetable, calculateTrip } = require('./util/trips')
13
+ const { isInsideTimetable, isPartialInsideTimetable, calculateTrip, getDataByDay } = require('./util/trips')
14
14
  const traccarHelper = require('./util/traccar')
15
15
  const { devicesToProcess } = require('./util/device')
16
16
  const { getDriverData } = require('./util/driver')
@@ -43,7 +43,7 @@ async function createKmsReportByDevice (from, to, userData, traccarInstance) {
43
43
  to
44
44
  }
45
45
 
46
- const needRoute = !userData.allWeek
46
+ const needRoute = !userData.allWeek || userData.groupByDay
47
47
  const allInOne = await traccarHelper.getAllInOne(traccarInstance, from, to, devices, needRoute, true, false, false, 0, devices.length, 20)
48
48
  const tripsData = allInOne.trips
49
49
  const routeData = allInOne.route
@@ -161,41 +161,18 @@ function processDevices (from, to, devices, data, userData) {
161
161
 
162
162
  if (userData.groupByDay) {
163
163
  if (trips.length > 0) {
164
- trips.forEach(t => {
165
- const tripDay = convertFromUTC(t.startTime, userData.user.attributes.timezone)
166
- tripDay.setHours(12, 0, 0)
167
- t.tripDay = tripDay.toISOString()
168
- })
169
- const groupedTrips = trips.reduce(
170
- (entryMap, e) => entryMap.set(e.tripDay, [...entryMap.get(e.tripDay) || [], e]),
171
- new Map()
172
- )
173
-
174
- const allDates = getDates(from, to)
175
-
176
164
  const days = []
177
- let keys = Array.from(groupedTrips.keys())
178
- allDates.forEach(d => {
179
- d.setHours(12, 0, 0)
180
- const day = d.toISOString()
181
- if (!keys.includes(day)) {
182
- groupedTrips.set(day, [])
183
- }
184
- })
185
-
186
- keys = Array.from(groupedTrips.keys())
187
- keys.sort((a, b) => new Date(a).getTime() - new Date(b).getTime())
188
- keys.forEach(key => {
189
- const currentDate = new Date(key)
190
- const dayTrips = groupedTrips.get(key)
165
+ const trips = deviceTrips.filter(t => userData.allWeek || !userData.weekDays || isInsideTimetable(t, userData) || isPartialInsideTimetable(t, userData, deviceRoute))
166
+ const dates = getDates(from, to, userData.user.attributes.timezone || getUserPartner(userData.user).timezone)
167
+ for (const date of dates) {
168
+ const { tripsByDay } = getDataByDay(date, trips, userData, deviceRoute)
191
169
  const day = {
192
- date: currentDate,
193
- kms: 0
170
+ date,
171
+ kms: tripsByDay.reduce((a, b) => a + b.distance, 0)
194
172
  }
195
- day.kms = dayTrips.reduce((a, b) => a + b.distance, 0)
196
-
197
173
  days.push(day)
198
- })
174
+ }
175
+
199
176
  devicesResult.push({
200
177
  device: d,
201
178
  days
package/src/util/trips.js CHANGED
@@ -93,6 +93,24 @@ function isPartialInsideTimetable (t, userData, route) {
93
93
  return false
94
94
  }
95
95
 
96
+ function getDataByDay (date, trips, userData, deviceRoute) {
97
+ const fromByDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0)
98
+ const toByDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59)
99
+ const tripsByDay = trips.filter(t => new Date(t.endTime) > fromByDay && new Date(t.startTime) < toByDay).map(t => {
100
+ return { ...t }
101
+ })
102
+
103
+ const startDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.startTime)
104
+ const endDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.endTime)
105
+ const startDate = isClientSide() ? startDateLocal : convertFromLocal(startDateLocal, userData.user.attributes.timezone)
106
+ const endDate = isClientSide() ? endDateLocal : convertFromLocal(endDateLocal, userData.user.attributes.timezone)
107
+ tripsByDay.forEach(t => calculatePartialTrip(startDate, endDate, deviceRoute, t))
108
+ console.log(date, tripsByDay)
109
+
110
+ const routeByDay = deviceRoute.filter(p => (new Date(p.fixTime) > fromByDay && new Date(p.fixTime) < toByDay))
111
+ return { tripsByDay, routeByDay }
112
+ }
113
+
96
114
  function isInsideTimetable (t, userData) {
97
115
  return isInside(t.startTime, t.endTime, userData)
98
116
  }
@@ -162,6 +180,7 @@ function calculateStopDuration (stop) {
162
180
  exports.checkTripsKms = checkTripsKms
163
181
  exports.isInsideTimetable = isInsideTimetable
164
182
  exports.isPartialInsideTimetable = isPartialInsideTimetable
183
+ exports.getDataByDay = getDataByDay
165
184
  exports.calculatePartialTrip = calculatePartialTrip
166
185
  exports.calculateTrip = calculateTrip
167
186
  exports.getTripIdleTime = getTripIdleTime