@measurequick/measurequick-report-generator 1.2.56 → 1.2.58

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.
@@ -8,174 +8,175 @@ import * as pdf from '../base-64/measurement-details-page.js';
8
8
  let embeddedIconsTestIn = {};
9
9
  let embeddedIconsTestOut = {};
10
10
 
11
- export async function getReport(payload) {
12
- console.log(payload);
13
- const pdfDocPg1 = await PDFDocument.load(util._base64ToArrayBuffer(pdf.base64));
14
- const pdfDocPg2 = await PDFDocument.load(util._base64ToArrayBuffer(pdf.base64));
15
-
16
- const formPg1 = pdfDocPg1.getForm();
17
- const formPg2 = pdfDocPg2.getForm();
18
-
19
- let mapImagePg1, mapImagePg2;
20
- if (payload.map) {
21
- if (payload.map.includes("image/jpeg")) {
22
- mapImagePg1 = await pdfDocPg1.embedJpg(util._base64ToArrayBuffer(payload.map));
23
- mapImagePg2 = await pdfDocPg2.embedJpg(util._base64ToArrayBuffer(payload.map));
24
- } else if (payload.map.includes("image/png")) {
25
- mapImagePg1 = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(payload.map));
26
- mapImagePg2 = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(payload.map));
27
- }
28
- }
29
-
30
- let labels = ["iconRangeHigh", "iconRangeLow", "iconRangeNormal", "iconTesto", "iconCalculator", "iconFieldpiece",
31
- "iconUei", "iconSporlanPro", "iconSporlanLegacy", "iconIconnect", "iconImanifold", "iconSensi",
32
- "iconBluflame", "iconRedfish510", "iconRedfish510333", "iconRedfish550", "iconDg1000", "iconTrueflow", "iconThumbprintRed", "iconThumbprintGreen", "iconThumbprintYellow"
33
- ];
34
- for (let label of labels) embeddedIconsTestIn[label] = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(base64[label]));
35
- for (let label of labels) embeddedIconsTestOut[label] = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(base64[label]));
36
-
37
- const mqLogoBytes = util._base64ToArrayBuffer(base64.mqLogo);
38
- const mqLogoPg1 = await pdfDocPg1.embedPng(mqLogoBytes);
39
- const mqLogoPg2 = await pdfDocPg2.embedPng(mqLogoBytes);
40
-
41
- // embed company logo and profile picture
42
- let profileImagePg1, companyImagePg1, profileImagePg2, companyImagePg2;
43
- if (payload.meta.pdf_settings.includeProfilePic) {
44
- if (payload.meta.pdf_settings.shapeProfilePic && payload.meta.profile_settings.profilePicCircleBase64) {
45
- if (payload.meta.profile_settings.profilePicCircleBase64.includes("image/jpeg")) {
46
- profileImagePg1 = await pdfDocPg1.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicCircleBase64));
47
- profileImagePg2 = await pdfDocPg2.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicCircleBase64));
48
- } else if (payload.meta.profile_settings.profilePicCircleBase64.includes("image/png")) {
49
- profileImagePg1 = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicCircleBase64));
50
- profileImagePg2 = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicCircleBase64));
51
- }
52
- } else if (payload.meta.profile_settings.profilePicSquareBase64) {
53
- if (payload.meta.profile_settings.profilePicSquareBase64.includes("image/jpeg")) {
54
- profileImagePg1 = await pdfDocPg1.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicSquareBase64));
55
- profileImagePg2 = await pdfDocPg2.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicSquareBase64));
56
- } else if (payload.meta.profile_settings.profilePicSquareBase64.includes("image/png")) {
57
- profileImagePg1 = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicSquareBase64));
58
- profileImagePg2 = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicSquareBase64));
11
+ export async function getReport(payload) { console.log("Measurement Details - Payload:"); console.log(payload);
12
+ try {
13
+ const pdfDocPg1 = await PDFDocument.load(util._base64ToArrayBuffer(pdf.base64));
14
+ const pdfDocPg2 = await PDFDocument.load(util._base64ToArrayBuffer(pdf.base64));
15
+
16
+ const formPg1 = pdfDocPg1.getForm();
17
+ const formPg2 = pdfDocPg2.getForm();
18
+
19
+ let mapImagePg1, mapImagePg2;
20
+ if (payload.map) {
21
+ if (payload.map.includes("image/jpeg")) {
22
+ mapImagePg1 = await pdfDocPg1.embedJpg(util._base64ToArrayBuffer(payload.map));
23
+ mapImagePg2 = await pdfDocPg2.embedJpg(util._base64ToArrayBuffer(payload.map));
24
+ } else if (payload.map.includes("image/png")) {
25
+ mapImagePg1 = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(payload.map));
26
+ mapImagePg2 = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(payload.map));
59
27
  }
60
28
  }
61
- }
62
- if (payload.meta.pdf_settings.includeCompanyLogo && payload.meta.profile_settings.companyLogoBase64) {
63
- if (payload.meta.profile_settings.companyLogoBase64.includes("image/jpeg")) {
64
- companyImagePg1 = await pdfDocPg1.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
65
- companyImagePg2 = await pdfDocPg2.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
66
- } else if (payload.meta.profile_settings.companyLogoBase64.includes("image/png")) {
67
- companyImagePg1 = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
68
- companyImagePg2 = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
69
- }
70
- }
71
-
72
- // print company logo and profile picture
73
- if (profileImagePg1 && companyImagePg1) {
74
- formPg1.getButton("ProfilePicture").setImage(profileImagePg1);
75
- formPg1.getButton("HalfWidthLogo").setImage(companyImagePg1);
76
- formPg2.getButton("ProfilePicture").setImage(profileImagePg2);
77
- formPg2.getButton("HalfWidthLogo").setImage(companyImagePg2);
78
- if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName) {
79
- formPg1.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
80
- formPg2.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
29
+
30
+ let labels = ["iconRangeHigh", "iconRangeLow", "iconRangeNormal", "iconTesto", "iconCalculator", "iconFieldpiece",
31
+ "iconUei", "iconSporlanPro", "iconSporlanLegacy", "iconIconnect", "iconImanifold", "iconSensi",
32
+ "iconBluflame", "iconRedfish510", "iconRedfish510333", "iconRedfish550", "iconDg1000", "iconTrueflow", "iconThumbprintRed", "iconThumbprintGreen", "iconThumbprintYellow"
33
+ ];
34
+ for (let label of labels) embeddedIconsTestIn[label] = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(base64[label]));
35
+ for (let label of labels) embeddedIconsTestOut[label] = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(base64[label]));
36
+
37
+ const mqLogoBytes = util._base64ToArrayBuffer(base64.mqLogo);
38
+ const mqLogoPg1 = await pdfDocPg1.embedPng(mqLogoBytes);
39
+ const mqLogoPg2 = await pdfDocPg2.embedPng(mqLogoBytes);
40
+
41
+ // embed company logo and profile picture
42
+ let profileImagePg1, companyImagePg1, profileImagePg2, companyImagePg2;
43
+ if (payload.meta.pdf_settings.includeProfilePic) {
44
+ if (payload.meta.pdf_settings.shapeProfilePic && payload.meta.profile_settings.profilePicCircleBase64) {
45
+ if (payload.meta.profile_settings.profilePicCircleBase64.includes("image/jpeg")) {
46
+ profileImagePg1 = await pdfDocPg1.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicCircleBase64));
47
+ profileImagePg2 = await pdfDocPg2.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicCircleBase64));
48
+ } else if (payload.meta.profile_settings.profilePicCircleBase64.includes("image/png")) {
49
+ profileImagePg1 = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicCircleBase64));
50
+ profileImagePg2 = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicCircleBase64));
51
+ }
52
+ } else if (payload.meta.profile_settings.profilePicSquareBase64) {
53
+ if (payload.meta.profile_settings.profilePicSquareBase64.includes("image/jpeg")) {
54
+ profileImagePg1 = await pdfDocPg1.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicSquareBase64));
55
+ profileImagePg2 = await pdfDocPg2.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicSquareBase64));
56
+ } else if (payload.meta.profile_settings.profilePicSquareBase64.includes("image/png")) {
57
+ profileImagePg1 = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicSquareBase64));
58
+ profileImagePg2 = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.profilePicSquareBase64));
59
+ }
60
+ }
81
61
  }
82
- } else if (profileImagePg1) {
83
- formPg1.getButton("ProfilePicture").setImage(profileImagePg1);
84
- formPg1.getButton("HalfWidthLogo").setImage(mqLogoPg1);
85
- formPg2.getButton("ProfilePicture").setImage(profileImagePg2);
86
- formPg2.getButton("HalfWidthLogo").setImage(mqLogoPg2);
87
- if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName) {
88
- formPg1.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
89
- formPg2.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
62
+ if (payload.meta.pdf_settings.includeCompanyLogo && payload.meta.profile_settings.companyLogoBase64) {
63
+ if (payload.meta.profile_settings.companyLogoBase64.includes("image/jpeg")) {
64
+ companyImagePg1 = await pdfDocPg1.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
65
+ companyImagePg2 = await pdfDocPg2.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
66
+ } else if (payload.meta.profile_settings.companyLogoBase64.includes("image/png")) {
67
+ companyImagePg1 = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
68
+ companyImagePg2 = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
69
+ }
90
70
  }
91
- } else {
92
- if (companyImagePg1) {
93
- formPg1.getButton("FullWidthLogo").setImage(companyImagePg1);
94
- formPg2.getButton("FullWidthLogo").setImage(companyImagePg2);
71
+
72
+ // print company logo and profile picture
73
+ if (profileImagePg1 && companyImagePg1) {
74
+ formPg1.getButton("ProfilePicture").setImage(profileImagePg1);
75
+ formPg1.getButton("HalfWidthLogo").setImage(companyImagePg1);
76
+ formPg2.getButton("ProfilePicture").setImage(profileImagePg2);
77
+ formPg2.getButton("HalfWidthLogo").setImage(companyImagePg2);
78
+ if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName) {
79
+ formPg1.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
80
+ formPg2.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
81
+ }
82
+ } else if (profileImagePg1) {
83
+ formPg1.getButton("ProfilePicture").setImage(profileImagePg1);
84
+ formPg1.getButton("HalfWidthLogo").setImage(mqLogoPg1);
85
+ formPg2.getButton("ProfilePicture").setImage(profileImagePg2);
86
+ formPg2.getButton("HalfWidthLogo").setImage(mqLogoPg2);
87
+ if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName) {
88
+ formPg1.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
89
+ formPg2.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
90
+ }
95
91
  } else {
96
- formPg1.getButton("FullWidthLogo").setImage(mqLogoPg1);
97
- formPg2.getButton("FullWidthLogo").setImage(mqLogoPg2);
98
- }
99
- }
100
-
101
- for (let t = 0; t < payload.tests.length; t++) {
102
- let section = t == 0 ? 'test_in' : 'test_out';
103
- let sectionLabel = t == 0 ? 'Test In ' : 'Test Out ';
104
- if (payload.tests.length == 1) sectionLabel = "";
105
- let form = t == 0 ? formPg1 : formPg2;
106
- let test = payload.tests[t].testInfo;
107
- form.getTextField('Header').setText(`${sectionLabel}Measurement Details`);
108
- if (payload.meta.cName && payload.meta.address && payload.meta.city && payload.meta.state && payload.meta.zip) {
109
- form.getTextField('Name').setText(`${payload.meta.cName}`);
110
- form.getTextField('Address 1').setText(`${payload.meta.address}`);
111
- if (payload.meta.address2) {
112
- form.getTextField('Address 2').setText(`${payload.meta.address2}`);
113
- form.getTextField('City State Zip').setText(`${payload.meta.city}${payload.meta.state}${payload.meta.zip}`);
114
- } else form.getTextField('Address 2').setText(`${payload.meta.city}${payload.meta.state}${payload.meta.zip}`);
115
- form.getTextField('Date of Service').setText(payload.tests[t].created_date_string);
116
- form.getTextField('Time of Service').setText(payload.tests[t].created_time_string);
92
+ if (companyImagePg1) {
93
+ formPg1.getButton("FullWidthLogo").setImage(companyImagePg1);
94
+ formPg2.getButton("FullWidthLogo").setImage(companyImagePg2);
95
+ } else {
96
+ formPg1.getButton("FullWidthLogo").setImage(mqLogoPg1);
97
+ formPg2.getButton("FullWidthLogo").setImage(mqLogoPg2);
98
+ }
117
99
  }
118
100
 
119
- let systemScorePercentage = payload.tests[t].testInfo.data.vitals_score ? +payload.tests[t].testInfo.data.vitals_score.toFixed(0) : 0;
120
- let systemScoreGrade = util.getGradeFromScore(systemScorePercentage);
121
- let systemScoreColor = util.getColorFromGrade(systemScoreGrade);
122
- if (!payload.tests[0].testInfo.canScoreVitals) {
123
- systemScorePercentage = "--";
124
- systemScoreGrade = "";
125
- } else systemScorePercentage += "%";
126
- form.getTextField(`YourSystemScore${systemScoreColor}`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
127
-
128
- if (mapImagePg1 && t == 0) form.getButton('Map Image').setImage(mapImagePg1);
129
- if (mapImagePg2 && t == 1) form.getButton('Map Image').setImage(mapImagePg2);
130
- form.getTextField('Information Text').setText("What Are Your System Vitals?\nJust like your health vitals, temperature, pulse, blood pressure etc, your A/C system vitals show the overall health of your air conditioning system. These vitals account for both the refrigerant and air delivery side of the system. System targets that are out of range are typically related to a system diagnostic listed below. Correcting the diagnostic faults, if possible, should put the system vitals back in the normal range.");
131
-
132
- for (let blockNum = 1; blockNum < 5; blockNum++) {
133
- form.getTextField(`Block${blockNum}-Title`).setText(payload[section][`title${blockNum}`]);
134
- for (let rowNum = 1; rowNum < 14; rowNum++) {
135
- let measurement;
136
- if (t == 0) measurement = payload.test_in[`block${blockNum}`][rowNum - 1];
137
- else if (t == 1) measurement = payload.test_out[`block${blockNum}`][rowNum - 1];
138
- let embeddedIcons = section == "test_in" ? embeddedIconsTestIn : embeddedIconsTestOut;
139
- let condDisplay = util.getElectricalData(test, "", embeddedIcons);
140
- let ahuDisplay = util.getElectricalData(test, "_ahu", embeddedIcons);
141
- if (measurement) {
142
- if (measurement.label == "Cond. Volts" && condDisplay.voltageIcon) form.getButton(`Block${blockNum}-Row${rowNum}-Col4`).setImage(condDisplay.voltageIcon);
143
- if (measurement.label == "Cond. Amps" && condDisplay.amperageIcon) form.getButton(`Block${blockNum}-Row${rowNum}-Col4`).setImage(condDisplay.amperageIcon);
144
- if (measurement.label == "AHU Volts" && ahuDisplay.voltageIcon) form.getButton(`Block${blockNum}-Row${rowNum}-Col4`).setImage(ahuDisplay.voltageIcon);
145
- if (measurement.label == "AHU Amps" && ahuDisplay.amperageIcon) form.getButton(`Block${blockNum}-Row${rowNum}-Col4`).setImage(ahuDisplay.amperageIcon);
146
- let units = measurement.units ? `(${measurement.units})` : "";
147
- form.getTextField(`Block${blockNum}-Row${rowNum}-Col1`).setText(`${measurement.label} ${units}`);
148
- let val = measurement.value ? measurement.value : (+test.data[measurement.ref]);
149
- if (!val) val = "--";
150
- else if (measurement.fixTo) val = val.toFixed(measurement.fixTo);
151
- form.getTextField(`Block${blockNum}-Row${rowNum}-Col2`).setText(`${val}`);
152
- if (blockNum != 4) {
153
- let rangeIcon = util.getRangeIcon(test, measurement.ref, embeddedIcons);
154
- if (rangeIcon && payload.meta.pdf_settings._includeRangeIndicators) form.getButton(`Block${blockNum}-Row${rowNum}-Col3`).setImage(rangeIcon);
155
- let toolIcon = false;
156
- if (measurement.ref == "superheat" || measurement.ref == "subcooling" || measurement.ref == "compression_ratio" || measurement.ref == "airflow_estimated") toolIcon = embeddedIcons.iconCalculator;
157
- else toolIcon = util.getToolIcon(test, measurement.ref, embeddedIcons);
158
-
159
- let benchmarkIcon = embeddedIcons.iconThumbprintRed;
160
- if (measurement.value == "Yes, under duress") benchmarkIcon = embeddedIcons.iconThumbprintYellow;
161
- else if (measurement.value == "Yes") benchmarkIcon = embeddedIcons.iconThumbprintGreen;
162
-
163
- toolIcon = measurement.ref == "benchmark" ? benchmarkIcon : toolIcon;
164
- if (toolIcon) form.getButton(`Block${blockNum}-Row${rowNum}-Col4`).setImage(toolIcon);
165
- }
166
- } else break;
101
+ for (let t = 0; t < payload.tests.length; t++) {
102
+ let section = t == 0 ? 'test_in' : 'test_out';
103
+ let sectionLabel = t == 0 ? 'Test In ' : 'Test Out ';
104
+ if (payload.tests.length == 1) sectionLabel = "";
105
+ let form = t == 0 ? formPg1 : formPg2;
106
+ let test = payload.tests[t].testInfo;
107
+ form.getTextField('Header').setText(`${sectionLabel}Measurement Details`);
108
+ if (payload.meta.cName && payload.meta.address && payload.meta.city && payload.meta.state && payload.meta.zip) {
109
+ form.getTextField('Name').setText(`${payload.meta.cName}`);
110
+ form.getTextField('Address 1').setText(`${payload.meta.address}`);
111
+ if (payload.meta.address2) {
112
+ form.getTextField('Address 2').setText(`${payload.meta.address2}`);
113
+ form.getTextField('City State Zip').setText(`${payload.meta.city}${payload.meta.state}${payload.meta.zip}`);
114
+ } else form.getTextField('Address 2').setText(`${payload.meta.city}${payload.meta.state}${payload.meta.zip}`);
115
+ form.getTextField('Date of Service').setText(payload.tests[t].created_date_string);
116
+ form.getTextField('Time of Service').setText(payload.tests[t].created_time_string);
117
+ }
118
+
119
+ let systemScorePercentage = payload.tests[t].testInfo.data.vitals_score ? +payload.tests[t].testInfo.data.vitals_score.toFixed(0) : 0;
120
+ let systemScoreGrade = util.getGradeFromScore(systemScorePercentage);
121
+ let systemScoreColor = util.getColorFromGrade(systemScoreGrade);
122
+ if (!payload.tests[0].testInfo.canScoreVitals) {
123
+ systemScorePercentage = "--";
124
+ systemScoreGrade = "";
125
+ } else systemScorePercentage += "%";
126
+ form.getTextField(`YourSystemScore${systemScoreColor}`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
127
+
128
+ if (mapImagePg1 && t == 0) form.getButton('Map Image').setImage(mapImagePg1);
129
+ if (mapImagePg2 && t == 1) form.getButton('Map Image').setImage(mapImagePg2);
130
+ form.getTextField('Information Text').setText("What Are Your System Vitals?\nJust like your health vitals, temperature, pulse, blood pressure etc, your A/C system vitals show the overall health of your air conditioning system. These vitals account for both the refrigerant and air delivery side of the system. System targets that are out of range are typically related to a system diagnostic listed below. Correcting the diagnostic faults, if possible, should put the system vitals back in the normal range.");
131
+
132
+ for (let blockNum = 1; blockNum < 5; blockNum++) {
133
+ form.getTextField(`Block${blockNum}-Title`).setText(payload[section][`title${blockNum}`]);
134
+ for (let rowNum = 1; rowNum < 14; rowNum++) {
135
+ let measurement;
136
+ if (t == 0) measurement = payload.test_in[`block${blockNum}`][rowNum - 1];
137
+ else if (t == 1) measurement = payload.test_out[`block${blockNum}`][rowNum - 1];
138
+ let embeddedIcons = section == "test_in" ? embeddedIconsTestIn : embeddedIconsTestOut;
139
+ let condDisplay = util.getElectricalData(test, "", embeddedIcons);
140
+ let ahuDisplay = util.getElectricalData(test, "_ahu", embeddedIcons);
141
+ if (measurement) {
142
+ if (measurement.label == "Cond. Volts" && condDisplay.voltageIcon) form.getButton(`Block${blockNum}-Row${rowNum}-Col4`).setImage(condDisplay.voltageIcon);
143
+ if (measurement.label == "Cond. Amps" && condDisplay.amperageIcon) form.getButton(`Block${blockNum}-Row${rowNum}-Col4`).setImage(condDisplay.amperageIcon);
144
+ if (measurement.label == "AHU Volts" && ahuDisplay.voltageIcon) form.getButton(`Block${blockNum}-Row${rowNum}-Col4`).setImage(ahuDisplay.voltageIcon);
145
+ if (measurement.label == "AHU Amps" && ahuDisplay.amperageIcon) form.getButton(`Block${blockNum}-Row${rowNum}-Col4`).setImage(ahuDisplay.amperageIcon);
146
+ let units = measurement.units ? `(${measurement.units})` : "";
147
+ form.getTextField(`Block${blockNum}-Row${rowNum}-Col1`).setText(`${measurement.label} ${units}`);
148
+ let val = measurement.value ? measurement.value : (+test.data[measurement.ref]);
149
+ if (!val) val = "--";
150
+ else if (measurement.fixTo) val = val.toFixed(measurement.fixTo);
151
+ form.getTextField(`Block${blockNum}-Row${rowNum}-Col2`).setText(`${val}`);
152
+ if (blockNum != 4) {
153
+ let rangeIcon = util.getRangeIcon(test, measurement.ref, embeddedIcons);
154
+ if (rangeIcon && payload.meta.pdf_settings._includeRangeIndicators) form.getButton(`Block${blockNum}-Row${rowNum}-Col3`).setImage(rangeIcon);
155
+ let toolIcon = false;
156
+ if (measurement.ref == "superheat" || measurement.ref == "subcooling" || measurement.ref == "compression_ratio" || measurement.ref == "airflow_estimated") toolIcon = embeddedIcons.iconCalculator;
157
+ else toolIcon = util.getToolIcon(test, measurement.ref, embeddedIcons);
158
+
159
+ let benchmarkIcon = embeddedIcons.iconThumbprintRed;
160
+ if (measurement.value == "Yes, under duress") benchmarkIcon = embeddedIcons.iconThumbprintYellow;
161
+ else if (measurement.value == "Yes") benchmarkIcon = embeddedIcons.iconThumbprintGreen;
162
+
163
+ toolIcon = measurement.ref == "benchmark" ? benchmarkIcon : toolIcon;
164
+ if (toolIcon) form.getButton(`Block${blockNum}-Row${rowNum}-Col4`).setImage(toolIcon);
165
+ }
166
+ } else break;
167
+ }
167
168
  }
168
169
  }
169
- }
170
- formPg1.flatten();
171
- formPg2.flatten();
172
-
173
- if (payload.tests.length > 1) {
174
- const [secondPage] = await pdfDocPg1.copyPages(pdfDocPg2, [0]);
175
- pdfDocPg1.insertPage(1, secondPage);
176
- }
177
-
178
- return await pdfDocPg1.saveAsBase64({
179
- dataUri: true
180
- });
170
+ formPg1.flatten();
171
+ formPg2.flatten();
172
+
173
+ if (payload.tests.length > 1) {
174
+ const [secondPage] = await pdfDocPg1.copyPages(pdfDocPg2, [0]);
175
+ pdfDocPg1.insertPage(1, secondPage);
176
+ }
177
+
178
+ return await pdfDocPg1.saveAsBase64({
179
+ dataUri: true
180
+ });
181
+ } catch (error) { console.log(error) }
181
182
  }
@@ -5,69 +5,70 @@ import * as photos6 from '../base-64/photos6.js';
5
5
  import * as base64 from '../base-64/icons.js';
6
6
  import * as util from '../util.js';
7
7
 
8
- export async function getReport(payload) {
8
+ export async function getReport(payload) { console.log("Photo Page(s) - Payload:"); console.log(payload);
9
+ try {
10
+ const mqLogoBytes = util._base64ToArrayBuffer(base64.mqLogo);
11
+ let maxPhotosPerPage = payload.meta.pdf_settings.maxPhotosPerPage;
9
12
 
10
- const mqLogoBytes = util._base64ToArrayBuffer(base64.mqLogo);
11
- let maxPhotosPerPage = payload.meta.pdf_settings.maxPhotosPerPage;
12
-
13
- // Layout Configuration
14
- let docs = [], forms = [], page = photos6, pSize = "Small";
15
- if (maxPhotosPerPage == 4) {
16
- page = photos4;
17
- pSize = "Mid";
18
- } else if (maxPhotosPerPage == 2) {
19
- page = photos2;
20
- pSize = "Large";
21
- }
13
+ // Layout Configuration
14
+ let docs = [], forms = [], page = photos6, pSize = "Small";
15
+ if (maxPhotosPerPage == 4) {
16
+ page = photos4;
17
+ pSize = "Mid";
18
+ } else if (maxPhotosPerPage == 2) {
19
+ page = photos2;
20
+ pSize = "Large";
21
+ }
22
22
 
23
- // Process All Photos
24
- let previousPhotoSectionName;
25
- let docIndex = 0;
26
- let photoSectionKeys = Object.keys(payload.photos.project);
27
- if (photoSectionKeys && photoSectionKeys.length > 0) {
28
- docs[docIndex] = await PDFDocument.load(util._base64ToArrayBuffer(page.base64));
29
- forms[docIndex] = docs[docIndex].getForm();
30
- forms[docIndex].getButton("FullWidthLogo").setImage(await docs[docIndex].embedPng(mqLogoBytes));
31
- forms[docIndex].getTextField("Header").setText(`Project Photos`);
32
- let photoPosition = 1;
33
- for (let pskIndex = 0; pskIndex < photoSectionKeys.length; pskIndex++) { // Iterate over X user-defined photo sections within each photo collection
34
- let photoSectionKey = photoSectionKeys[pskIndex];
35
- let photoSection = payload.photos.project[photoSectionKey];
36
- let photoSectionName = photoSection.name;
37
- let photos = photoSection.photos;
38
- if (photos && photos.length > 0) {
39
- for (let pIndex = 1; pIndex <= photos.length; pIndex++) { // Iterate over X user-defined photos within each photo section
40
- let photo = photos[pIndex-1];
41
- if (photoPosition > maxPhotosPerPage) { // Need a new page
42
- photoPosition = 1;
43
- docIndex++;
44
- docs[docIndex] = await PDFDocument.load(util._base64ToArrayBuffer(page.base64));
45
- forms[docIndex] = docs[docIndex].getForm();
46
- forms[docIndex].getButton("FullWidthLogo").setImage(await docs[docIndex].embedPng(mqLogoBytes));
47
- forms[docIndex].getTextField("Header").setText(`Project Photos`);
23
+ // Process All Photos
24
+ let previousPhotoSectionName;
25
+ let docIndex = 0;
26
+ let photoSectionKeys = Object.keys(payload.photos.project);
27
+ if (photoSectionKeys && photoSectionKeys.length > 0) {
28
+ docs[docIndex] = await PDFDocument.load(util._base64ToArrayBuffer(page.base64));
29
+ forms[docIndex] = docs[docIndex].getForm();
30
+ forms[docIndex].getButton("FullWidthLogo").setImage(await docs[docIndex].embedPng(mqLogoBytes));
31
+ forms[docIndex].getTextField("Header").setText(`Project Photos`);
32
+ let photoPosition = 1;
33
+ for (let pskIndex = 0; pskIndex < photoSectionKeys.length; pskIndex++) { // Iterate over X user-defined photo sections within each photo collection
34
+ let photoSectionKey = photoSectionKeys[pskIndex];
35
+ let photoSection = payload.photos.project[photoSectionKey];
36
+ let photoSectionName = photoSection.name;
37
+ let photos = photoSection.photos;
38
+ if (photos && photos.length > 0) {
39
+ for (let pIndex = 1; pIndex <= photos.length; pIndex++) { // Iterate over X user-defined photos within each photo section
40
+ let photo = photos[pIndex-1];
41
+ if (photoPosition > maxPhotosPerPage) { // Need a new page
42
+ photoPosition = 1;
43
+ docIndex++;
44
+ docs[docIndex] = await PDFDocument.load(util._base64ToArrayBuffer(page.base64));
45
+ forms[docIndex] = docs[docIndex].getForm();
46
+ forms[docIndex].getButton("FullWidthLogo").setImage(await docs[docIndex].embedPng(mqLogoBytes));
47
+ forms[docIndex].getTextField("Header").setText(`Project Photos`);
48
+ }
49
+ let imageToSet;
50
+ if (photo.base64.includes("image/jpeg")) imageToSet = await docs[docIndex].embedJpg(util._base64ToArrayBuffer(photo.base64));
51
+ else if (photo.base64.includes("image/png")) imageToSet = await docs[docIndex].embedPng(util._base64ToArrayBuffer(photo.base64));
52
+ if (imageToSet) forms[docIndex].getButton(`photo${pSize}${photoPosition}`).setImage(imageToSet);
53
+ let photoSubText = photoSection.name;
54
+ let isFirstPhotoOfSection = previousPhotoSectionName !== photoSectionName;
55
+ if (isFirstPhotoOfSection && photoSection.hasNotes && photoSection.notes) photoSubText += `: ${photoSection.notes}`;
56
+ forms[docIndex].getTextField(`Notes${photoPosition}`).setText(`${photoSubText}`);
57
+ photoPosition++;
58
+ previousPhotoSectionName = photoSectionName;
48
59
  }
49
- let imageToSet;
50
- if (photo.base64.includes("image/jpeg")) imageToSet = await docs[docIndex].embedJpg(util._base64ToArrayBuffer(photo.base64));
51
- else if (photo.base64.includes("image/png")) imageToSet = await docs[docIndex].embedPng(util._base64ToArrayBuffer(photo.base64));
52
- if (imageToSet) forms[docIndex].getButton(`photo${pSize}${photoPosition}`).setImage(imageToSet);
53
- let photoSubText = photoSection.name;
54
- let isFirstPhotoOfSection = previousPhotoSectionName !== photoSectionName;
55
- if (isFirstPhotoOfSection && photoSection.hasNotes && photoSection.notes) photoSubText += `: ${photoSection.notes}`;
56
- forms[docIndex].getTextField(`Notes${photoPosition}`).setText(`${photoSubText}`);
57
- photoPosition++;
58
- previousPhotoSectionName = photoSectionName;
59
60
  }
60
61
  }
62
+ docIndex++;
61
63
  }
62
- docIndex++;
63
- }
64
64
 
65
- // Prepare Deliverable
66
- forms.forEach(form => { form.flatten() });
67
- let pdfDoc = await PDFDocument.create();
68
- for (let i = 0; i < docs.length; i++) {
69
- const [nextPage] = await pdfDoc.copyPages(docs[i], [0]);
70
- pdfDoc.insertPage(i, nextPage);
71
- }
72
- return await pdfDoc.saveAsBase64({ dataUri: true });
65
+ // Prepare Deliverable
66
+ forms.forEach(form => { form.flatten() });
67
+ let pdfDoc = await PDFDocument.create();
68
+ for (let i = 0; i < docs.length; i++) {
69
+ const [nextPage] = await pdfDoc.copyPages(docs[i], [0]);
70
+ pdfDoc.insertPage(i, nextPage);
71
+ }
72
+ return await pdfDoc.saveAsBase64({ dataUri: true });
73
+ } catch (error) { console.log(error) }
73
74
  }
@@ -3,8 +3,8 @@ import * as base64 from '../base-64/icons.js';
3
3
  import * as pdf from '../base-64/mq-vitals-cooling.js';
4
4
  import * as util from '../util.js';
5
5
 
6
- export async function getReport(payload, _test) { console.log(payload);
7
-
6
+ export async function getReport(payload, _test) { console.log("Vitals Cooling - Payload:"); console.log(payload);
7
+ try {
8
8
  // fetch and load form
9
9
  const formPdfBytes = util._base64ToArrayBuffer(pdf.base64);
10
10
  const pdfDoc = await PDFDocument.load(formPdfBytes);
@@ -198,6 +198,7 @@ export async function getReport(payload, _test) { console.log(payload);
198
198
  form.flatten();
199
199
  const pdfBase64 = await pdfDoc.saveAsBase64({ dataUri: true });
200
200
  return pdfBase64;
201
+ } catch (error) { console.log(error) }
201
202
  }
202
203
 
203
204
  function getTextFields(payload) {
@@ -3,8 +3,8 @@ import * as base64 from '../base-64/icons.js';
3
3
  import * as pdf from '../base-64/mq-vitals-heating.js';
4
4
  import * as util from '../util.js';
5
5
 
6
- export async function getReport(payload, _test) { console.log("Vitals Heating Report");
7
-
6
+ export async function getReport(payload, _test) { console.log("Vitals Heating - Payload:"); console.log(payload);
7
+ try {
8
8
  // fetch and load form
9
9
  const formPdfBytes = util._base64ToArrayBuffer(pdf.base64);
10
10
  const pdfDoc = await PDFDocument.load(formPdfBytes);
@@ -194,6 +194,7 @@ export async function getReport(payload, _test) { console.log("Vitals Heating Re
194
194
  form.flatten();
195
195
  const pdfBase64 = await pdfDoc.saveAsBase64({ dataUri: true });
196
196
  return pdfBase64;
197
+ } catch (error) { console.log(error) }
197
198
  }
198
199
 
199
200
  function getTextFields(payload) {