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.
- package/.idea/workspace.xml +1 -0
- package/package.json +1 -1
- package/src/kms-report.js +97 -73
package/.idea/workspace.xml
CHANGED
|
@@ -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
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.
|
|
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 (
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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
|
-
|
|
204
|
+
const style = getStyle(getUserPartner(userData.user))
|
|
175
205
|
|
|
176
|
-
|
|
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.
|
|
224
|
+
if(userData.groupByDay){
|
|
194
225
|
headers.push(
|
|
195
|
-
{label: translations.report.
|
|
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.
|
|
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
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
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
|
-
|
|
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
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
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
|
|