fleetmap-reports 1.0.965 → 1.0.966

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.
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetmap-reports",
3
- "version": "1.0.965",
3
+ "version": "1.0.966",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -54,7 +54,7 @@ async function createFuelConsumptionReport (from, to, userData, traccar) {
54
54
 
55
55
  const odooAvgConsumption = useOdooFuelData(d, route) ? getOdooAvgConsumption(date, refuelingPositions, trips) : 0
56
56
  const distance = summaryByDevice.distance
57
- const spentFuel = calculateConsumption(d, { trips: tripsByDay, stops: [], route: routeByDay }, odooAvgConsumption)
57
+ const spentFuel = calculateConsumption(d, { trips: tripsByDay, stops: [], route: routeByDay, summary: summaryByDevice }, odooAvgConsumption)
58
58
 
59
59
  const dataRow = {
60
60
  date,
package/src/index.js CHANGED
@@ -193,5 +193,15 @@ function Reports (config, axios, cookieJar) {
193
193
  this.performanceReportToExcel = (userData, reportData) => {
194
194
  return require('./partnerReports/performance-report').exportPerformanceReportToExcel(userData, reportData)
195
195
  }
196
+
197
+ this.dailyUseReport = (from, to, userData) => {
198
+ return require('./partnerReports/dailyuse-report').createDailyUseReport(from, to, userData, this.traccar)
199
+ }
200
+ this.dailyUseReportToPDF = (userData, reportData) => {
201
+ return require('./partnerReports/dailyuse-report').exportDailyUseReportToPDF(userData, reportData)
202
+ }
203
+ this.dailyUseReportToExcel = (userData, reportData) => {
204
+ return require('./partnerReports/dailyuse-report').exportDailyUseReportToExcel(userData, reportData)
205
+ }
196
206
  }
197
207
  module.exports = Reports
@@ -1,7 +1,11 @@
1
1
  const traccarHelper = require('../util/traccar')
2
2
  const { isInsideTimetable } = require('../util/trips')
3
- const { convertFromUTCDate } = require('../util/utils')
3
+ const { convertFromUTCDate, getTranslations, convertMS} = require('../util/utils')
4
4
  const automaticReports = require('../automaticReports')
5
+ const jsPDF = require("jspdf");
6
+ const {getStyle} = require("../reportStyle");
7
+ const {getUserPartner} = require("fleetmap-partners");
8
+ const {addTable} = require("../util/pdfDocument");
5
9
 
6
10
  async function createDailyUseReport (from, to, userData, traccar) {
7
11
  const reportData = []
@@ -77,4 +81,77 @@ function processDeviceData (allInOne, d, userData) {
77
81
  }
78
82
  }
79
83
 
84
+ function exportDailyUseReportToPDF (userData, reportData) {
85
+ const translations = getTranslations(userData)
86
+
87
+ const headers = [
88
+ translations.report.vehicle,
89
+ 'Utilisation',
90
+ 'Conduite',
91
+ 'Ralenti',
92
+ 'Totale (L)',
93
+ 'Conduite (L)',
94
+ 'Ralenti (L)',
95
+ 'Conduite (Km)',
96
+ 'Économique',
97
+ 'Économique (L)',
98
+ 'Économique (Km)',
99
+ 'Cruise Control',
100
+ 'Cruise Control (L)',
101
+ 'Cruise Control (Km)',
102
+ 'Tour moteur élevé',
103
+ 'Accéleration brusque (Sum)',
104
+ 'Freinage brusque (Sum)',
105
+ 'Virages brusque'
106
+ ]
107
+
108
+ const data = []
109
+ reportData.forEach(d => {
110
+ const row = [
111
+ d.device,
112
+ convertMS((d.drivingTime + d.idleTime) * 1000),
113
+ convertMS(d.drivingTime * 1000),
114
+ convertMS(d.idleTime * 1000),
115
+ d.drivingConsumption + d.idleConsumption,
116
+ d.drivingConsumption,
117
+ d.idleConsumption,
118
+ d.drivingDistance.toFixed(2),
119
+ convertMS(d.economicTime * 1000),
120
+ d.economicConsumption.toFixed(1),
121
+ d.economicDistance.toFixed(2),
122
+ convertMS(d.cruiseControlTime * 1000),
123
+ d.cruiseControlConsumption.toFixed(1),
124
+ d.cruiseControlDistance.toFixed(2),
125
+ convertMS(d.highEngineRPM * 1000),
126
+ d.hardAcceleration,
127
+ d.hardBraking,
128
+ d.hardCornering
129
+ ]
130
+ data.push(row)
131
+ })
132
+
133
+ const doc = new jsPDF.jsPDF('l')
134
+ const style = getStyle(getUserPartner(userData.user))
135
+
136
+ const footValues = []
137
+
138
+ doc.setFontSize(11)
139
+ doc.text(new Date(userData.from).toLocaleString() + ' - ' + new Date(userData.to).toLocaleString(), 20, 33)
140
+
141
+ style.headerFontSize = 8
142
+ style.bodyFontSize = 7
143
+ const columnStyles = {}
144
+ for (let i = 1; i < 18; i++) {
145
+ columnStyles[i] = { halign: 'right' }
146
+ }
147
+ addTable(doc, headers, data, footValues, style, 40, columnStyles)
148
+ return doc
149
+ }
150
+
151
+ function exportDailyUseReportToExcel (userData, reportData) {
152
+
153
+ }
154
+
80
155
  exports.createDailyUseReport = createDailyUseReport
156
+ exports.exportDailyUseReportToPDF = exportDailyUseReportToPDF
157
+ exports.exportDailyUseReportToExcel = exportDailyUseReportToExcel
@@ -314,7 +314,7 @@ function exportPerformanceReportToExcel (userData, reportData) {
314
314
 
315
315
  let data = []
316
316
  data = data.concat([{}])
317
- /*data = data.concat(reportData.map(d => {
317
+ data = data.concat(reportData.map(d => {
318
318
  return {
319
319
  name: d.device,
320
320
  totalUse: convertMS((d.drivingTime + d.idleTime) * 1000),
@@ -323,21 +323,19 @@ function exportPerformanceReportToExcel (userData, reportData) {
323
323
  totalConsumption: d.drivingConsumption + d.idleConsumption,
324
324
  drivingConsumption: d.drivingConsumption,
325
325
  idleConsumption: d.idleConsumption,
326
- drivingDistance: d.drivingDistance,
326
+ drivingDistance: Number(d.drivingDistance.toFixed(2)),
327
327
  economicTime: convertMS(d.economicTime * 1000),
328
- economicConsumption: d.economicConsumption,
329
- economicDistance: d.economicDistance,
328
+ economicConsumption: Number(d.economicConsumption.toFixed(1)),
329
+ economicDistance: Number(d.economicDistance.toFixed(2)),
330
330
  cruiseControlTime: convertMS(d.cruiseControlTime * 1000),
331
- cruiseControlConsumption: d.cruiseControlConsumption,
332
- cruiseControlDistance: d.cruiseControlDistance,
331
+ cruiseControlConsumption: Number(d.cruiseControlConsumption.toFixed(1)),
332
+ cruiseControlDistance: Number(d.cruiseControlDistance.toFixed(2)),
333
333
  highEngineRPM: d.highEngineRPM,
334
334
  hardAcceleration: d.hardAcceleration,
335
335
  hardBraking: d.hardBraking,
336
336
  hardCornering: d.hardCornering
337
337
  }
338
- }))*/
339
-
340
- console.log(data)
338
+ }))
341
339
 
342
340
  return {
343
341
  headers,
@@ -16,7 +16,7 @@ axiosCookieJarSupport(axios)
16
16
 
17
17
  const getReports = async (email, password) => {
18
18
  try {
19
- // console.log('email / pass', process.env.email || email, process.env.password || password)
19
+ console.log('email / pass', process.env.email || email, process.env.password || password)
20
20
  await new SessionApi(traccarConfig, null, axios).sessionPost(email || process.env.email, password || process.env.password)
21
21
  return new Index(traccarConfig, axios, cookieJar)
22
22
  } catch (e) {
@@ -1,7 +1,9 @@
1
1
  const { getReports } = require('./index')
2
- const { createPerformanceReport } = require('../partnerReports/performance-report')
2
+ const { createPerformanceReport, exportPerformanceReportToExcel } = require('../partnerReports/performance-report')
3
3
  const assert = require('assert')
4
4
  const { convertMS } = require('../util/utils')
5
+ const xlsx = require("@jcardus/json-as-xlsx");
6
+
5
7
  // eslint-disable-next-line no-undef
6
8
  describe('performance', function () {
7
9
  // eslint-disable-next-line no-undef
@@ -15,9 +17,10 @@ describe('performance', function () {
15
17
  userData,
16
18
  report.traccar)
17
19
  console.log(data)
20
+
18
21
  assert.equal(data[0].consumption, 19.799999999999997)
19
- assert.equal(data[0].distance, 326.7657)
20
- assert.equal(convertMS(data[1].time * 1000, false), '08:19')
22
+ assert.equal(data[0].distance, 326.8844199999999)
23
+ assert.equal(convertMS(data[1].time * 1000, false), '08:31')
21
24
  }, 8000000)
22
25
 
23
26
  // eslint-disable-next-line no-undef
@@ -33,4 +36,21 @@ describe('performance', function () {
33
36
  console.log(data)
34
37
  assert.equal(data[0].consumption, 168.51989999999998)
35
38
  }, 8000000)
39
+
40
+ it('performance report export excel', async () => {
41
+ const report = await getReports()
42
+ const userData = await report.getUserData()
43
+ const data = await createPerformanceReport(
44
+ new Date(Date.UTC(2023, 6, 1, 0, 0, 0, 0)),
45
+ new Date(Date.UTC(2023, 6, 17, 23, 59, 59, 0)),
46
+ userData,
47
+ report.traccar)
48
+ console.log(data)
49
+ const excel = exportPerformanceReportToExcel(userData, data)
50
+ xlsx([{
51
+ sheet: 'Sheet1',
52
+ columns: excel.headers,
53
+ content: excel.data
54
+ }], excel.settings)
55
+ }, 8000000)
36
56
  })
@@ -110,8 +110,6 @@ async function processDevices (from, to, devices, userData, data) {
110
110
  const startDate = isClientSide() ? startDateLocal : convertFromLocal(startDateLocal, userData.user.attributes.timezone)
111
111
  const endDate = isClientSide() ? endDateLocal : convertFromLocal(endDateLocal, userData.user.attributes.timezone)
112
112
 
113
- console.log(startDate, endDate)
114
-
115
113
  const { routeByDay, zoneInOutDayData } = await getDataByDay(d, date, { route: deviceRoute, zoneInOutData: filteredByGeofence }, userData)
116
114
 
117
115
  const firstIn = zoneInOutDayData.find(z => z.inTime && new Date(z.inTime.fixTime) > startDate)
@@ -147,8 +145,6 @@ async function processDevices (from, to, devices, userData, data) {
147
145
  const startDate = isClientSide() ? startDateLocal : convertFromLocal(startDateLocal, userData.user.attributes.timezone)
148
146
  const endDate = isClientSide() ? endDateLocal : convertFromLocal(endDateLocal, userData.user.attributes.timezone)
149
147
 
150
- console.log(startDate, endDate)
151
-
152
148
  const { routeByDay, zoneInOutDayData } = await getDataByDay(d, date, { route: deviceRoute, zoneInOutData }, userData)
153
149
 
154
150
  const distanceOut = calculateDistanceOut(zoneInOutDayData, routeByDay, startDate, endDate, 'distanceOutAny', d)