@measurequick/measurequick-report-generator 1.2.169 → 1.3.0

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/base-64/icons.js CHANGED
@@ -100,4 +100,4 @@ export const logoSensi = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQgAAACO
100
100
 
101
101
  export const logoSensiMq = 'data:image/png;base64,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';
102
102
 
103
- export const logoJbReport = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMC1jMDAwIDc5LmRhNGE3ZTVlZiwgMjAyMi8xMS8yMi0xMzo1MDowNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyY2Q2ZGE3Yi0zYTY4LTQwOTEtODVlNS0xZDNhMjZjYjE3NjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzAwOTI5MDQ5NTM3MTFFRDgzQTk5QUVFNEEyMUVCRkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzAwOTI5MDM5NTM3MTFFRDgzQTk5QUVFNEEyMUVCRkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2ZTdkMWJjZS05YzUyLTRlNjctYmZmZi01MzRhMjExNGE2MWIiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDphMTU4OTcxOS1lYzFjLTlmNGYt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";
103
+ export const iconJb = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMC1jMDAwIDc5LmRhNGE3ZTVlZiwgMjAyMi8xMS8yMi0xMzo1MDowNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyY2Q2ZGE3Yi0zYTY4LTQwOTEtODVlNS0xZDNhMjZjYjE3NjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzAwOTI5MDQ5NTM3MTFFRDgzQTk5QUVFNEEyMUVCRkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzAwOTI5MDM5NTM3MTFFRDgzQTk5QUVFNEEyMUVCRkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2ZTdkMWJjZS05YzUyLTRlNjctYmZmZi01MzRhMjExNGE2MWIiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDphMTU4OTcxOS1lYzFjLTlmNGYt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";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@measurequick/measurequick-report-generator",
3
- "version": "1.2.169",
3
+ "version": "1.3.0",
4
4
  "description": "Generates PDF documents for various MeasureQuick applications.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -18,4 +18,4 @@
18
18
  ],
19
19
  "author": "MeasureQuick",
20
20
  "license": "ISC"
21
- }
21
+ }
@@ -28,7 +28,7 @@ export async function getReport(payload) {
28
28
  }
29
29
 
30
30
  let labels = ["iconRangeHigh", "iconRangeLow", "iconRangeNormal", "iconTesto", "iconCalculator", "iconFieldpiece",
31
- "iconUei", "iconSporlanPro", "iconSporlanLegacy", "iconIconnect", "iconImanifold", "iconSensi", "iconDg8",
31
+ "iconUei", "iconSporlanPro", "iconSporlanLegacy", "iconIconnect", "iconImanifold", "iconSensi", "iconDg8", "iconJb",
32
32
  "iconBluflame", "iconRedfish510", "iconRedfish510333", "iconRedfish550", "iconDg1000", "iconTrueflow", "iconThumbprintRed", "iconThumbprintGreen", "iconThumbprintYellow"
33
33
  ];
34
34
  for (let label of labels) embeddedIconsTestIn[label] = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(base64[label]));
@@ -1,238 +1,238 @@
1
1
  import { PDFDocument } from 'pdf-lib';
2
- import * as base64 from '../base-64/icons.js';
2
+ import * as base64 from '../base-64/icons.js';
3
3
  import * as pdf from '../base-64/mq-vitals-heating.js';
4
- import * as systemInfoPage from './system-info-page.js';
4
+ import * as systemInfoPage from './system-info-page.js';
5
5
  import * as util from '../util.js';
6
6
 
7
7
  export async function getReport(payload, _test) {
8
- try {
9
- // fetch and load form
10
- const formPdfBytes = util._base64ToArrayBuffer(pdf.base64);
11
- const pdfDoc = await PDFDocument.load(formPdfBytes);
8
+ try {
9
+ // fetch and load form
10
+ const formPdfBytes = util._base64ToArrayBuffer(pdf.base64);
11
+ const pdfDoc = await PDFDocument.load(formPdfBytes);
12
12
 
13
- // fetch resources
14
- const iconRangeGreenBytes = util._base64ToArrayBuffer(base64.iconRangeGreen);
15
- const iconRangeRedBytes = util._base64ToArrayBuffer(base64.iconRangeRed);
16
- const iconRangeYellowBytes = util._base64ToArrayBuffer(base64.iconRangeYellow);
17
- const iconFlagBlackBytes = util._base64ToArrayBuffer(base64.iconFlagBlack);
18
- const iconFlagGreenBytes = util._base64ToArrayBuffer(base64.iconFlagGreen);
19
- const iconFlagRedBytes = util._base64ToArrayBuffer(base64.iconFlagRed);
20
- const iconFlagYellowBytes = util._base64ToArrayBuffer(base64.iconFlagYellow);
21
- const iconStabilityBytes = util._base64ToArrayBuffer(base64.iconStability);
22
- const iconThumbprintGreenBytes = util._base64ToArrayBuffer(base64.iconThumbprintGreen);
23
- const iconThumbprintRedBytes = util._base64ToArrayBuffer(base64.iconThumbprintRed);
24
- const mqLogoBytes = util._base64ToArrayBuffer(base64.mqLogo);
13
+ // fetch resources
14
+ const iconRangeGreenBytes = util._base64ToArrayBuffer(base64.iconRangeGreen);
15
+ const iconRangeRedBytes = util._base64ToArrayBuffer(base64.iconRangeRed);
16
+ const iconRangeYellowBytes = util._base64ToArrayBuffer(base64.iconRangeYellow);
17
+ const iconFlagBlackBytes = util._base64ToArrayBuffer(base64.iconFlagBlack);
18
+ const iconFlagGreenBytes = util._base64ToArrayBuffer(base64.iconFlagGreen);
19
+ const iconFlagRedBytes = util._base64ToArrayBuffer(base64.iconFlagRed);
20
+ const iconFlagYellowBytes = util._base64ToArrayBuffer(base64.iconFlagYellow);
21
+ const iconStabilityBytes = util._base64ToArrayBuffer(base64.iconStability);
22
+ const iconThumbprintGreenBytes = util._base64ToArrayBuffer(base64.iconThumbprintGreen);
23
+ const iconThumbprintRedBytes = util._base64ToArrayBuffer(base64.iconThumbprintRed);
24
+ const mqLogoBytes = util._base64ToArrayBuffer(base64.mqLogo);
25
25
 
26
- // load resources
27
- const iconRangeGreen = await pdfDoc.embedPng(iconRangeGreenBytes);
28
- const iconRangeRed = await pdfDoc.embedPng(iconRangeRedBytes);
29
- const iconRangeYellow = await pdfDoc.embedPng(iconRangeYellowBytes);
30
- const iconFlagBlack = await pdfDoc.embedPng(iconFlagBlackBytes);
31
- const iconFlagGreen = await pdfDoc.embedPng(iconFlagGreenBytes);
32
- const iconFlagRed = await pdfDoc.embedPng(iconFlagRedBytes);
33
- const iconFlagYellow = await pdfDoc.embedPng(iconFlagYellowBytes);
34
- const iconStability = await pdfDoc.embedPng(iconStabilityBytes);
35
- const iconThumbprintGreen = await pdfDoc.embedPng(iconThumbprintGreenBytes);
36
- const iconThumbprintRed = await pdfDoc.embedPng(iconThumbprintRedBytes);
37
- const mqLogo = await pdfDoc.embedPng(mqLogoBytes);
26
+ // load resources
27
+ const iconRangeGreen = await pdfDoc.embedPng(iconRangeGreenBytes);
28
+ const iconRangeRed = await pdfDoc.embedPng(iconRangeRedBytes);
29
+ const iconRangeYellow = await pdfDoc.embedPng(iconRangeYellowBytes);
30
+ const iconFlagBlack = await pdfDoc.embedPng(iconFlagBlackBytes);
31
+ const iconFlagGreen = await pdfDoc.embedPng(iconFlagGreenBytes);
32
+ const iconFlagRed = await pdfDoc.embedPng(iconFlagRedBytes);
33
+ const iconFlagYellow = await pdfDoc.embedPng(iconFlagYellowBytes);
34
+ const iconStability = await pdfDoc.embedPng(iconStabilityBytes);
35
+ const iconThumbprintGreen = await pdfDoc.embedPng(iconThumbprintGreenBytes);
36
+ const iconThumbprintRed = await pdfDoc.embedPng(iconThumbprintRedBytes);
37
+ const mqLogo = await pdfDoc.embedPng(mqLogoBytes);
38
38
 
39
- // embed company logo and profile picture
40
- let profileImage, companyImage;
41
- let profileImageType = util.checkProfilePicture(payload.meta);
42
- let companyImageType = util.checkCompanyLogo(payload.meta);
43
- if (profileImageType) {
44
- if (profileImageType.shape == "square") profileImage = payload.meta.profile_settings.profilePicSquareBase64;
45
- else if (profileImageType.shape == "circle") profileImage = payload.meta.profile_settings.profilePicCircleBase64;
46
- if (profileImageType.type == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(profileImage));
47
- else if (profileImageType.type == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(profileImage));
48
- }
49
- if (companyImageType == "jpg") companyImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
50
- else if (companyImageType == "png") companyImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
39
+ // embed company logo and profile picture
40
+ let profileImage, companyImage;
41
+ let profileImageType = util.checkProfilePicture(payload.meta);
42
+ let companyImageType = util.checkCompanyLogo(payload.meta);
43
+ if (profileImageType) {
44
+ if (profileImageType.shape == "square") profileImage = payload.meta.profile_settings.profilePicSquareBase64;
45
+ else if (profileImageType.shape == "circle") profileImage = payload.meta.profile_settings.profilePicCircleBase64;
46
+ if (profileImageType.type == "jpg") profileImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(profileImage));
47
+ else if (profileImageType.type == "png") profileImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(profileImage));
48
+ }
49
+ if (companyImageType == "jpg") companyImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
50
+ else if (companyImageType == "png") companyImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
51
51
 
52
- // get form for filling
53
- const form = pdfDoc.getForm();
52
+ // get form for filling
53
+ const form = pdfDoc.getForm();
54
54
 
55
- let header = "Heating System Vitals";
56
- form.getTextField('Header').setText(header);
55
+ let header = "Heating System Vitals";
56
+ form.getTextField('Header').setText(header);
57
57
 
58
- let test = payload.tests[0];
59
- if (_test) test = _test;
58
+ let test = payload.tests[0];
59
+ if (_test) test = _test;
60
60
 
61
- // get text fields
62
- let t = payload.tests[0].testInfo;
63
- if (_test) t = _test.testInfo;
64
- let manifoldKey = "pressure_manifold";
65
- if (payload.equipment.multi_stage_heat_system) manifoldKey += "_after";
66
- t.manifoldKey = manifoldKey;
67
- let textFields = getTextFields(payload, t);
61
+ // get text fields
62
+ let t = payload.tests[0].testInfo;
63
+ if (_test) t = _test.testInfo;
64
+ let manifoldKey = "pressure_manifold";
65
+ if (payload.equipment.multi_stage_heat_system) manifoldKey += "_after";
66
+ t.manifoldKey = manifoldKey;
67
+ let textFields = getTextFields(payload, t);
68
68
 
69
- // print company logo and profile picture
70
- if (profileImage && companyImage) {
71
- form.getButton("ProfilePicture").setImage(profileImage);
72
- form.getButton("HalfWidthLogo").setImage(companyImage);
73
- if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
74
- form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
75
- } else if (profileImage) {
76
- form.getButton("ProfilePicture").setImage(profileImage);
77
- form.getButton("HalfWidthLogo").setImage(mqLogo);
78
- if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
79
- form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
80
- } else {
81
- if (companyImage) form.getButton("FullWidthLogo").setImage(companyImage);
82
- else form.getButton("FullWidthLogo").setImage(mqLogo);
83
- }
69
+ // print company logo and profile picture
70
+ if (profileImage && companyImage) {
71
+ form.getButton("ProfilePicture").setImage(profileImage);
72
+ form.getButton("HalfWidthLogo").setImage(companyImage);
73
+ if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
74
+ form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
75
+ } else if (profileImage) {
76
+ form.getButton("ProfilePicture").setImage(profileImage);
77
+ form.getButton("HalfWidthLogo").setImage(mqLogo);
78
+ if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
79
+ form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
80
+ } else {
81
+ if (companyImage) form.getButton("FullWidthLogo").setImage(companyImage);
82
+ else form.getButton("FullWidthLogo").setImage(mqLogo);
83
+ }
84
84
 
85
- // print customer data
86
- let dateTimePlacement = "Upper";
87
- let e = "";
88
- let d = "";
85
+ // print customer data
86
+ let dateTimePlacement = "Upper";
87
+ let e = "";
88
+ let d = "";
89
89
 
90
- let date = new Date();
91
- if (textFields.cName && textFields.address && textFields.city && textFields.state && textFields.zip) {
92
- dateTimePlacement = "Lower";
93
- form.getTextField('Name').setText(`${textFields.cName}`);
94
- form.getTextField('Address1').setText(`${textFields.address}`);
95
- if (textFields.address2) {
96
- form.getTextField('Address2').setText(`${textFields.address2}`);
97
- form.getTextField('CityStateZip').setText(`${textFields.city}${textFields.state}${textFields.zip}`);
98
- } else form.getTextField('Address2').setText(`${textFields.city}${textFields.state}${textFields.zip}`);
99
- form.getTextField('DateOfServiceLabelUpper').setText("");
100
- form.getTextField('TimeOfServiceLabelUpper').setText("");
101
- form.getTextField('DateOfServiceLabelLower').setText("Date of Service:");
102
- form.getTextField('TimeOfServiceLabelLower').setText("Time of Service:");
103
- form.getTextField('DateOfServiceLower').setText(date.toLocaleDateString("en-US"));
104
- form.getTextField('TimeOfServiceLower').setText(date.toLocaleTimeString("en-US"));
105
- } else {
106
- form.getTextField('DateOfServiceLabelLower').setText("");
107
- form.getTextField('TimeOfServiceLabelLower').setText("");
108
- form.getTextField('DateOfServiceLabelUpper').setText("Date of Service:");
109
- form.getTextField('TimeOfServiceLabelUpper').setText("Time of Service:");
110
- form.getTextField('DateOfServiceUpper').setText(date.toLocaleDateString("en-US"));
111
- form.getTextField('TimeOfServiceUpper').setText(date.toLocaleTimeString("en-US"));
112
- }
90
+ let date = new Date();
91
+ if (textFields.cName && textFields.address && textFields.city && textFields.state && textFields.zip) {
92
+ dateTimePlacement = "Lower";
93
+ form.getTextField('Name').setText(`${textFields.cName}`);
94
+ form.getTextField('Address1').setText(`${textFields.address}`);
95
+ if (textFields.address2) {
96
+ form.getTextField('Address2').setText(`${textFields.address2}`);
97
+ form.getTextField('CityStateZip').setText(`${textFields.city}${textFields.state}${textFields.zip}`);
98
+ } else form.getTextField('Address2').setText(`${textFields.city}${textFields.state}${textFields.zip}`);
99
+ form.getTextField('DateOfServiceLabelUpper').setText("");
100
+ form.getTextField('TimeOfServiceLabelUpper').setText("");
101
+ form.getTextField('DateOfServiceLabelLower').setText("Date of Service:");
102
+ form.getTextField('TimeOfServiceLabelLower').setText("Time of Service:");
103
+ form.getTextField('DateOfServiceLower').setText(date.toLocaleDateString("en-US"));
104
+ form.getTextField('TimeOfServiceLower').setText(date.toLocaleTimeString("en-US"));
105
+ } else {
106
+ form.getTextField('DateOfServiceLabelLower').setText("");
107
+ form.getTextField('TimeOfServiceLabelLower').setText("");
108
+ form.getTextField('DateOfServiceLabelUpper').setText("Date of Service:");
109
+ form.getTextField('TimeOfServiceLabelUpper').setText("Time of Service:");
110
+ form.getTextField('DateOfServiceUpper').setText(date.toLocaleDateString("en-US"));
111
+ form.getTextField('TimeOfServiceUpper').setText(date.toLocaleTimeString("en-US"));
112
+ }
113
113
 
114
- let systemScorePercentage = test.testInfo.data.vitals_score ? +test.testInfo.data.vitals_score.toFixed(0) : 0;
115
- let systemScoreGrade = util.getGradeFromScore(systemScorePercentage);
116
- let systemScoreColor = util.getColorFromGrade(systemScoreGrade);
117
- if (!t.data.vitals_score) {
118
- systemScorePercentage = "--";
119
- systemScoreGrade = "";
120
- } else systemScorePercentage += "%";
121
- // print measurement data
122
- form.getTextField(`YourSystemScore${systemScoreColor}`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
114
+ let systemScorePercentage = test.testInfo.data.vitals_score ? +test.testInfo.data.vitals_score.toFixed(0) : 0;
115
+ let systemScoreGrade = util.getGradeFromScore(systemScorePercentage);
116
+ let systemScoreColor = util.getColorFromGrade(systemScoreGrade);
117
+ if (!t.data.vitals_score) {
118
+ systemScorePercentage = "--";
119
+ systemScoreGrade = "";
120
+ } else systemScorePercentage += "%";
121
+ // print measurement data
122
+ form.getTextField(`YourSystemScore${systemScoreColor}`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
123
123
 
124
- form.getTextField('COaf').setText(`${textFields.coaf} ppm`);
125
- form.getTextField('Efficiency').setText(`${textFields.efficiency}`);
126
- form.getTextField('ManifoldPressure').setText(`${textFields.manifoldPressure} inH2O`);
127
- form.getTextField('TemperatureSplit').setText(`${textFields.tempSplit} °${payload.units.temperature}`);
128
- form.getTextField('TotalExternalStaticPressure').setText(`${textFields.tesp} inH2O`);
129
- form.getTextField('FilterFaceVelocity').setText(`${textFields.fltrFace} FPM`);
124
+ form.getTextField('COaf').setText(`${textFields.coaf} ppm`);
125
+ form.getTextField('Efficiency').setText(`${textFields.efficiency}`);
126
+ form.getTextField('ManifoldPressure').setText(`${textFields.manifoldPressure} inH2O`);
127
+ form.getTextField('TemperatureSplit').setText(`${textFields.tempSplit} °${payload.units.temperature}`);
128
+ form.getTextField('TotalExternalStaticPressure').setText(`${textFields.tesp} inH2O`);
129
+ form.getTextField('FilterFaceVelocity').setText(`${textFields.fltrFace} FPM`);
130
130
 
131
- // print losses data (second page)
132
- let prefix;
133
- let lossColor = textFields.ageLoss < 3 ? "Green" : "Red";
134
- prefix = textFields.ageLoss == 0 ? "" : "-";
135
- form.getTextField(`AgeLosses${lossColor}`).setText(`${prefix}${textFields.ageLoss}`);
136
- lossColor = textFields.coafLoss < 3 ? "Green" : "Red";
137
- prefix = textFields.coafLoss == 0 ? "" : "-";
138
- form.getTextField(`CoafLosses${lossColor}`).setText(`${prefix}${textFields.coafLoss}`);
139
- lossColor = textFields.tempSplitLoss < 3 ? "Green" : "Red";
140
- prefix = textFields.tempSplitLoss == 0 ? "" : "-";
141
- form.getTextField(`FuelInputLosses${lossColor}`).setText(`${prefix}${textFields.tempSplitLoss}`);
142
- lossColor = textFields.gasInputLoss < 3 ? "Green" : "Red";
143
- prefix = textFields.gasInputLoss == 0 ? "" : "-";
144
- form.getTextField(`HeatTransferLosses${lossColor}`).setText(`${prefix}${textFields.gasInputLoss}`);
145
- lossColor = textFields.staticLoss < 3 ? "Green" : "Red";
146
- prefix = textFields.staticLoss == 0 ? "" : "-";
147
- form.getTextField(`AirDistributionLosses${lossColor}`).setText(`${prefix}${textFields.staticLoss}`);
148
- form.getTextField('YourSystemScorePage2').setText(`${systemScorePercentage} ${systemScoreGrade}`);
131
+ // print losses data (second page)
132
+ let prefix;
133
+ let lossColor = textFields.ageLoss < 3 ? "Green" : "Red";
134
+ prefix = textFields.ageLoss == 0 ? "" : "-";
135
+ form.getTextField(`AgeLosses${lossColor}`).setText(`${prefix}${textFields.ageLoss}`);
136
+ lossColor = textFields.coafLoss < 3 ? "Green" : "Red";
137
+ prefix = textFields.coafLoss == 0 ? "" : "-";
138
+ form.getTextField(`CoafLosses${lossColor}`).setText(`${prefix}${textFields.coafLoss}`);
139
+ lossColor = textFields.tempSplitLoss < 3 ? "Green" : "Red";
140
+ prefix = textFields.tempSplitLoss == 0 ? "" : "-";
141
+ form.getTextField(`HeatTransferLosses${lossColor}`).setText(`${prefix}${textFields.tempSplitLoss}`);
142
+ lossColor = textFields.gasInputLoss < 3 ? "Green" : "Red";
143
+ prefix = textFields.gasInputLoss == 0 ? "" : "-";
144
+ form.getTextField(`FuelInputLosses${lossColor}`).setText(`${prefix}${textFields.gasInputLoss}`);
145
+ lossColor = textFields.staticLoss < 3 ? "Green" : "Red";
146
+ prefix = textFields.staticLoss == 0 ? "" : "-";
147
+ form.getTextField(`AirDistributionLosses${lossColor}`).setText(`${prefix}${textFields.staticLoss}`);
148
+ form.getTextField('YourSystemScorePage2').setText(`${systemScorePercentage} ${systemScoreGrade}`);
149
149
 
150
- // print targets and range icons
151
- const measureLabels = ["ManifoldPressure", "TempSplit", "Tesp", "FilterFace"];
152
- const targetKeys = [manifoldKey, "temperature_rise", "pressure_static_total_external", "velocity_face_filter1"];
153
- for (let i = 0; i < measureLabels.length; i++) {
154
- let iconPlacement = "Mid";
155
- let icon = iconRangeRed;
156
- let actual = +test.testInfo.data[targetKeys[i]];
157
- let mid = +test.testInfo.targets[targetKeys[i]];
158
- let low = +test.testInfo.targets[`${targetKeys[i]}_ideal_low`];
159
- let high = +test.testInfo.targets[`${targetKeys[i]}_ideal_high`];
160
- low = mid - low;
161
- high = mid + high;
162
- if (targetKeys[i] == "pressure_static_total_external") high = mid * 1.4;
163
- else if (targetKeys[i] == "velocity_face_filter1") high = 500;
164
- let val = test.testInfo.data[targetKeys[i]];
165
- if (actual < low && targetKeys[i] != "velocity_face_filter1") iconPlacement = "Low";
166
- else if (actual > high) iconPlacement = "High";
167
- else if (val) icon = iconRangeGreen;
168
- if (icon) form.getButton(`Image${measureLabels[i]}${iconPlacement}`).setImage(icon);
169
- let targetZone = "";
170
- if (targetKeys[i] == "pressure_static_total_external" || targetKeys[i] == "velocity_face_filter1") targetZone = `(< ${high.toFixed(1)})`;
171
- else if (!isNaN(low) && low != "NaN" && !isNaN(high) && high != "NaN" ) targetZone = `(${low.toFixed(1)} - ${high.toFixed(1)})`;
172
- form.getTextField(`${measureLabels[i]}Target`).setText(targetZone);
173
- }
150
+ // print targets and range icons
151
+ const measureLabels = ["ManifoldPressure", "TempSplit", "Tesp", "FilterFace"];
152
+ const targetKeys = [manifoldKey, "temperature_rise", "pressure_static_total_external", "velocity_face_filter1"];
153
+ for (let i = 0; i < measureLabels.length; i++) {
154
+ let iconPlacement = "Mid";
155
+ let icon = iconRangeRed;
156
+ let actual = +test.testInfo.data[targetKeys[i]];
157
+ let mid = +test.testInfo.targets[targetKeys[i]];
158
+ let low = +test.testInfo.targets[`${targetKeys[i]}_ideal_low`];
159
+ let high = +test.testInfo.targets[`${targetKeys[i]}_ideal_high`];
160
+ low = mid - low;
161
+ high = mid + high;
162
+ if (targetKeys[i] == "pressure_static_total_external") high = mid * 1.4;
163
+ else if (targetKeys[i] == "velocity_face_filter1") high = 500;
164
+ let val = test.testInfo.data[targetKeys[i]];
165
+ if (actual < low && targetKeys[i] != "velocity_face_filter1") iconPlacement = "Low";
166
+ else if (actual > high) iconPlacement = "High";
167
+ else if (val) icon = iconRangeGreen;
168
+ if (icon) form.getButton(`Image${measureLabels[i]}${iconPlacement}`).setImage(icon);
169
+ let targetZone = "";
170
+ if (targetKeys[i] == "pressure_static_total_external" || targetKeys[i] == "velocity_face_filter1") targetZone = `(< ${high.toFixed(1)})`;
171
+ else if (!isNaN(low) && low != "NaN" && !isNaN(high) && high != "NaN") targetZone = `(${low.toFixed(1)} - ${high.toFixed(1)})`;
172
+ form.getTextField(`${measureLabels[i]}Target`).setText(targetZone);
173
+ }
174
174
 
175
- // if (payload.meta.boiler_type == '') {
176
- // form.getTextField(`Header3`).setText('Air Distribution & Filtration');
177
- // form.getTextField(`Subheader4`).setText('Temperature Split');
178
- // form.getTextField(`Subheader5`).setText('Total External Static Pressure');
179
- // form.getTextField(`Subheader6`).setText('Filter Face Velocity');
180
- // } else {
181
- // form.getTextField(`Header3`).setText('Fluid Distribution');
182
- // form.getTextField(`Subheader4`).setText('');
183
- // form.getTextField(`Subheader5`).setText('');
184
- // form.getTextField(`Subheader6`).setText('');
185
- // }
175
+ // if (payload.meta.boiler_type == '') {
176
+ // form.getTextField(`Header3`).setText('Air Distribution & Filtration');
177
+ // form.getTextField(`Subheader4`).setText('Temperature Split');
178
+ // form.getTextField(`Subheader5`).setText('Total External Static Pressure');
179
+ // form.getTextField(`Subheader6`).setText('Filter Face Velocity');
180
+ // } else {
181
+ // form.getTextField(`Header3`).setText('Fluid Distribution');
182
+ // form.getTextField(`Subheader4`).setText('');
183
+ // form.getTextField(`Subheader5`).setText('');
184
+ // form.getTextField(`Subheader6`).setText('');
185
+ // }
186
186
 
187
- let specialCaseIcon = iconRangeRed;
188
- let specialCasePlacement = "Mid";
189
- if (test.testInfo.data.coaf < 100) {
190
- specialCaseIcon = iconRangeGreen;
191
- specialCasePlacement = "Low";
192
- } else if (test.testInfo.data.coaf > 400) specialCasePlacement = "High";
193
- form.getButton(`ImageCOaf${specialCasePlacement}`).setImage(specialCaseIcon);
187
+ let specialCaseIcon = iconRangeRed;
188
+ let specialCasePlacement = "Mid";
189
+ if (test.testInfo.data.coaf < 100) {
190
+ specialCaseIcon = iconRangeGreen;
191
+ specialCasePlacement = "Low";
192
+ } else if (test.testInfo.data.coaf > 400) specialCasePlacement = "High";
193
+ form.getButton(`ImageCOaf${specialCasePlacement}`).setImage(specialCaseIcon);
194
194
 
195
- specialCasePlacement = "Low";
196
- if (test.testInfo.data.efficiency_gcv >= 90) specialCasePlacement = "High";
197
- else if (test.testInfo.data.efficiency_gcv >= 80) specialCasePlacement = "Mid";
198
- form.getButton(`ImageEfficiency${specialCasePlacement}`).setImage(iconRangeGreen);
195
+ specialCasePlacement = "Low";
196
+ if (test.testInfo.data.efficiency_gcv >= 90) specialCasePlacement = "High";
197
+ else if (test.testInfo.data.efficiency_gcv >= 80) specialCasePlacement = "Mid";
198
+ form.getButton(`ImageEfficiency${specialCasePlacement}`).setImage(iconRangeGreen);
199
199
 
200
- // print pass fail measures
201
- if (test.testInfo.subsystem_review_complete) {
202
- let airDistLabel = payload.meta.boiler_type ? "Fluid distribution system" : "Air distribution system";
203
- let passFails = ["ambient_pass_fail", "control_system_pass_fail", "electrical_system_pass_fail", "air_distribution_system_pass_fail", "air_filtration_system_pass_fail", "condensate_drain_system_pass_fail", "indoor_equipment_pass_fail", "venting_system_pass_fail", "fuel_delivery_system_pass_fail", "make_up_air_system_pass_fail", "heat_exchanger_pass_fail", "safety_system_pass_fail", "heating_operation_pass_fail", "combustion_pass_fail", "heating_efficiency_pass_fail"];
204
- let pfLabels = ["Ambient CO", "Control system (thermostat)", "Electrical system", airDistLabel, "Air filtration system", "Condensate drain system", "Indoor equipment", "Venting system", "Fuel delivery system", "Make up air (CAZ)", "Heat exchanger", "Safety system", "Heating operation", "Combustion Safety", "Combustion efficiency"];
205
- if (payload.meta.boiler_type != '') {
206
- passFails.splice(4, 1);
207
- pfLabels.splice(4, 1);
208
- }
209
- if (payload.meta.boiler_type == 'Steam') {
210
- passFails.splice(3, 1);
211
- pfLabels.splice(3, 1);
212
- }
213
- for (let i = 0; i < passFails.length; i++) {
214
- let meas = test.testInfo[passFails[i]];
215
- let icon = meas == "Pass" || meas == "High" || meas == "Mid" ? iconRangeGreen : iconRangeRed;
216
- if (meas == "Caution") icon = iconRangeYellow;
217
- if (passFails[i] == 'heating_efficiency_pass_fail') icon = iconRangeGreen;
218
- form.getButton(`ImageSubsystem${i+1}_af_image`).setImage(icon);
219
- let suffix = test.testInfo[passFails[i]+'_override'] ? ' *' : '';
220
- form.getTextField(`SSR${i+1}`).setText(pfLabels[i] + suffix);
221
- }
222
- } else form.getTextField(`SSR1`).setText("Not yet reviewed");
200
+ // print pass fail measures
201
+ if (test.testInfo.subsystem_review_complete) {
202
+ let airDistLabel = payload.meta.boiler_type ? "Fluid distribution system" : "Air distribution system";
203
+ let passFails = ["ambient_pass_fail", "control_system_pass_fail", "electrical_system_pass_fail", "air_distribution_system_pass_fail", "air_filtration_system_pass_fail", "condensate_drain_system_pass_fail", "indoor_equipment_pass_fail", "venting_system_pass_fail", "fuel_delivery_system_pass_fail", "make_up_air_system_pass_fail", "heat_exchanger_pass_fail", "safety_system_pass_fail", "heating_operation_pass_fail", "combustion_pass_fail", "heating_efficiency_pass_fail"];
204
+ let pfLabels = ["Ambient CO", "Control system (thermostat)", "Electrical system", airDistLabel, "Air filtration system", "Condensate drain system", "Indoor equipment", "Venting system", "Fuel delivery system", "Make up air (CAZ)", "Heat exchanger", "Safety system", "Heating operation", "Combustion Safety", "Combustion efficiency"];
205
+ if (payload.meta.boiler_type != '') {
206
+ passFails.splice(4, 1);
207
+ pfLabels.splice(4, 1);
208
+ }
209
+ if (payload.meta.boiler_type == 'Steam') {
210
+ passFails.splice(3, 1);
211
+ pfLabels.splice(3, 1);
212
+ }
213
+ for (let i = 0; i < passFails.length; i++) {
214
+ let meas = test.testInfo[passFails[i]];
215
+ let icon = meas == "Pass" || meas == "High" || meas == "Mid" ? iconRangeGreen : iconRangeRed;
216
+ if (meas == "Caution") icon = iconRangeYellow;
217
+ if (passFails[i] == 'heating_efficiency_pass_fail') icon = iconRangeGreen;
218
+ form.getButton(`ImageSubsystem${i + 1}_af_image`).setImage(icon);
219
+ let suffix = test.testInfo[passFails[i] + '_override'] ? ' *' : '';
220
+ form.getTextField(`SSR${i + 1}`).setText(pfLabels[i] + suffix);
221
+ }
222
+ } else form.getTextField(`SSR1`).setText("Not yet reviewed");
223
223
 
224
- if (payload.meta.report_type != "FullReport") {
225
- let systemInfoPageBase64 = await systemInfoPage.getReport(payload);
226
- const systemInfoPageDoc = systemInfoPageBase64 ? await PDFDocument.load(util._base64ToArrayBuffer(systemInfoPageBase64)) : false;
227
- const [_systemInfoPageDoc] = systemInfoPageDoc ? await pdfDoc.copyPages(systemInfoPageDoc, [0]) : false;
228
- if (_systemInfoPageDoc) pdfDoc.insertPage(pdfDoc.getPages().length, _systemInfoPageDoc);
229
- }
224
+ if (payload.meta.report_type != "FullReport") {
225
+ let systemInfoPageBase64 = await systemInfoPage.getReport(payload);
226
+ const systemInfoPageDoc = systemInfoPageBase64 ? await PDFDocument.load(util._base64ToArrayBuffer(systemInfoPageBase64)) : false;
227
+ const [_systemInfoPageDoc] = systemInfoPageDoc ? await pdfDoc.copyPages(systemInfoPageDoc, [0]) : false;
228
+ if (_systemInfoPageDoc) pdfDoc.insertPage(pdfDoc.getPages().length, _systemInfoPageDoc);
229
+ }
230
230
 
231
- // flatten and return as base64
232
- form.flatten();
233
- const pdfBase64 = await pdfDoc.saveAsBase64({ dataUri: true });
234
- return pdfBase64;
235
- } catch (error) { console.log(error) }
231
+ // flatten and return as base64
232
+ form.flatten();
233
+ const pdfBase64 = await pdfDoc.saveAsBase64({ dataUri: true });
234
+ return pdfBase64;
235
+ } catch (error) { console.log(error) }
236
236
  }
237
237
 
238
238
  function getTextFields(payload, test) {
package/util.js CHANGED
@@ -84,6 +84,7 @@ export function getToolIcon(test, ref, embeddedIcons) {
84
84
  case "Calculator": toolIcon = embeddedIcons.iconCalculator; break;
85
85
  case "DG-1000": toolIcon = embeddedIcons.iconDg1000; break;
86
86
  case "DG-8": toolIcon = embeddedIcons.iconDg8; break;
87
+ case "JB": toolIcon = embeddedIcons.iconJb; break;
87
88
  }
88
89
  }
89
90
  if (test.source[ref] == "iDVM510" && ref.includes("amperage")) toolIcon = embeddedIcons.iconRedfish510333;