fleetmap-reports 1.0.628 → 1.0.630

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/idle-report.js +33 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetmap-reports",
3
- "version": "1.0.628",
3
+ "version": "1.0.630",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -1,6 +1,6 @@
1
1
  const jsPDF = require('jspdf')
2
2
  const { headerFromUser, AmiriRegular } = require('./util/pdfDocument')
3
- const { convertToLocaleString, convertMS, getTranslations, getLanguage } = require('./util/utils')
3
+ const { convertToLocaleString, convertMS, getTranslations, getLanguage, convertToLocaleDateString, convertToLocaleTimeString } = require('./util/utils')
4
4
  const { getStyle } = require('./reportStyle')
5
5
  const { getUserPartner } = require('fleetmap-partners')
6
6
  const { devicesToProcess } = require('./util/device')
@@ -8,6 +8,7 @@ const automaticReports = require('./automaticReports')
8
8
  const traccarHelper = require('./util/traccar')
9
9
  const { getIdleEvents } = require('./util/route')
10
10
  const { reportByDriver } = require('./util/driver')
11
+ const { getNearestPOIs, insideGeofence } = require('./util/geofence')
11
12
 
12
13
  const fileName = 'IdleReport'
13
14
 
@@ -143,6 +144,8 @@ function processDrivers (from, to, userData, data) {
143
144
 
144
145
  if (filteredEvents.length) {
145
146
  filteredEvents.forEach(e => {
147
+ findGeofenceData(e, userData)
148
+
146
149
  const device = userData.devices.find(d => d.id === e.position.deviceId)
147
150
  e.deviceName = device ? device.name : ''
148
151
  })
@@ -170,6 +173,8 @@ function processDevices (from, to, devices, routes, userData) {
170
173
 
171
174
  if (filteredEvents.length) {
172
175
  filteredEvents.forEach(e => {
176
+ findGeofenceData(e, userData)
177
+
173
178
  const driver = userData.drivers.find(d => d.id === e.position.attributes.driverUniqueId)
174
179
  e.driver = driver ? driver.name : ''
175
180
  })
@@ -185,6 +190,20 @@ function processDevices (from, to, devices, routes, userData) {
185
190
  return devicesResult
186
191
  }
187
192
 
193
+ function findGeofenceData (event, userData) {
194
+ const nearestPOIs = getNearestPOIs(event.position.longitude, event.position.latitude, userData.geofences)
195
+ if (nearestPOIs.length > 0) {
196
+ event.endPOIName = nearestPOIs[0].p.name
197
+ } else {
198
+ const geofence = userData.geofences.filter(g => g && g.area.startsWith('POLYGON')).some(g =>
199
+ insideGeofence({ latitude: event.position.latitude, longitude: event.position.longitude }, g)
200
+ )
201
+ if (geofence) {
202
+ event.endPOIName = geofence.name
203
+ }
204
+ }
205
+ }
206
+
188
207
  async function exportIdleReportToPDF (userData, reportData) {
189
208
  console.log('Export to PDF')
190
209
 
@@ -195,6 +214,7 @@ async function exportIdleReportToPDF (userData, reportData) {
195
214
  const idleData = userData.byDriver ? reportData.drivers : reportData.devices
196
215
 
197
216
  const headers = [
217
+ translations.report.date,
198
218
  translations.report.start,
199
219
  translations.report.end,
200
220
  translations.report.address,
@@ -236,7 +256,8 @@ async function exportIdleReportToPDF (userData, reportData) {
236
256
  d.idleEvents.forEach(a => {
237
257
  const temp = [
238
258
  getIdleEventDate(a.position, userData.user),
239
- getIdleEventDate(a.lastPosition, userData.user),
259
+ getIdleEventTime(a.position, userData.user),
260
+ getIdleEventTime(a.lastPosition, userData.user),
240
261
  a.position.address,
241
262
  convertMS(a.idleTime, true),
242
263
  userData.byDriver ? a.deviceName : getDriver(a, userData.drivers)
@@ -246,7 +267,7 @@ async function exportIdleReportToPDF (userData, reportData) {
246
267
 
247
268
  const footValues = [
248
269
  'Total:' + d.idleEvents.length,
249
- '',
270
+ '', '', '',
250
271
  convertMS(d.idleEvents.reduce((a, b) => a + b.idleTime, 0), true)
251
272
  ]
252
273
 
@@ -306,6 +327,7 @@ function exportIdleReportToExcel (userData, reportData) {
306
327
  }
307
328
  const headers = [
308
329
  { label: userData.byDriver ? translations.report.driver : translations.report.vehicle, value: 'name' },
330
+ { label: translations.report.date, value: 'date' },
309
331
  { label: translations.report.start, value: 'start' },
310
332
  { label: translations.report.end, value: 'end' },
311
333
  { label: translations.report.address, value: 'address' },
@@ -321,8 +343,9 @@ function exportIdleReportToExcel (userData, reportData) {
321
343
  return {
322
344
  name: userData.byDriver ? d.driver.name : d.device.name,
323
345
  duration: convertMS(a.idleTime, true),
324
- start: getIdleEventDate(a.position, userData.user),
325
- end: getIdleEventDate(a.lastPosition, userData.user),
346
+ date: getIdleEventDate(a.position, userData.user),
347
+ start: getIdleEventTime(a.position, userData.user),
348
+ end: getIdleEventTime(a.lastPosition, userData.user),
326
349
  subname: userData.byDriver ? a.deviceName : getDriver(a, userData.drivers),
327
350
  address: a.position.address + (a.geofenceName ? ' - ' + a.geofenceName : '')
328
351
  }
@@ -348,7 +371,11 @@ function deviceName (device) {
348
371
  }
349
372
 
350
373
  function getIdleEventDate (position, user) {
351
- return convertToLocaleString(position.fixTime, user.attributes.lang, user.attributes.timezone)
374
+ return convertToLocaleDateString(position.fixTime, user.attributes.lang, user.attributes.timezone)
375
+ }
376
+
377
+ function getIdleEventTime (position, user) {
378
+ return convertToLocaleTimeString(position.fixTime, user.attributes.lang, user.attributes.timezone)
352
379
  }
353
380
 
354
381
  exports.createIdleReport = createIdleReport