fleetmap-reports 2.0.353 → 2.0.356

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.353",
3
+ "version": "2.0.356",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -29,7 +29,7 @@ async function createFuelConsumptionReport (from, to, userData, traccar) {
29
29
 
30
30
  if (isClientSide() && (devices.length > 50 || ((new Date(to).getTime() - new Date(from).getTime()) > (1000 * 60 * 60 * 24 * 15)))) {
31
31
  const sliced = automaticReports.sliceArray(devices, 1)
32
- allData.devices = await executeServerSide('fuel-consumption-report', sliced, from, to, userData, devices.length, traccar)
32
+ allData.devices = await executeServerSide('fuel-consumption-report', sliced, from, to, userData, devices.length, traccar, 5)
33
33
  allData.totalDevices = allData.devices.length
34
34
  reportData.push(allData)
35
35
  return reportData
@@ -153,7 +153,7 @@ function exportFuelConsumptionReportToExcel (userData, reportData) {
153
153
  data = data.concat(d.days.map((r) => {
154
154
  return {
155
155
  name: d.device.name,
156
- date: r.date.toLocaleDateString(),
156
+ date: new Date(r.date).toLocaleDateString(),
157
157
  kms: formatNumber(r.distance / 1000),
158
158
  consumption: r.spentFuel > 0 ? formatNumber(r.spentFuel) : 0,
159
159
  avg_consumption: formatNumber(lang === 'pt-BR' ? r.avgConsumption.byLiters : r.avgConsumption.byKms),
@@ -220,7 +220,7 @@ async function exportFuelConsumptionReportToPDF (userData, reportData) {
220
220
 
221
221
  d.days.forEach(r =>
222
222
  data.push([
223
- r.date.toLocaleDateString(),
223
+ new Date(r.date).toLocaleDateString(),
224
224
  formatNumber(r.distance / 1000),
225
225
  r.spentFuel > 0 ? formatNumber(r.spentFuel) : 0,
226
226
  formatNumber(lang === 'pt-BR' ? r.avgConsumption.byLiters : r.avgConsumption.byKms),
@@ -1,5 +1,5 @@
1
1
  const traccarHelper = require('../util/traccar')
2
- const { getDriverData } = require('../util/driver')
2
+ const { getDriverData, devicesByDriver } = require('../util/driver')
3
3
  const { getCanDriverStyleMessages, parseCanDriverStyleMessage } = require('../util/xpert')
4
4
  const { calculateRPMSections } = require('./performance-report')
5
5
  const { getTranslations, isClientSide, convertToLocaleString, convertMS } = require('../util/utils')
@@ -29,10 +29,12 @@ async function create (from, to, userData, traccar) {
29
29
  drivers: []
30
30
  }
31
31
 
32
- const devices = userData.devices
33
32
  userData.geofences = []
34
33
  userData.roadSpeedLimits = true
35
34
 
35
+ const { devices, drivers } = await devicesByDriver(traccar, from, to, userData.drivers, userData.devices)
36
+ userData.drivers = drivers
37
+
36
38
  let deviceCount = 0
37
39
  const driversData = new Map()
38
40
  const overspeedEvents = await getOverspeedEvents(from, to, userData, devices, userData, traccar)
package/src/util/utils.js CHANGED
@@ -115,6 +115,7 @@ function getDates (startDate, endDate, timezone) {
115
115
  let currentDate = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate(), 12, 0, 0, 0)
116
116
  let _endDate = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), 23, 59, 59, 0)
117
117
 
118
+ timezone = safeTimezone(timezone)
118
119
  if (!isClientSide() && timezone) {
119
120
  const startDateUserTimezone = convertFromUTC(startDate, timezone)
120
121
  currentDate = new Date(startDateUserTimezone.getFullYear(), startDateUserTimezone.getMonth(), startDateUserTimezone.getDate(), 12, 0, 0, 0)
@@ -160,13 +161,25 @@ async function getImgFromUrl (hostname) {
160
161
 
161
162
  function isClientSide () { return (typeof window !== 'undefined') }
162
163
 
164
+ // Guards against corrupt user attributes (e.g. timezone === true) reaching Intl,
165
+ // which throws RangeError: Invalid time zone specified
166
+ function safeTimezone (timezone) {
167
+ if (typeof timezone !== 'string' || !timezone) return undefined
168
+ try {
169
+ Intl.DateTimeFormat(undefined, { timeZone: timezone })
170
+ return timezone
171
+ } catch (e) {
172
+ return undefined
173
+ }
174
+ }
175
+
163
176
  function convertToLocaleString (value, lang, timezone, user) {
164
177
  if (isClientSide()) {
165
178
  return new Date(value).toLocaleString()
166
179
  }
167
180
  if ((lang && timezone) || user) {
168
181
  return new Date(value).toLocaleString(lang || getUserPartner(user).lang, {
169
- timeZone: timezone || getUserPartner(user).timezone,
182
+ timeZone: safeTimezone(timezone) || safeTimezone(user && getUserPartner(user).timezone),
170
183
  hour12: false
171
184
  })
172
185
  }
@@ -178,7 +191,7 @@ function convertToLocaleDateString (value, lang, timezone, user) {
178
191
  return new Date(value).toLocaleDateString()
179
192
  } else {
180
193
  return new Date(value).toLocaleDateString(lang || getUserPartner(user).lang, {
181
- timeZone: timezone || getUserPartner(user).timezone,
194
+ timeZone: safeTimezone(timezone) || safeTimezone(user && getUserPartner(user).timezone),
182
195
  hour12: false
183
196
  })
184
197
  }
@@ -189,7 +202,7 @@ function convertToLocaleTimeString (value, lang, timezone, user) {
189
202
  return new Date(value).toLocaleTimeString()
190
203
  } else {
191
204
  return new Date(value).toLocaleTimeString(lang || getUserPartner(user).lang, {
192
- timeZone: timezone || getUserPartner(user).timezone,
205
+ timeZone: safeTimezone(timezone) || safeTimezone(user && getUserPartner(user).timezone),
193
206
  hour12: false
194
207
  })
195
208
  }
@@ -199,6 +212,10 @@ function getTimezoneOffset (timezone, date = new Date()) {
199
212
  if (isClientSide()) {
200
213
  return date.getTimezoneOffset()
201
214
  } else {
215
+ timezone = safeTimezone(timezone)
216
+ if (!timezone) {
217
+ return 0
218
+ }
202
219
  const utcDate = new Date(date.toLocaleString('en-US', { timeZone: 'UTC' }))
203
220
  const tzDate = new Date(date.toLocaleString('en-US', { timeZone: timezone }))
204
221
  return (utcDate.getTime() - tzDate.getTime()) / 6e4
@@ -259,7 +276,10 @@ async function executeServerSide (type, sliced, from, to, userData, totalItems,
259
276
  },
260
277
  cookie
261
278
  }, { withCredentials: true }).then(d => {
262
- reportData.push(...(userData.byDriver ? d.data[0].drivers : d.data[0].devices))
279
+ const result = d.data[0]
280
+ if (result) {
281
+ reportData.push(...((userData.byDriver ? result.drivers : result.devices) || []))
282
+ }
263
283
  })
264
284
  itemsCount = itemsCount + items.length
265
285
  } catch (e) {