fleetmap-reports 1.0.211 → 1.0.215

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.
@@ -4,6 +4,7 @@
4
4
  <list default="true" id="eb665c86-c893-4333-bd2a-721dc27980b9" name="Changes" comment="try catch on pdf addImage">
5
5
  <change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
6
6
  <change beforePath="$PROJECT_DIR$/src/activity-report.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/activity-report.js" afterDir="false" />
7
+ <change beforePath="$PROJECT_DIR$/src/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/index.js" afterDir="false" />
7
8
  <change beforePath="$PROJECT_DIR$/src/index.test.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/index.test.js" afterDir="false" />
8
9
  <change beforePath="$PROJECT_DIR$/src/kms-report.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/kms-report.js" afterDir="false" />
9
10
  <change beforePath="$PROJECT_DIR$/src/util/pdfDocument.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/util/pdfDocument.js" afterDir="false" />
@@ -143,6 +144,7 @@
143
144
  <workItem from="1637227826845" duration="1275000" />
144
145
  <workItem from="1637441942952" duration="4543000" />
145
146
  <workItem from="1637670815688" duration="2973000" />
147
+ <workItem from="1637674107929" duration="11518000" />
146
148
  </task>
147
149
  <task id="LOCAL-00001" summary="Fix getStyle">
148
150
  <created>1636983717385</created>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetmap-reports",
3
- "version": "1.0.211",
3
+ "version": "1.0.215",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
package/src/index.js CHANGED
@@ -23,7 +23,7 @@ function Reports(config, axios) {
23
23
  return require('./speeding-report').createSpeedingReport(from, to, userData, this.traccar, roadSpeedLimits)
24
24
  }
25
25
 
26
- this.speedingReportToPDF = (userData, reportData) => {
26
+ this.speedingReportToPDF = async (userData, reportData) => {
27
27
  return require('./speeding-report').exportSpeedingReportToPDF(userData, reportData)
28
28
  }
29
29
 
package/src/index.test.js CHANGED
@@ -37,8 +37,8 @@ describe('test reports', function() {
37
37
  })
38
38
 
39
39
 
40
- //const pdf = report.tripReportToPDF(userData, reportData)
40
+ const pdf = report.kmsReportToPDF(userData, reportResult)
41
41
 
42
- //console.log(pdf)
42
+ console.log(pdf)
43
43
  })
44
44
  })
package/src/kms-report.js CHANGED
@@ -6,6 +6,7 @@ const {getStyle} = require("./reportStyle");
6
6
  const {headerFromUser,addTable} = require("./util/pdfDocument");
7
7
  const {getUserPartner} = require("fleetmap-partners");
8
8
  const automaticReports = require("./automaticReports");
9
+ const {convertMS} = require("./util/utils");
9
10
 
10
11
 
11
12
  let traccarInstance
@@ -111,9 +112,14 @@ async function createKmsReport(from, to, userData, traccar) {
111
112
  async function exportKmsReportToPDF(userData, reportData) {
112
113
  const lang = userData.user.attributes.lang
113
114
  const translations = messages[lang] ? messages[lang] : messages['en-GB']
115
+ const kmsData = userData.byDriver ? reportData.drivers : reportData.devices
114
116
 
115
117
  const headers = []
116
- if(userData.byDriver) {
118
+ if(userData.groupByDay) {
119
+ headers.push(translations.report.date,
120
+ translations.report.distance)
121
+ }
122
+ else if(userData.byDriver) {
117
123
  headers.push(translations.report.driver,
118
124
  translations.report.group,
119
125
  translations.report.distance)
@@ -123,57 +129,96 @@ async function exportKmsReportToPDF(userData, reportData) {
123
129
  translations.report.group,
124
130
  translations.report.distance)
125
131
  }
126
- if (reportData.devices || reportData.drivers) {
127
- const doc = new jsPDF.jsPDF('l');
132
+ if (kmsData) {
133
+ let first = true
134
+ const doc = userData.groupByDay ? new jsPDF.jsPDF() : new jsPDF.jsPDF('l')
128
135
  await headerFromUser(doc, translations.report.titleSpeedingReport, userData.user)
129
136
 
130
- let data = []
131
- doc.setFontSize(10)
132
- doc.text(new Date(reportData.from).toLocaleString() + ' - ' + new Date(reportData.to).toLocaleString(), 20, 30 )
133
- if(userData.byDriver) {
134
- reportData.drivers.forEach(d => {
135
- const group = userData.groups.find(g => g.drivers.includes(d.driver.id))
136
-
137
- const temp = [
138
- d.driver.name,
139
- group ? group.name : '',
140
- Number((d.summary.distance / 1000).toFixed(0)),
141
- ]
142
- data.push(temp)
143
- })
144
- } else {
145
- reportData.devices.forEach(d => {
146
- const group = userData.groups.find(g => d.device.groupId === g.id)
147
-
148
- const temp = [
149
- d.summary.deviceName,
150
- d.device.model,
151
- group ? group.name : '',
152
- Number((d.summary.distance / 1000).toFixed(0))
153
- ]
137
+ if (userData.groupByDay) {
138
+ for (const d of kmsData) {
139
+ const name = userData.byDriver ? d.driver.name : d.device.name
140
+ const group = userData.byDriver ? userData.groups.find(g => g.drivers.includes(d.id)) : userData.groups.find(g => d.device.groupId === g.id)
141
+
142
+ let space = 0
143
+ if (!first) {
144
+ doc.addPage()
145
+ } else {
146
+ first = false
147
+ space = 8
148
+ }
149
+ doc.setFontSize(13)
150
+ doc.text(name, 20, space + 20)
151
+ doc.setFontSize(11)
152
+ doc.text(group ? translations.report.group + ': ' + group.name : '', 200, space + 20)
153
+ doc.text(new Date(d.from).toLocaleString() + ' - ' + new Date(d.to).toLocaleString(), 20, space + 25)
154
+
155
+ const data = []
156
+ d.days.forEach(day => {
157
+ const temp = [
158
+ new Date(day).toLocaleDateString(),
159
+ (day.kms/1000).toFixed(0)
160
+ ]
161
+ })
162
+
154
163
  data.push(temp)
155
- })
156
- }
157
164
 
158
- const footValues = []
159
- if(userData.byDriver) {
160
- footValues.push(
161
- 'Total:' + reportData.drivers.length,
162
- '',
163
- (reportData.drivers.reduce((a, b) => a + b.summary.distance, 0)/1000).toFixed(0)
164
- )
165
+ const footValues = []
166
+ footValues.push(
167
+ '',
168
+ (d.days.reduce((a, b) => a + b.kms, 0)/1000).toFixed(0)
169
+ )
170
+
171
+ const style = getStyle(getUserPartner(userData.user))
172
+
173
+ addTable(doc, headers, data, footValues, style, 35)
174
+ }
165
175
  } else {
166
- footValues.push(
167
- 'Total:' + reportData.devices.length,
168
- '',
169
- '',
170
- (reportData.devices.reduce((a, b) => a + b.summary.distance, 0)/1000).toFixed(0),
171
- )
172
- }
176
+ if (userData.byDriver) {
177
+ reportData.drivers.forEach(d => {
178
+ const group = userData.groups.find(g => g.drivers.includes(d.driver.id))
179
+
180
+ const temp = [
181
+ d.driver.name,
182
+ group ? group.name : '',
183
+ Number((d.summary.distance / 1000).toFixed(0)),
184
+ ]
185
+ data.push(temp)
186
+ })
187
+ } else {
188
+ reportData.devices.forEach(d => {
189
+ const group = userData.groups.find(g => d.device.groupId === g.id)
190
+
191
+ const temp = [
192
+ d.summary.deviceName,
193
+ d.device.model,
194
+ group ? group.name : '',
195
+ Number((d.summary.distance / 1000).toFixed(0))
196
+ ]
197
+ data.push(temp)
198
+ })
199
+ }
200
+
201
+ const footValues = []
202
+ if(userData.byDriver) {
203
+ footValues.push(
204
+ 'Total:' + reportData.drivers.length,
205
+ '',
206
+ (reportData.drivers.reduce((a, b) => a + b.summary.distance, 0)/1000).toFixed(0)
207
+ )
208
+ } else {
209
+ footValues.push(
210
+ 'Total:' + reportData.devices.length,
211
+ '',
212
+ '',
213
+ (reportData.devices.reduce((a, b) => a + b.summary.distance, 0)/1000).toFixed(0),
214
+ )
215
+ }
173
216
 
174
- const style = getStyle(getUserPartner(userData.user))
217
+ const style = getStyle(getUserPartner(userData.user))
175
218
 
176
- return addTable(doc, headers, data, footValues, style, 35)
219
+ addTable(doc, headers, data, footValues, style, 35)
220
+ }
221
+ return doc
177
222
  }
178
223
  }
179
224
 
@@ -190,55 +235,48 @@ function exportKmsReportToExcel(userData, reportData) {
190
235
 
191
236
  const headers = []
192
237
 
193
- if(userData.byDriver) {
238
+ if(userData.groupByDay){
194
239
  headers.push(
195
- {label: translations.report.driver, value: 'driver'},
240
+ {label: translations.report.vehicle, value: 'name'},
196
241
  {label: translations.report.group, value: 'group'},
242
+ {label: translations.report.date, value: 'date'},
197
243
  {label: translations.report.distance, value: 'distance'})
198
- } else {
244
+ } else if(userData.byDriver) {
199
245
  headers.push(
200
- {label: translations.report.vehicle, value: 'name'},
246
+ {label: translations.report.driver, value: 'name'},
201
247
  {label: translations.report.group, value: 'group'},
202
248
  {label: translations.report.distance, value: 'distance'})
203
249
  }
204
250
 
205
251
  let data = []
206
- if(userData.byDriver){
207
- if (reportData.drivers) {
208
- reportData.drivers.forEach(d => {
209
- const group = userData.groups.find(g => g.drivers.includes(d.driver.id))
210
-
252
+ const info = userData.byDriver ? reportData.drivers : reportData.devices
253
+ info.forEach(d => {
254
+ const group = userData.byDriver ? userData.groups.find(g => g.drivers.includes(d.driver.id)) :
255
+ userData.groups.find(g => d.device.groupId === g.id)
256
+
257
+ if(userData.groupByDay) {
258
+ data = data.concat([{}])
259
+ data = data.concat(d.days.map(a => {
260
+ return {
261
+ name: userData.byDriver ? d.driver.name : d.device.name,
262
+ group: group ? group.name : '',
263
+ date: a.date,
264
+ distance: Number((a.kms / 1000).toFixed(0))
265
+ }
266
+ }))
267
+ } else {
211
268
  data = data.concat([{
212
- driver: d.driver.name,
269
+ name: userData.byDriver ? d.driver.name : d.summary.deviceName,
213
270
  group: group ? group.name : '',
214
271
  distance: Number((d.summary.distance / 1000).toFixed(0))
215
272
  }])
216
- })
217
- console.log(data)
218
- return {
219
- headers,
220
- data,
221
- settings
222
273
  }
223
- }
224
- } else {
225
- if (reportData.devices) {
226
- reportData.devices.forEach(d => {
227
- const group = userData.groups.find(g => d.device.groupId === g.id)
274
+ })
228
275
 
229
- data = data.concat([{
230
- name: d.summary.deviceName,
231
- group: group ? group.name : '',
232
- distance: Number((d.summary.distance / 1000).toFixed(0))
233
- }])
234
- })
235
- console.log(data)
236
- return {
237
- headers,
238
- data,
239
- settings
240
- }
241
- }
276
+ return {
277
+ headers,
278
+ data,
279
+ settings
242
280
  }
243
281
  }
244
282