fleetmap-reports 1.0.211 → 1.0.212

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.
@@ -143,6 +143,7 @@
143
143
  <workItem from="1637227826845" duration="1275000" />
144
144
  <workItem from="1637441942952" duration="4543000" />
145
145
  <workItem from="1637670815688" duration="2973000" />
146
+ <workItem from="1637674107929" duration="8163000" />
146
147
  </task>
147
148
  <task id="LOCAL-00001" summary="Fix getStyle">
148
149
  <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.212",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
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,82 @@ 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
+ const doc = userData.groupByDay ? new jsPDF.jsPDF() : new jsPDF.jsPDF('l')
128
134
  await headerFromUser(doc, translations.report.titleSpeedingReport, userData.user)
129
135
 
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
+ if (userData.groupByDay) {
137
+ for (const d of kmsData) {
138
+ const name = userData.byDriver ? d.driver.name : deviceName(d.device)
139
+ const group = userData.byDriver ? userData.groups.find(g => g.drivers.includes(d.id)) : userData.groups.find(g => d.device.groupId === g.id)
140
+
141
+ let space = 0
142
+ if (!first) {
143
+ doc.addPage()
144
+ } else {
145
+ first = false
146
+ space = 8
147
+ }
148
+ doc.setFontSize(13)
149
+ doc.text(name, 20, space + 20)
150
+ doc.setFontSize(11)
151
+ doc.text(group ? translations.report.group + ': ' + group.name : '', 200, space + 20)
152
+ doc.text(new Date(d.from).toLocaleString() + ' - ' + new Date(d.to).toLocaleString(), 20, space + 25)
136
153
 
154
+ const data = []
137
155
  const temp = [
138
156
  d.driver.name,
139
157
  group ? group.name : '',
140
158
  Number((d.summary.distance / 1000).toFixed(0)),
141
159
  ]
142
160
  data.push(temp)
143
- })
161
+ }
144
162
  } 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
- ]
154
- data.push(temp)
155
- })
156
- }
163
+ if (userData.byDriver) {
164
+ reportData.drivers.forEach(d => {
165
+ const group = userData.groups.find(g => g.drivers.includes(d.driver.id))
166
+
167
+ const temp = [
168
+ d.driver.name,
169
+ group ? group.name : '',
170
+ Number((d.summary.distance / 1000).toFixed(0)),
171
+ ]
172
+ data.push(temp)
173
+ })
174
+ } else {
175
+ reportData.devices.forEach(d => {
176
+ const group = userData.groups.find(g => d.device.groupId === g.id)
177
+
178
+ const temp = [
179
+ d.summary.deviceName,
180
+ d.device.model,
181
+ group ? group.name : '',
182
+ Number((d.summary.distance / 1000).toFixed(0))
183
+ ]
184
+ data.push(temp)
185
+ })
186
+ }
157
187
 
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
- } 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
- }
188
+ const footValues = []
189
+ if(userData.byDriver) {
190
+ footValues.push(
191
+ 'Total:' + reportData.drivers.length,
192
+ '',
193
+ (reportData.drivers.reduce((a, b) => a + b.summary.distance, 0)/1000).toFixed(0)
194
+ )
195
+ } else {
196
+ footValues.push(
197
+ 'Total:' + reportData.devices.length,
198
+ '',
199
+ '',
200
+ (reportData.devices.reduce((a, b) => a + b.summary.distance, 0)/1000).toFixed(0),
201
+ )
202
+ }
173
203
 
174
- const style = getStyle(getUserPartner(userData.user))
204
+ const style = getStyle(getUserPartner(userData.user))
175
205
 
176
- return addTable(doc, headers, data, footValues, style, 35)
206
+ return addTable(doc, headers, data, footValues, style, 35)
207
+ }
177
208
  }
178
209
  }
179
210
 
@@ -190,55 +221,48 @@ function exportKmsReportToExcel(userData, reportData) {
190
221
 
191
222
  const headers = []
192
223
 
193
- if(userData.byDriver) {
224
+ if(userData.groupByDay){
194
225
  headers.push(
195
- {label: translations.report.driver, value: 'driver'},
226
+ {label: translations.report.vehicle, value: 'name'},
196
227
  {label: translations.report.group, value: 'group'},
228
+ {label: translations.report.date, value: 'date'},
197
229
  {label: translations.report.distance, value: 'distance'})
198
- } else {
230
+ } else if(userData.byDriver) {
199
231
  headers.push(
200
- {label: translations.report.vehicle, value: 'name'},
232
+ {label: translations.report.driver, value: 'name'},
201
233
  {label: translations.report.group, value: 'group'},
202
234
  {label: translations.report.distance, value: 'distance'})
203
235
  }
204
236
 
205
237
  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
-
238
+ const info = userData.byDriver ? reportData.drivers : reportData.devices
239
+ info.forEach(d => {
240
+ const group = userData.byDriver ? userData.groups.find(g => g.drivers.includes(d.driver.id)) :
241
+ userData.groups.find(g => d.device.groupId === g.id)
242
+
243
+ if(userData.groupByDay) {
244
+ data = data.concat([{}])
245
+ data = data.concat(d.days.map(a => {
246
+ return {
247
+ name: userData.byDriver ? d.driver.name : d.summary.deviceName,
248
+ group: group ? group.name : '',
249
+ date: a.date,
250
+ distance: Number((a.kms / 1000).toFixed(0))
251
+ }
252
+ }))
253
+ } else {
211
254
  data = data.concat([{
212
- driver: d.driver.name,
255
+ name: userData.byDriver ? d.driver.name : d.summary.deviceName,
213
256
  group: group ? group.name : '',
214
257
  distance: Number((d.summary.distance / 1000).toFixed(0))
215
258
  }])
216
- })
217
- console.log(data)
218
- return {
219
- headers,
220
- data,
221
- settings
222
259
  }
223
- }
224
- } else {
225
- if (reportData.devices) {
226
- reportData.devices.forEach(d => {
227
- const group = userData.groups.find(g => d.device.groupId === g.id)
260
+ })
228
261
 
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
- }
262
+ return {
263
+ headers,
264
+ data,
265
+ settings
242
266
  }
243
267
  }
244
268