fleetmap-reports 1.0.928 → 1.0.930

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.928",
3
+ "version": "1.0.930",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -19,7 +19,7 @@
19
19
  "country-reverse-geocoding": "^0.2.2",
20
20
  "docx": "^7.3.0",
21
21
  "file-saver": "^2.0.5",
22
- "fleetmap-partners": "^1.0.126",
22
+ "fleetmap-partners": "^1.0.144",
23
23
  "json-as-xlsx": "^1.2.1",
24
24
  "jspdf": "^2.5.1",
25
25
  "jspdf-autotable": "3.6.0",
package/src/kms-report.js CHANGED
@@ -329,45 +329,93 @@ function exportKmsReportToExcel (userData, reportData) {
329
329
  fileName // The name of the spreadsheet
330
330
  }
331
331
 
332
- const headers = []
333
332
  const info = userData.byDriver ? reportData.drivers : reportData.devices
333
+ const columns = getExcelTableColumns(userData, info, translations)
334
334
 
335
- if (userData.groupByDay) {
336
- headers.push(
337
- { label: translations.report.vehicle, value: 'name' },
338
- { label: translations.settings.vehicle_licenseplate, value: 'licenseplate' },
339
- { label: translations.report.group, value: 'group' },
340
- { label: translations.report.startOdometer, value: 'startOdometer' })
335
+ const data = []
336
+ info.forEach(d => {
337
+ data.push(...getExcelContent(userData, d, translations))
338
+ })
341
339
 
342
- const days = info[0].days
343
- days.forEach((day, index) => {
344
- headers.push({ label: new Date(day.date).toLocaleDateString(), value: 'day' + index })
340
+ // add total
341
+ if (data.length) {
342
+ data.push({
343
+ name: '',
344
+ group: '',
345
+ licenseplate: 'Total',
346
+ distance: data.reduce((prev, curr) => curr.distance ? { distance: (prev.distance || 0) + curr.distance } : prev).distance
345
347
  })
348
+ }
346
349
 
347
- headers.push({ label: translations.report.total, value: 'total' },
348
- { label: translations.report.endOdometer, value: 'endOdometer' })
350
+ return {
351
+ headers: columns,
352
+ data,
353
+ settings
354
+ }
355
+ }
356
+
357
+ function getExcelTableColumns (userData, info, translations) {
358
+ const columns = []
359
+ if (userData.groupByDay) {
360
+ const partner = getUserPartner(userData.user)
361
+ if (partner.reports.kmsReportDaysInColumns) {
362
+ columns.push(
363
+ { label: translations.report.vehicle, value: 'name' },
364
+ { label: translations.settings.vehicle_licenseplate, value: 'licenseplate' },
365
+ { label: translations.report.group, value: 'group' },
366
+ { label: translations.report.startOdometer, value: 'startOdometer' })
367
+
368
+ const days = info[0].days
369
+ days.forEach((day, index) => {
370
+ columns.push({ label: new Date(day.date).toLocaleDateString(), value: 'day' + index })
371
+ })
372
+
373
+ columns.push({ label: translations.report.total, value: 'total' },
374
+ { label: translations.report.endOdometer, value: 'endOdometer' })
375
+ } else {
376
+ columns.push(
377
+ { label: translations.report.vehicle, value: 'name' },
378
+ { label: translations.settings.vehicle_licenseplate, value: 'licenseplate' },
379
+ { label: translations.report.group, value: 'group' },
380
+ { label: translations.report.date, value: 'date' },
381
+ { label: translations.report.weekDay, value: 'weekday' },
382
+ { label: translations.report.distance, value: 'distance' })
383
+ }
349
384
  } else if (userData.byDriver) {
350
- headers.push(
385
+ columns.push(
351
386
  { label: translations.report.driver, value: 'name' },
352
387
  { label: translations.report.group, value: 'group' },
353
388
  { label: translations.report.distance, value: 'distance' })
354
389
  } else {
355
- headers.push(
390
+ columns.push(
356
391
  { label: translations.report.vehicle, value: 'name' },
357
392
  { label: translations.settings.vehicle_licenseplate, value: 'licenseplate' },
358
393
  { label: translations.report.group, value: 'group' },
359
394
  { label: translations.report.distance, value: 'distance' })
360
395
  }
396
+ return columns
397
+ }
361
398
 
362
- let data = []
399
+ function getExcelContent (userData, d, translations) {
400
+ const weekDays = [
401
+ translations.report.sunday,
402
+ translations.report.monday,
403
+ translations.report.tuesday,
404
+ translations.report.wednesday,
405
+ translations.report.thursday,
406
+ translations.report.friday,
407
+ translations.report.saturday
408
+ ]
363
409
 
364
- info.forEach(d => {
365
- const group = userData.byDriver
366
- ? userData.groups.find(g => g.drivers && g.drivers.includes(d.driver.id))
367
- : userData.groups.find(g => d.device.groupId === g.id)
410
+ const data = []
411
+ const group = userData.byDriver
412
+ ? userData.groups.find(g => g.drivers && g.drivers.includes(d.driver.id))
413
+ : userData.groups.find(g => d.device.groupId === g.id)
368
414
 
369
- if (userData.groupByDay) {
370
- if (d.days) {
415
+ if (userData.groupByDay) {
416
+ const partner = getUserPartner(userData.user)
417
+ if (d.days) {
418
+ if (partner.reports.kmsReportDaysInColumns) {
371
419
  const vehicle = {
372
420
  name: d.device.name,
373
421
  group: group ? group.name : '',
@@ -382,33 +430,30 @@ function exportKmsReportToExcel (userData, reportData) {
382
430
 
383
431
  vehicle.total = Number(d.days.reduce((a, b) => a + (b.kms / 1000), 0).toFixed(0))
384
432
 
385
- data = data.concat([vehicle])
433
+ data.push(vehicle)
434
+ } else {
435
+ data.push({})
436
+ data.push(...(d.days.map(a => {
437
+ return {
438
+ name: d.device.name,
439
+ group: group ? group.name : '',
440
+ licenseplate: d.device.attributes.license_plate,
441
+ date: a.date,
442
+ weekday: weekDays[a.date.getDay()],
443
+ distance: Number((a.kms / 1000).toFixed(0))
444
+ }
445
+ })))
386
446
  }
387
- } else {
388
- data = data.concat([{
389
- name: userData.byDriver ? d.driver.name : d.device.name,
390
- group: group ? group.name : '',
391
- licenseplate: userData.byDriver ? '' : d.device.attributes.license_plate,
392
- distance: Number((d.summary.distance / 1000).toFixed(0))
393
- }])
394
447
  }
395
- })
396
-
397
- // add total
398
- if (data.length && !userData.groupByDay) {
399
- data = data.concat({
400
- name: '',
401
- group: '',
402
- licenseplate: 'Total',
403
- distance: data.reduce((prev, curr) => curr.distance ? { distance: (prev.distance || 0) + curr.distance } : prev).distance
448
+ } else {
449
+ data.push({
450
+ name: userData.byDriver ? d.driver.name : d.device.name,
451
+ group: group ? group.name : '',
452
+ licenseplate: userData.byDriver ? '' : d.device.attributes.license_plate,
453
+ distance: Number((d.summary.distance / 1000).toFixed(0))
404
454
  })
405
455
  }
406
-
407
- return {
408
- headers,
409
- data,
410
- settings
411
- }
456
+ return data
412
457
  }
413
458
 
414
459
  exports.createKmsReport = createKmsReport
@@ -262,7 +262,7 @@ function getAnyNextIn (outDate, alerts, deviceRoute) {
262
262
  .filter(a => a.type === 'geofenceEnter')
263
263
  .find(a => new Date(a.position.fixTime).getTime() > outDate)
264
264
 
265
- if (!alerts.filter(a => a.type === 'geofenceExit' &&
265
+ if (next && !alerts.filter(a => a.type === 'geofenceExit' &&
266
266
  new Date(a.position.fixTime).getTime() > outDate &&
267
267
  new Date(a.position.fixTime).getTime() < new Date(next.position.fixTime).getTime()).length) {
268
268
  return (next && next.position && new Date(next.position.fixTime).getTime()) ||