@measurequick/measurequick-report-generator 1.2.79 → 1.2.81
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/index.js +3 -1
- package/package.json +1 -1
- package/report-gen-scripts/bluvac-report.js +16 -0
- package/report-gen-scripts/corrective-measures.js +116 -106
package/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import * as photosReportS3 from "./report-gen-scripts/photos-report-s3.
|
|
|
7
7
|
import * as ptcsHeatPumpReport from "./report-gen-scripts/ptcs-heat-pump-report.js";
|
|
8
8
|
import * as vitalsCoolingReport from "./report-gen-scripts/vitals-cooling-report.js";
|
|
9
9
|
import * as vitalsHeatingReport from "./report-gen-scripts/vitals-heating-report.js";
|
|
10
|
+
import * as bluvacReport from "./report-gen-scripts/bluvac-report.js";
|
|
10
11
|
|
|
11
12
|
export function getReport(payload) {
|
|
12
13
|
switch (payload.meta.report_type) {
|
|
@@ -15,9 +16,10 @@ export function getReport(payload) {
|
|
|
15
16
|
case "MeasurementDetails": return measurementDetails.getReport(payload);
|
|
16
17
|
case "CorrectiveMeasures": return correctiveMeasures.getReport(payload);
|
|
17
18
|
case "PhotosReport": return photosReport.getReport(payload);
|
|
18
|
-
case "PhotosReportS3":
|
|
19
|
+
case "PhotosReportS3": return photosReportS3.getReport(payload);
|
|
19
20
|
case "PtcsHeatPumpReport": return ptcsHeatPumpReport.getReport(payload);
|
|
20
21
|
case "VitalsCoolingReport": return vitalsCoolingReport.getReport(payload, false);
|
|
21
22
|
case "VitalsHeatingReport": return vitalsHeatingReport.getReport(payload, false);
|
|
23
|
+
case "BluVac Report": return bluvacReport.getReport(payload);
|
|
22
24
|
}
|
|
23
25
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PDFDocument } from 'pdf-lib';
|
|
2
|
+
import * as base64 from '../base-64/icons.js';
|
|
3
|
+
import * as pdfCooling from '../base-64/system-info-cooling.js';
|
|
4
|
+
import * as pdfHeating from '../base-64/system-info-heating.js';
|
|
5
|
+
import * as util from '../util.js';
|
|
6
|
+
|
|
7
|
+
export async function getReport(payload) { console.log("BluVac Report");
|
|
8
|
+
try {
|
|
9
|
+
const pdfDoc = await PDFDocument.load(util._base64ToArrayBuffer(payload.meta.base64));
|
|
10
|
+
const pdfBase64 = await pdfDoc.saveAsBase64({ dataUri: true });
|
|
11
|
+
return pdfBase64;
|
|
12
|
+
} catch (e) {
|
|
13
|
+
console.log(e);
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
PDFDocument
|
|
3
|
+
} from 'pdf-lib';
|
|
2
4
|
import * as base64 from '../base-64/icons.js';
|
|
3
5
|
import * as pdf from '../base-64/corrective-measures-page.js';
|
|
4
6
|
import * as pdf2 from '../base-64/corrective-measures-page-2.js';
|
|
@@ -6,125 +8,133 @@ import * as util from '../util.js';
|
|
|
6
8
|
|
|
7
9
|
let embeddedIcons = {};
|
|
8
10
|
|
|
9
|
-
export async function getReport(payload) {
|
|
11
|
+
export async function getReport(payload) {
|
|
12
|
+
console.log("Corrective Measures - Payload:");
|
|
13
|
+
console.log(payload);
|
|
10
14
|
|
|
11
15
|
try {
|
|
12
|
-
|
|
16
|
+
let b64 = payload.tests.length < 2 ? pdf : pdf2;
|
|
13
17
|
|
|
14
|
-
|
|
18
|
+
const pdfDoc = await PDFDocument.load(util._base64ToArrayBuffer(b64.base64));
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
const form = pdfDoc.getForm();
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
let labels = ["iconRangeHigh", "iconRangeLow", "iconRangeNormal", "iconTesto", "iconCalculator", "iconFieldpiece",
|
|
23
|
+
"iconUei", "iconSporlanPro", "iconSporlanLegacy", "iconIconnect", "iconImanifold", "iconSensi", "iconDg8",
|
|
24
|
+
"iconBluflame", "iconRedfish510", "iconRedfish510333", "iconRedfish550", "iconDg1000", "iconTrueflow", "iconThumbprintRed", "iconThumbprintGreen", "iconThumbprintYellow", "whiteBox"
|
|
25
|
+
];
|
|
26
|
+
for (let label of labels) embeddedIcons[label] = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64[label]));
|
|
27
|
+
const mqLogoBytes = util._base64ToArrayBuffer(base64.mqLogo);
|
|
28
|
+
const mqLogo = await pdfDoc.embedPng(mqLogoBytes);
|
|
24
29
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
// embed company logo and profile picture
|
|
31
|
+
let profileImage, companyImage;
|
|
32
|
+
let profileImageType = util.checkProfilePicture(payload.meta);
|
|
33
|
+
let companyImageType = util.checkCompanyLogo(payload.meta);
|
|
34
|
+
if (profileImageType) {
|
|
35
|
+
if (profileImageType.shape == "square") profileImage = payload.meta.profile_settings.profilePicSquareBase64;
|
|
36
|
+
else if (profileImageType.shape == "circle") profileImage = payload.meta.profile_settings.profilePicCircleBase64;
|
|
37
|
+
if (profileImageType.type == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(profileImage));
|
|
38
|
+
else if (profileImageType.type == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(profileImage));
|
|
39
|
+
}
|
|
40
|
+
if (companyImageType == "jpg") companyImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
|
|
41
|
+
else if (companyImageType == "png") companyImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
|
|
37
42
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
43
|
+
// print company logo and profile picture
|
|
44
|
+
if (profileImage && companyImage) {
|
|
45
|
+
form.getButton("ProfilePicture").setImage(profileImage);
|
|
46
|
+
form.getButton("HalfWidthLogo").setImage(companyImage);
|
|
47
|
+
if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
|
|
48
|
+
form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
|
|
49
|
+
} else if (profileImage) {
|
|
50
|
+
form.getButton("ProfilePicture").setImage(profileImage);
|
|
51
|
+
form.getButton("HalfWidthLogo").setImage(mqLogo);
|
|
52
|
+
if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
|
|
53
|
+
form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
|
|
54
|
+
} else {
|
|
55
|
+
if (companyImage) form.getButton("FullWidthLogo").setImage(companyImage);
|
|
56
|
+
else form.getButton("FullWidthLogo").setImage(mqLogo);
|
|
57
|
+
}
|
|
53
58
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
let scoreHeader = payload.tests.length > 1 ? "Test In Score" : "Your System Score";
|
|
60
|
+
form.getTextField("YourSystemScoreHeader").setText(scoreHeader);
|
|
61
|
+
let systemScorePercentage = payload.tests[0].testInfo.data.vitals_score ? +payload.tests[0].testInfo.data.vitals_score.toFixed(0) : 0;
|
|
62
|
+
let systemScoreGrade = util.getGradeFromScore(systemScorePercentage);
|
|
63
|
+
let systemScoreColor = util.getColorFromGrade(systemScoreGrade);
|
|
64
|
+
if (!payload.tests[0].testInfo.data.vitals_score) {
|
|
65
|
+
systemScorePercentage = "--";
|
|
66
|
+
systemScoreGrade = "";
|
|
67
|
+
} else systemScorePercentage += "%";
|
|
68
|
+
form.getTextField(`YourSystemScore${systemScoreColor}`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
|
|
69
|
+
|
|
70
|
+
if (payload.tests.length > 1) {
|
|
71
|
+
form.getTextField("YourSystemScoreHeader2").setText("Test Out Score");
|
|
72
|
+
systemScorePercentage = payload.tests[1].testInfo.data.vitals_score ? +payload.tests[1].testInfo.data.vitals_score.toFixed(0) : 0;
|
|
73
|
+
systemScoreGrade = util.getGradeFromScore(systemScorePercentage);
|
|
74
|
+
systemScoreColor = util.getColorFromGrade(systemScoreGrade);
|
|
75
|
+
if (!payload.tests[1].testInfo.data.vitals_score) {
|
|
60
76
|
systemScorePercentage = "--";
|
|
61
77
|
systemScoreGrade = "";
|
|
62
78
|
} else systemScorePercentage += "%";
|
|
63
|
-
form.getTextField(`YourSystemScore${systemScoreColor}`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
|
|
64
|
-
|
|
65
|
-
if (payload.tests.length > 1) {
|
|
66
|
-
form.getTextField("YourSystemScoreHeader2").setText("Test Out Score");
|
|
67
|
-
systemScorePercentage = payload.tests[1].testInfo.data.vitals_score ? +payload.tests[1].testInfo.data.vitals_score.toFixed(0) : 0;
|
|
68
|
-
systemScoreGrade = util.getGradeFromScore(systemScorePercentage);
|
|
69
|
-
systemScoreColor = util.getColorFromGrade(systemScoreGrade);
|
|
70
|
-
if (!payload.tests[1].testInfo.data.vitals_score) {
|
|
71
|
-
systemScorePercentage = "--";
|
|
72
|
-
systemScoreGrade = "";
|
|
73
|
-
} else systemScorePercentage += "%";
|
|
74
|
-
form.getTextField(`YourSystemScore${systemScoreColor}2`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
|
|
75
|
-
}
|
|
79
|
+
form.getTextField(`YourSystemScore${systemScoreColor}2`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
|
|
80
|
+
}
|
|
76
81
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
form.getTextField(`Block1-Title`).setText(payload.system_data.title1);
|
|
83
|
+
for (let rowNum = 1; rowNum < 12; rowNum++) {
|
|
84
|
+
let measurement = payload.system_data[`block1`][rowNum - 1];
|
|
85
|
+
if (measurement) form.getTextField(`Block1-Row${rowNum}`).setText(`${measurement.value}`);
|
|
86
|
+
else break;
|
|
87
|
+
}
|
|
83
88
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
89
|
+
form.getTextField(`Block2-Title`).setText(payload.system_data.title2);
|
|
90
|
+
for (let rowNum = 1; rowNum < 12; rowNum++) {
|
|
91
|
+
let measurement = payload.system_data[`block2`][rowNum - 1];
|
|
92
|
+
if (measurement) {
|
|
93
|
+
form.getTextField(`Block2-Row${rowNum}-Col1`).setText(measurement.label);
|
|
94
|
+
let val = measurement.value ? measurement.value : payload.equipment[measurement.ref];
|
|
95
|
+
form.getTextField(`Block2-Row${rowNum}-Col2`).setText(`${val}`);
|
|
96
|
+
let icon; // = util.getRangeIcon(test, measurement.ref);
|
|
97
|
+
if (icon) form.getButton(`Block2-Row${rowNum}-Col3`).setImage(icon);
|
|
98
|
+
} else break;
|
|
99
|
+
}
|
|
95
100
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
|
|
101
|
+
form.getTextField(`Block3-Title`).setText(payload.system_data.title3);
|
|
102
|
+
let caIndex = 0;
|
|
103
|
+
let header;
|
|
104
|
+
for (let colNum = 1; colNum < 4; colNum++) {
|
|
105
|
+
let row = 1;
|
|
106
|
+
let caMeas = payload.system_data.block3[caIndex];
|
|
107
|
+
if (caMeas && header == caMeas.ref) {
|
|
108
|
+
form.getTextField(`CA-Col${colNum}-Row${row}-Bold`).setText(`${caMeas.ref} (Cont.)`);
|
|
109
|
+
row++;
|
|
110
|
+
}
|
|
111
|
+
for (let rowNum = row; rowNum < 24; rowNum++) {
|
|
112
|
+
caMeas = payload.system_data.block3[caIndex];
|
|
113
|
+
console.log(caMeas);
|
|
114
|
+
if (caMeas && (payload.meta.report_type == 'CorrectiveMeasures' || (payload.meta.report_type == 'FullReport' && caMeas.ref != 'Condensate Drain System' && caMeas.ref != 'Outdoor Equipment' && caMeas.ref != 'Indoor Equipment' && caMeas.ref != 'Cooling Efficiency'))) {
|
|
115
|
+
if (header !== caMeas.ref) {
|
|
116
|
+
if (rowNum + 2 > 23) {
|
|
117
|
+
colNum++;
|
|
118
|
+
rowNum = 1;
|
|
119
|
+
} else {
|
|
120
|
+
if (rowNum != 1) rowNum++;
|
|
121
|
+
form.getTextField(`CA-Col${colNum}-Row${rowNum}-Bold`).setText(caMeas.ref);
|
|
122
|
+
rowNum++;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
header = caMeas.ref;
|
|
126
|
+
form.getTextField(`CA-Col${colNum}-Row${rowNum}`).setText(caMeas.label);
|
|
127
|
+
caIndex++;
|
|
128
|
+
} else caIndex++;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
125
131
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
132
|
+
form.flatten();
|
|
133
|
+
return await pdfDoc.saveAsBase64({
|
|
134
|
+
dataUri: true
|
|
135
|
+
});
|
|
136
|
+
} catch (error) {
|
|
137
|
+
console.log(error)
|
|
138
|
+
}
|
|
129
139
|
|
|
130
140
|
}
|