@measurequick/measurequick-report-generator 1.2.57 → 1.2.59

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@measurequick/measurequick-report-generator",
3
- "version": "1.2.57",
3
+ "version": "1.2.59",
4
4
  "description": "Generates PDF documents for various MeasureQuick applications.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -5,107 +5,109 @@ import * as util from '../util.js';
5
5
 
6
6
  let embeddedIcons = {};
7
7
 
8
- export async function getReport(payload) {
8
+ export async function getReport(payload) { console.log("Corrective Measures - Payload:"); console.log(payload);
9
9
 
10
- const pdfDoc = await PDFDocument.load(util._base64ToArrayBuffer(pdf.base64));
10
+ try {
11
+ const pdfDoc = await PDFDocument.load(util._base64ToArrayBuffer(pdf.base64));
11
12
 
12
- const form = pdfDoc.getForm();
13
+ const form = pdfDoc.getForm();
13
14
 
14
- let labels = ["iconRangeHigh", "iconRangeLow", "iconRangeNormal", "iconTesto", "iconCalculator", "iconFieldpiece",
15
- "iconUei", "iconSporlanPro", "iconSporlanLegacy", "iconIconnect", "iconImanifold", "iconSensi",
16
- "iconBluflame", "iconRedfish510", "iconRedfish510333", "iconRedfish550", "iconDg1000", "iconTrueflow", "iconThumbprintRed", "iconThumbprintGreen", "iconThumbprintYellow"];
17
- for (let label of labels) embeddedIcons[label] = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64[label]));
18
- const mqLogoBytes = util._base64ToArrayBuffer(base64.mqLogo);
19
- const mqLogo = await pdfDoc.embedPng(mqLogoBytes);
15
+ let labels = ["iconRangeHigh", "iconRangeLow", "iconRangeNormal", "iconTesto", "iconCalculator", "iconFieldpiece",
16
+ "iconUei", "iconSporlanPro", "iconSporlanLegacy", "iconIconnect", "iconImanifold", "iconSensi",
17
+ "iconBluflame", "iconRedfish510", "iconRedfish510333", "iconRedfish550", "iconDg1000", "iconTrueflow", "iconThumbprintRed", "iconThumbprintGreen", "iconThumbprintYellow"];
18
+ for (let label of labels) embeddedIcons[label] = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64[label]));
19
+ const mqLogoBytes = util._base64ToArrayBuffer(base64.mqLogo);
20
+ const mqLogo = await pdfDoc.embedPng(mqLogoBytes);
20
21
 
21
- // embed company logo and profile picture
22
- let profileImage, companyImage;
23
- let profileImageType = util.checkProfilePicture(payload.meta);
24
- let companyImageType = util.checkCompanyLogo(payload.meta);
25
- if (profileImageType) {
26
- if (profileImageType.shape == "square") profileImage = payload.meta.profile_settings.profilePicSquareBase64;
27
- else if (profileImageType.shape == "circle") profileImage = payload.meta.profile_settings.profilePicCircleBase64;
28
- if (profileImageType.type == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(profileImage));
29
- else if (profileImageType.type == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(profileImage));
30
- }
31
- if (companyImageType == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
32
- else if (companyImageType == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
22
+ // embed company logo and profile picture
23
+ let profileImage, companyImage;
24
+ let profileImageType = util.checkProfilePicture(payload.meta);
25
+ let companyImageType = util.checkCompanyLogo(payload.meta);
26
+ if (profileImageType) {
27
+ if (profileImageType.shape == "square") profileImage = payload.meta.profile_settings.profilePicSquareBase64;
28
+ else if (profileImageType.shape == "circle") profileImage = payload.meta.profile_settings.profilePicCircleBase64;
29
+ if (profileImageType.type == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(profileImage));
30
+ else if (profileImageType.type == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(profileImage));
31
+ }
32
+ if (companyImageType == "jpg") companyImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
33
+ else if (companyImageType == "png") companyImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
33
34
 
34
- // print company logo and profile picture
35
- if (profileImage && companyImage) {
36
- form.getButton("ProfilePicture").setImage(profileImage);
37
- form.getButton("HalfWidthLogo").setImage(companyImage);
38
- if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
39
- form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
40
- } else if (profileImage) {
41
- form.getButton("ProfilePicture").setImage(profileImage);
42
- form.getButton("HalfWidthLogo").setImage(mqLogo);
43
- if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
44
- form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
45
- } else {
46
- if (companyImage) form.getButton("FullWidthLogo").setImage(companyImage);
47
- else form.getButton("FullWidthLogo").setImage(mqLogo);
48
- }
35
+ // print company logo and profile picture
36
+ if (profileImage && companyImage) {
37
+ form.getButton("ProfilePicture").setImage(profileImage);
38
+ form.getButton("HalfWidthLogo").setImage(companyImage);
39
+ if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
40
+ form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
41
+ } else if (profileImage) {
42
+ form.getButton("ProfilePicture").setImage(profileImage);
43
+ form.getButton("HalfWidthLogo").setImage(mqLogo);
44
+ if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
45
+ form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
46
+ } else {
47
+ if (companyImage) form.getButton("FullWidthLogo").setImage(companyImage);
48
+ else form.getButton("FullWidthLogo").setImage(mqLogo);
49
+ }
49
50
 
50
- let systemScorePercentage = payload.tests[0].testInfo.data.vitals_score ? +payload.tests[0].testInfo.data.vitals_score.toFixed(0) : 0;
51
- let systemScoreGrade = util.getGradeFromScore(systemScorePercentage);
52
- let systemScoreColor = util.getColorFromGrade(systemScoreGrade);
53
- if (!payload.tests[0].testInfo.canScoreVitals) {
54
- systemScorePercentage = "--";
55
- systemScoreGrade = "";
56
- } else systemScorePercentage += "%";
57
- form.getTextField(`YourSystemScore${systemScoreColor}`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
51
+ let systemScorePercentage = payload.tests[0].testInfo.data.vitals_score ? +payload.tests[0].testInfo.data.vitals_score.toFixed(0) : 0;
52
+ let systemScoreGrade = util.getGradeFromScore(systemScorePercentage);
53
+ let systemScoreColor = util.getColorFromGrade(systemScoreGrade);
54
+ if (!payload.tests[0].testInfo.canScoreVitals) {
55
+ systemScorePercentage = "--";
56
+ systemScoreGrade = "";
57
+ } else systemScorePercentage += "%";
58
+ form.getTextField(`YourSystemScore${systemScoreColor}`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
58
59
 
59
- form.getTextField(`Block1-Title`).setText(payload.system_data.title1);
60
- for (let rowNum = 1; rowNum < 12; rowNum++) {
61
- let measurement = payload.system_data[`block1`][rowNum-1];
62
- if (measurement) form.getTextField(`Block1-Row${rowNum}`).setText(`${measurement.value}`);
63
- else break;
64
- }
60
+ form.getTextField(`Block1-Title`).setText(payload.system_data.title1);
61
+ for (let rowNum = 1; rowNum < 12; rowNum++) {
62
+ let measurement = payload.system_data[`block1`][rowNum-1];
63
+ if (measurement) form.getTextField(`Block1-Row${rowNum}`).setText(`${measurement.value}`);
64
+ else break;
65
+ }
65
66
 
66
- form.getTextField(`Block2-Title`).setText(payload.system_data.title2);
67
- for (let rowNum = 1; rowNum < 12; rowNum++) {
68
- let measurement = payload.system_data[`block2`][rowNum-1];
69
- if (measurement) {
70
- form.getTextField(`Block2-Row${rowNum}-Col1`).setText(measurement.label);
71
- let val = measurement.value ? measurement.value : payload.equipment[measurement.ref];
72
- form.getTextField(`Block2-Row${rowNum}-Col2`).setText(`${val}`);
73
- let icon;// = util.getRangeIcon(test, measurement.ref);
74
- if (icon) form.getButton(`Block2-Row${rowNum}-Col3`).setImage(icon);
75
- } else break;
76
- }
67
+ form.getTextField(`Block2-Title`).setText(payload.system_data.title2);
68
+ for (let rowNum = 1; rowNum < 12; rowNum++) {
69
+ let measurement = payload.system_data[`block2`][rowNum-1];
70
+ if (measurement) {
71
+ form.getTextField(`Block2-Row${rowNum}-Col1`).setText(measurement.label);
72
+ let val = measurement.value ? measurement.value : payload.equipment[measurement.ref];
73
+ form.getTextField(`Block2-Row${rowNum}-Col2`).setText(`${val}`);
74
+ let icon;// = util.getRangeIcon(test, measurement.ref);
75
+ if (icon) form.getButton(`Block2-Row${rowNum}-Col3`).setImage(icon);
76
+ } else break;
77
+ }
77
78
 
78
- form.getTextField(`Block3-Title`).setText(payload.system_data.title3);
79
- let caIndex = 0;
80
- let header;
81
- for (let colNum = 1; colNum < 4; colNum++) {
82
- let row = 1;
83
- let caMeas = payload.system_data.block3[caIndex];
84
- if (caMeas && header == caMeas.ref) {
85
- form.getTextField(`CA-Col${colNum}-Row${row}-Bold`).setText(`${caMeas.ref} (Cont.)`);
86
- row++;
87
- }
88
- for (let rowNum = row; rowNum < 24; rowNum++) {
89
- caMeas = payload.system_data.block3[caIndex];
90
- if (caMeas) {
91
- if (header !== caMeas.ref) {
92
- if (rowNum + 2 > 23) {
93
- colNum++;
94
- rowNum = 1;
95
- } else {
96
- if (rowNum != 1) rowNum++;
97
- form.getTextField(`CA-Col${colNum}-Row${rowNum}-Bold`).setText(caMeas.ref);
98
- rowNum++;
99
- }
100
- }
101
- header = caMeas.ref;
102
- form.getTextField(`CA-Col${colNum}-Row${rowNum}`).setText(caMeas.label);
103
- caIndex++;
104
- } else break;
105
- }
106
- }
79
+ form.getTextField(`Block3-Title`).setText(payload.system_data.title3);
80
+ let caIndex = 0;
81
+ let header;
82
+ for (let colNum = 1; colNum < 4; colNum++) {
83
+ let row = 1;
84
+ let caMeas = payload.system_data.block3[caIndex];
85
+ if (caMeas && header == caMeas.ref) {
86
+ form.getTextField(`CA-Col${colNum}-Row${row}-Bold`).setText(`${caMeas.ref} (Cont.)`);
87
+ row++;
88
+ }
89
+ for (let rowNum = row; rowNum < 24; rowNum++) {
90
+ caMeas = payload.system_data.block3[caIndex];
91
+ if (caMeas) {
92
+ if (header !== caMeas.ref) {
93
+ if (rowNum + 2 > 23) {
94
+ colNum++;
95
+ rowNum = 1;
96
+ } else {
97
+ if (rowNum != 1) rowNum++;
98
+ form.getTextField(`CA-Col${colNum}-Row${rowNum}-Bold`).setText(caMeas.ref);
99
+ rowNum++;
100
+ }
101
+ }
102
+ header = caMeas.ref;
103
+ form.getTextField(`CA-Col${colNum}-Row${rowNum}`).setText(caMeas.label);
104
+ caIndex++;
105
+ } else break;
106
+ }
107
+ }
107
108
 
108
- form.flatten();
109
- return await pdfDoc.saveAsBase64({ dataUri: true });
109
+ form.flatten();
110
+ return await pdfDoc.saveAsBase64({ dataUri: true });
111
+ } catch (error) { console.log(error) }
110
112
 
111
113
  }
@@ -2,7 +2,7 @@ import { PDFDocument } from 'pdf-lib';
2
2
  import * as pdf from '../base-64/cover-page.js';
3
3
  import * as util from '../util.js';
4
4
 
5
- export async function getReport(payload) { console.log("Cover Page");
5
+ export async function getReport(payload) { console.log("Cover Page - Payload:"); console.log(payload);
6
6
  try {
7
7
  const pdfDoc = await PDFDocument.load(util._base64ToArrayBuffer(pdf.base64));
8
8
  let profileImage, companyImage;
@@ -14,8 +14,8 @@ export async function getReport(payload) { console.log("Cover Page");
14
14
  if (profileImageType.type == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(profileImage));
15
15
  else if (profileImageType.type == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(profileImage));
16
16
  }
17
- if (companyImageType == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
18
- else if (companyImageType == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
17
+ if (companyImageType == "jpg") companyImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
18
+ else if (companyImageType == "png") companyImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
19
19
  const form = pdfDoc.getForm();
20
20
  form.getTextField("Report Title").setText(payload.meta.report_title);
21
21
  form.getTextField("Technician Name").setText(payload.meta.technician_name);
@@ -29,7 +29,5 @@ export async function getReport(payload) { console.log("Cover Page");
29
29
  form.flatten();
30
30
  const pdfBase64 = await pdfDoc.saveAsBase64({ dataUri: true });
31
31
  return pdfBase64;
32
- } catch (error) {
33
- console.log(error);
34
- }
32
+ } catch (error) { console.log(error) }
35
33
  }
@@ -13,7 +13,7 @@ import * as util from '../util.js';
13
13
  let docs = [];
14
14
  let forms = [];
15
15
 
16
- export async function getReport(payload) { console.log("Full Report"); console.log(payload);
16
+ export async function getReport(payload) { console.log("Full Report"); console.log((payload));
17
17
 
18
18
  const coreDoc = await PDFDocument.create();
19
19
 
@@ -22,14 +22,12 @@ export async function getReport(payload) { console.log("Full Report"); console.l
22
22
  const coverPageDoc = coverPageBase64 ? await PDFDocument.load(util._base64ToArrayBuffer(coverPageBase64)) : false;
23
23
  const [_coverPageDoc] = coverPageDoc ? await coreDoc.copyPages(coverPageDoc, [0]) : false;
24
24
  if (_coverPageDoc) coreDoc.insertPage(coreDoc.getPages().length, _coverPageDoc);
25
- } catch (err) {
26
- console.log("Cover Page Error: " + JSON.stringify(err));
27
- }
25
+ } catch (e) {} // error printed in original pdf script
28
26
 
29
27
  try {
30
28
  if (payload.meta.report_mode == "goettl") {
31
- if (payload.tests && payload.tests[1] && payload.tests[1].testInfo && payload.tests[1].testInfo) {
32
- let vitalsReportBase64 = await vitalsCoolingReport.getReport(payload, payload.tests[1]);
29
+ if (payload.tests && payload.tests[0] && payload.tests[0].testInfo && payload.tests[0].testInfo) {
30
+ let vitalsReportBase64 = await vitalsCoolingReport.getReport(payload, payload.tests[0]);
33
31
  const vitalsReportDoc = await PDFDocument.load(util._base64ToArrayBuffer(vitalsReportBase64));
34
32
  const [_vitalsReportPg1] = await coreDoc.copyPages(vitalsReportDoc, [0]);
35
33
  const [_vitalsReportPg2] = await coreDoc.copyPages(vitalsReportDoc, [1]);
@@ -38,8 +36,8 @@ export async function getReport(payload) { console.log("Full Report"); console.l
38
36
  coreDoc.insertPage(coreDoc.getPages().length, _vitalsReportPg2);
39
37
  coreDoc.insertPage(coreDoc.getPages().length, _vitalsReportPg3);
40
38
  }
41
- if (payload.tests && payload.tests[2] && payload.tests[2].testInfo && payload.tests[2].testInfo) {
42
- let vitalsReportBase64_ = await vitalsHeatingReport.getReport(payload, payload.tests[2]);
39
+ if (payload.tests && payload.tests[1] && payload.tests[1].testInfo && payload.tests[1].testInfo) {
40
+ let vitalsReportBase64_ = await vitalsHeatingReport.getReport(payload, payload.tests[1]);
43
41
  const vitalsReportDoc_ = await PDFDocument.load(util._base64ToArrayBuffer(vitalsReportBase64_));
44
42
  const [_vitalsReportPg1_] = await coreDoc.copyPages(vitalsReportDoc_, [0]);
45
43
  const [_vitalsReportPg2_] = await coreDoc.copyPages(vitalsReportDoc_, [1]);
@@ -48,7 +46,7 @@ export async function getReport(payload) { console.log("Full Report"); console.l
48
46
  coreDoc.insertPage(coreDoc.getPages().length, _vitalsReportPg2_);
49
47
  coreDoc.insertPage(coreDoc.getPages().length, _vitalsReportPg3_);
50
48
  }
51
- } else if (payload.tests && payload.tests[0] && payload.tests[0].testInfo && payload.tests[0].testInfo.data && payload.tests[0].testInfo.data.canGenerateVitals) {
49
+ } else if (payload.tests && payload.tests[0] && payload.tests[0].testInfo && payload.tests[0].testInfo) {
52
50
  let vitalsReportBase64 = payload.meta.report_mode == "cooling" ? await vitalsCoolingReport.getReport(payload) : await vitalsHeatingReport.getReport(payload);
53
51
  const vitalsReportDoc = await PDFDocument.load(util._base64ToArrayBuffer(vitalsReportBase64));
54
52
  const [_vitalsReportPg1] = await coreDoc.copyPages(vitalsReportDoc, [0]);
@@ -57,12 +55,8 @@ export async function getReport(payload) { console.log("Full Report"); console.l
57
55
  coreDoc.insertPage(coreDoc.getPages().length, _vitalsReportPg1);
58
56
  coreDoc.insertPage(coreDoc.getPages().length, _vitalsReportPg2);
59
57
  coreDoc.insertPage(coreDoc.getPages().length, _vitalsReportPg3);
60
- } else {
61
- console.log("cant generate vitals");
62
58
  }
63
- } catch (err) {
64
- console.log("Vitals Error: " + JSON.stringify(err));
65
- }
59
+ } catch (e) {} // error printed in original pdf script
66
60
 
67
61
  try {
68
62
  let measurementDetailsBase64 = await measurementDetails.getReport(payload);
@@ -73,30 +67,26 @@ export async function getReport(payload) { console.log("Full Report"); console.l
73
67
  const [_measurementDetailsDocPg2] = measurementDetailsDoc ? await coreDoc.copyPages(measurementDetailsDoc, [1]) : false;
74
68
  if (_measurementDetailsDocPg2) coreDoc.insertPage(coreDoc.getPages().length, _measurementDetailsDocPg2);
75
69
  }
76
- } catch (err) {
77
- console.log("Measurement Details Error: " + JSON.stringify(err));
78
- }
70
+ } catch (e) {} // error printed in original pdf script
79
71
 
80
72
  try {
81
73
  let correctiveMeasuresBase64 = await correctiveMeasures.getReport(payload);
82
74
  const correctiveMeasuresDoc = correctiveMeasuresBase64 ? await PDFDocument.load(util._base64ToArrayBuffer(correctiveMeasuresBase64)) : false;
83
75
  const [_correctiveMeasuresDoc] = correctiveMeasuresDoc ? await coreDoc.copyPages(correctiveMeasuresDoc, [0]) : false;
84
76
  if (_correctiveMeasuresDoc) coreDoc.insertPage(coreDoc.getPages().length, _correctiveMeasuresDoc);
85
- } catch (err) {
86
- console.log("Corrective Measures Error: " + JSON.stringify(err));
87
- }
77
+ } catch (e) {} // error printed in original pdf script
88
78
 
89
79
  try {
90
80
  let selectedPhotosReport = payload.meta.origin == 'virtuoso' ? photosReportS3 : photosReport;
91
- let photosReportBase64 = (payload.meta.pdf_settings.includePhotos && payload.meta.photo_count > 0) ? await selectedPhotosReport.getReport(payload) : false;
81
+ let photosReportBase64 = (payload.meta.pdf_settings.includePhotos && payload.meta.photo_count > 0) ? await selectedPhotosReport.getReport(payload.photos) : false;
92
82
  const photosReportDoc = photosReportBase64 ? await PDFDocument.load(util._base64ToArrayBuffer(photosReportBase64)) : false;
93
83
  for (let i = 0; (photosReportDoc && i < photosReportDoc.getPages().length); i++) {
94
84
  const [_photosReport] = await coreDoc.copyPages(photosReportDoc, [i]);
95
85
  coreDoc.insertPage(coreDoc.getPages().length, _photosReport);
96
86
  }
97
- } catch (err) {
98
- console.log("Photo Page Error: " + JSON.stringify(err));
99
- }
87
+ } catch (e) {} // error printed in original pdf script
100
88
 
101
- return await coreDoc.saveAsBase64({ dataUri: true });
89
+ let b64 = await coreDoc.saveAsBase64({ dataUri: true });
90
+ console.log(b64);
91
+ return b64;
102
92
  }
@@ -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(JSON.stringify(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);
@@ -43,8 +43,8 @@ export async function getReport(payload, _test) { console.log(payload);
43
43
  if (profileImageType.type == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(profileImage));
44
44
  else if (profileImageType.type == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(profileImage));
45
45
  }
46
- if (companyImageType == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
47
- else if (companyImageType == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
46
+ if (companyImageType == "jpg") companyImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
47
+ else if (companyImageType == "png") companyImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
48
48
 
49
49
  // get form for filling
50
50
  const form = pdfDoc.getForm();
@@ -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);
@@ -43,8 +43,8 @@ export async function getReport(payload, _test) { console.log("Vitals Heating Re
43
43
  if (profileImageType.type == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(profileImage));
44
44
  else if (profileImageType.type == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(profileImage));
45
45
  }
46
- if (companyImageType == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
47
- else if (companyImageType == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
46
+ if (companyImageType == "jpg") companyImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
47
+ else if (companyImageType == "png") companyImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
48
48
 
49
49
  // get form for filling
50
50
  const form = pdfDoc.getForm();
@@ -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) {