@measurequick/measurequick-report-generator 1.5.176 → 1.5.177

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.5.176",
3
+ "version": "1.5.177",
4
4
  "description": "Generates PDF documents for various measureQuick applications.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -51,16 +51,25 @@ export async function getReport(payload) {
51
51
  let pageHeader = payload.meta.report_mode == "heating" ? "Visual Inspection" : payload.project.unit_not_operational ? "Inoperational System Faults" : "Corrective Measures";
52
52
  form.getTextField('Header').setText(pageTitle);
53
53
 
54
- // For NCI projects (CoolMaxx/HeatMaxx), use NCI logo instead of profile picture (50% of cover size)
55
- let nciLogoImage = null;
56
- if (isNCIProject(payload) && base64.nciLogo) {
57
- nciLogoImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
58
- }
59
-
60
- // print company logo and profile picture
61
- if (nciLogoImage) {
62
- // NCI project - use NCI logo instead of profile picture
63
- form.getButton("ProfilePicture").setImage(nciLogoImage);
54
+ // For NCI projects (CoolMaxx/HeatMaxx), draw NCI logo in place of profile picture (15% larger)
55
+ let isNCI = isNCIProject(payload) && base64.nciLogo;
56
+ if (isNCI) {
57
+ const nciLogoImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
58
+ const pages = pdfDoc.getPages();
59
+ const firstPage = pages[0];
60
+ const { width, height } = firstPage.getSize();
61
+ // Draw NCI logo in profile picture area (upper right), 15% larger than normal
62
+ const logoWidth = 75;
63
+ const logoHeight = logoWidth * (nciLogoImage.height / nciLogoImage.width);
64
+ const x = width - logoWidth - 15;
65
+ const y = height - logoHeight - 42;
66
+ firstPage.drawImage(nciLogoImage, {
67
+ x: x,
68
+ y: y,
69
+ width: logoWidth,
70
+ height: logoHeight,
71
+ });
72
+ // Still set company logo
64
73
  if (companyImage) {
65
74
  form.getButton("HalfWidthLogo").setImage(companyImage);
66
75
  } else {
@@ -68,17 +77,20 @@ export async function getReport(payload) {
68
77
  }
69
78
  if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
70
79
  form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
71
- } else if (profileImage && companyImage) {
80
+ }
81
+
82
+ // print company logo and profile picture
83
+ if (!isNCI && profileImage && companyImage) {
72
84
  form.getButton("ProfilePicture").setImage(profileImage);
73
85
  form.getButton("HalfWidthLogo").setImage(companyImage);
74
86
  if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
75
87
  form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
76
- } else if (profileImage) {
88
+ } else if (!isNCI && profileImage) {
77
89
  form.getButton("ProfilePicture").setImage(profileImage);
78
90
  form.getButton("HalfWidthLogo").setImage(mqLogo);
79
91
  if (payload.meta.profile_settings.techFirstName || payload.meta.profile_settings.techLastName)
80
92
  form.getTextField('TechName').setText(`${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`);
81
- } else {
93
+ } else if (!isNCI) {
82
94
  if (companyImage) form.getButton("FullWidthLogo").setImage(companyImage);
83
95
  else form.getButton("FullWidthLogo").setImage(mqLogo);
84
96
  }
@@ -52,7 +52,7 @@ export async function getReport(payload) {
52
52
  const logoWidth = 180;
53
53
  const logoHeight = logoWidth * (nciLogo.height / nciLogo.width);
54
54
  const x = (width - logoWidth) / 2;
55
- const y = height - logoHeight - 240; // 240 points from top (~3.3 inches)
55
+ const y = height - logoHeight - 204; // 204 points from top (~2.8 inches)
56
56
  firstPage.drawImage(nciLogo, {
57
57
  x: x,
58
58
  y: y,
@@ -200,19 +200,38 @@ export async function getReport(payload) {
200
200
  }
201
201
  }
202
202
 
203
- // For NCI projects (CoolMaxx/HeatMaxx), use NCI logo instead of profile picture (50% of cover size)
204
- let nciLogoImagePg1 = null;
205
- let nciLogoImagePg2 = null;
206
- if (isNCIProject(payload) && base64.nciLogo) {
207
- nciLogoImagePg1 = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
208
- nciLogoImagePg2 = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
209
- }
210
-
211
- // print company logo and profile picture
212
- if (nciLogoImagePg1) {
213
- // NCI project - use NCI logo instead of profile picture
214
- formPg1.getButton("ProfilePicture").setImage(nciLogoImagePg1);
215
- formPg2.getButton("ProfilePicture").setImage(nciLogoImagePg2);
203
+ // For NCI projects (CoolMaxx/HeatMaxx), draw NCI logo in place of profile picture (15% larger)
204
+ let isNCI = isNCIProject(payload) && base64.nciLogo;
205
+ if (isNCI) {
206
+ const nciLogoImagePg1 = await pdfDocPg1.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
207
+ const nciLogoImagePg2 = await pdfDocPg2.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
208
+ const pagesPg1 = pdfDocPg1.getPages();
209
+ const pagesPg2 = pdfDocPg2.getPages();
210
+ const firstPagePg1 = pagesPg1[0];
211
+ const firstPagePg2 = pagesPg2[0];
212
+ const { width: width1, height: height1 } = firstPagePg1.getSize();
213
+ const { width: width2, height: height2 } = firstPagePg2.getSize();
214
+ // Draw NCI logo in profile picture area (upper right), 15% larger than normal
215
+ const logoWidth = 75;
216
+ const logoHeight1 = logoWidth * (nciLogoImagePg1.height / nciLogoImagePg1.width);
217
+ const logoHeight2 = logoWidth * (nciLogoImagePg2.height / nciLogoImagePg2.width);
218
+ const x1 = width1 - logoWidth - 15;
219
+ const y1 = height1 - logoHeight1 - 42;
220
+ const x2 = width2 - logoWidth - 15;
221
+ const y2 = height2 - logoHeight2 - 42;
222
+ firstPagePg1.drawImage(nciLogoImagePg1, {
223
+ x: x1,
224
+ y: y1,
225
+ width: logoWidth,
226
+ height: logoHeight1,
227
+ });
228
+ firstPagePg2.drawImage(nciLogoImagePg2, {
229
+ x: x2,
230
+ y: y2,
231
+ width: logoWidth,
232
+ height: logoHeight2,
233
+ });
234
+ // Still set company logo
216
235
  if (companyImagePg1) {
217
236
  formPg1.getButton("HalfWidthLogo").setImage(companyImagePg1);
218
237
  formPg2.getButton("HalfWidthLogo").setImage(companyImagePg2);
@@ -235,7 +254,10 @@ export async function getReport(payload) {
235
254
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
236
255
  );
237
256
  }
238
- } else if (profileImagePg1 && companyImagePg1) {
257
+ }
258
+
259
+ // print company logo and profile picture
260
+ if (!isNCI && profileImagePg1 && companyImagePg1) {
239
261
  formPg1.getButton("ProfilePicture").setImage(profileImagePg1);
240
262
  formPg1.getButton("HalfWidthLogo").setImage(companyImagePg1);
241
263
  formPg2.getButton("ProfilePicture").setImage(profileImagePg2);
@@ -255,7 +277,7 @@ export async function getReport(payload) {
255
277
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
256
278
  );
257
279
  }
258
- } else if (profileImagePg1) {
280
+ } else if (!isNCI && profileImagePg1) {
259
281
  formPg1.getButton("ProfilePicture").setImage(profileImagePg1);
260
282
  formPg1.getButton("HalfWidthLogo").setImage(mqLogoPg1);
261
283
  formPg2.getButton("ProfilePicture").setImage(profileImagePg2);
@@ -275,7 +297,7 @@ export async function getReport(payload) {
275
297
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
276
298
  );
277
299
  }
278
- } else {
300
+ } else if (!isNCI) {
279
301
  if (companyImagePg1) {
280
302
  formPg1.getButton("FullWidthLogo").setImage(companyImagePg1);
281
303
  formPg2.getButton("FullWidthLogo").setImage(companyImagePg2);
@@ -127,16 +127,25 @@ export async function getReport(payload, _test) {
127
127
  // get text fields
128
128
  let textFields = getTextFields(payload, t);
129
129
 
130
- // For NCI projects (CoolMaxx/HeatMaxx), use NCI logo instead of profile picture (50% of cover size)
131
- let nciLogoImage = null;
132
- if (isNCIProject(payload) && base64.nciLogo) {
133
- nciLogoImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
134
- }
135
-
136
- // print company logo and profile picture
137
- if (nciLogoImage) {
138
- // NCI project - use NCI logo instead of profile picture
139
- form.getButton("ProfilePicture").setImage(nciLogoImage);
130
+ // For NCI projects (CoolMaxx/HeatMaxx), draw NCI logo in place of profile picture (15% larger)
131
+ let isNCI = isNCIProject(payload) && base64.nciLogo;
132
+ if (isNCI) {
133
+ const nciLogoImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
134
+ const pages = pdfDoc.getPages();
135
+ const firstPage = pages[0];
136
+ const { width, height } = firstPage.getSize();
137
+ // Draw NCI logo in profile picture area (upper right), 15% larger than normal
138
+ const logoWidth = 75;
139
+ const logoHeight = logoWidth * (nciLogoImage.height / nciLogoImage.width);
140
+ const x = width - logoWidth - 15;
141
+ const y = height - logoHeight - 42;
142
+ firstPage.drawImage(nciLogoImage, {
143
+ x: x,
144
+ y: y,
145
+ width: logoWidth,
146
+ height: logoHeight,
147
+ });
148
+ // Still set company logo
140
149
  if (companyImage) {
141
150
  form.getButton("HalfWidthLogo").setImage(companyImage);
142
151
  } else {
@@ -151,7 +160,10 @@ export async function getReport(payload, _test) {
151
160
  .setText(
152
161
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
153
162
  );
154
- } else if (profileImage && companyImage) {
163
+ }
164
+
165
+ // print company logo and profile picture
166
+ if (!isNCI && profileImage && companyImage) {
155
167
  // both images are embedded in the document
156
168
  form.getButton("ProfilePicture").setImage(profileImage);
157
169
  form.getButton("HalfWidthLogo").setImage(companyImage);
@@ -164,7 +176,7 @@ export async function getReport(payload, _test) {
164
176
  .setText(
165
177
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
166
178
  );
167
- } else if (profileImage) {
179
+ } else if (!isNCI && profileImage) {
168
180
  // no company logo is embedded in the document
169
181
  form.getButton("ProfilePicture").setImage(profileImage);
170
182
  form.getButton("HalfWidthLogo").setImage(mqLogo);
@@ -177,7 +189,7 @@ export async function getReport(payload, _test) {
177
189
  .setText(
178
190
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
179
191
  );
180
- } else {
192
+ } else if (!isNCI) {
181
193
  // no profile picture is embedded in the document
182
194
  if (companyImage) form.getButton("FullWidthLogo").setImage(companyImage);
183
195
  else form.getButton("FullWidthLogo").setImage(mqLogo);
@@ -115,16 +115,25 @@ export async function getReport(payload, _test) {
115
115
  t.manifoldKey = manifoldKey;
116
116
  let textFields = getTextFields(payload, t);
117
117
 
118
- // For NCI projects (CoolMaxx/HeatMaxx), use NCI logo instead of profile picture (50% of cover size)
119
- let nciLogoImage = null;
120
- if (isNCIProject(payload) && base64.nciLogo) {
121
- nciLogoImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
122
- }
123
-
124
- // print company logo and profile picture
125
- if (nciLogoImage) {
126
- // NCI project - use NCI logo instead of profile picture
127
- safeSetImage(form, "ProfilePicture", nciLogoImage);
118
+ // For NCI projects (CoolMaxx/HeatMaxx), draw NCI logo in place of profile picture (15% larger)
119
+ let isNCI = isNCIProject(payload) && base64.nciLogo;
120
+ if (isNCI) {
121
+ const nciLogoImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
122
+ const pages = pdfDoc.getPages();
123
+ const firstPage = pages[0];
124
+ const { width, height } = firstPage.getSize();
125
+ // Draw NCI logo in profile picture area (upper right), 15% larger than normal
126
+ const logoWidth = 75;
127
+ const logoHeight = logoWidth * (nciLogoImage.height / nciLogoImage.width);
128
+ const x = width - logoWidth - 15;
129
+ const y = height - logoHeight - 42;
130
+ firstPage.drawImage(nciLogoImage, {
131
+ x: x,
132
+ y: y,
133
+ width: logoWidth,
134
+ height: logoHeight,
135
+ });
136
+ // Still set company logo
128
137
  if (companyImage) {
129
138
  safeSetImage(form, "HalfWidthLogo", companyImage);
130
139
  } else {
@@ -139,7 +148,10 @@ export async function getReport(payload, _test) {
139
148
  "TechName",
140
149
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
141
150
  );
142
- } else if (profileImage && companyImage) {
151
+ }
152
+
153
+ // print company logo and profile picture
154
+ if (!isNCI && profileImage && companyImage) {
143
155
  safeSetImage(form, "ProfilePicture", profileImage);
144
156
  safeSetImage(form, "HalfWidthLogo", companyImage);
145
157
  if (
@@ -151,7 +163,7 @@ export async function getReport(payload, _test) {
151
163
  "TechName",
152
164
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
153
165
  );
154
- } else if (profileImage) {
166
+ } else if (!isNCI && profileImage) {
155
167
  safeSetImage(form, "ProfilePicture", profileImage);
156
168
  safeSetImage(form, "HalfWidthLogo", mqLogo);
157
169
  if (
@@ -163,7 +175,7 @@ export async function getReport(payload, _test) {
163
175
  "TechName",
164
176
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
165
177
  );
166
- } else {
178
+ } else if (!isNCI) {
167
179
  if (companyImage) safeSetImage(form, "FullWidthLogo", companyImage);
168
180
  else safeSetImage(form, "FullWidthLogo", mqLogo);
169
181
  }
@@ -128,16 +128,25 @@ export async function getReport(payload, _test) {
128
128
  t.manifoldKey = manifoldKey;
129
129
  let textFields = getTextFields(payload, t);
130
130
 
131
- // For NCI projects (CoolMaxx/HeatMaxx), use NCI logo instead of profile picture (50% of cover size)
132
- let nciLogoImage = null;
133
- if (isNCIProject(payload) && base64.nciLogo) {
134
- nciLogoImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
135
- }
136
-
137
- // print company logo and profile picture
138
- if (nciLogoImage) {
139
- // NCI project - use NCI logo instead of profile picture
140
- safeSetImage(form, "ProfilePicture", nciLogoImage);
131
+ // For NCI projects (CoolMaxx/HeatMaxx), draw NCI logo in place of profile picture (15% larger)
132
+ let isNCI = isNCIProject(payload) && base64.nciLogo;
133
+ if (isNCI) {
134
+ const nciLogoImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64.nciLogo));
135
+ const pages = pdfDoc.getPages();
136
+ const firstPage = pages[0];
137
+ const { width, height } = firstPage.getSize();
138
+ // Draw NCI logo in profile picture area (upper right), 15% larger than normal
139
+ const logoWidth = 75;
140
+ const logoHeight = logoWidth * (nciLogoImage.height / nciLogoImage.width);
141
+ const x = width - logoWidth - 15;
142
+ const y = height - logoHeight - 42;
143
+ firstPage.drawImage(nciLogoImage, {
144
+ x: x,
145
+ y: y,
146
+ width: logoWidth,
147
+ height: logoHeight,
148
+ });
149
+ // Still set company logo
141
150
  if (companyImage) {
142
151
  safeSetImage(form, "HalfWidthLogo", companyImage);
143
152
  } else {
@@ -152,7 +161,10 @@ export async function getReport(payload, _test) {
152
161
  "TechName",
153
162
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
154
163
  );
155
- } else if (profileImage && companyImage) {
164
+ }
165
+
166
+ // print company logo and profile picture
167
+ if (!isNCI && profileImage && companyImage) {
156
168
  safeSetImage(form, "ProfilePicture", profileImage);
157
169
  safeSetImage(form, "HalfWidthLogo", companyImage);
158
170
  if (
@@ -164,7 +176,7 @@ export async function getReport(payload, _test) {
164
176
  "TechName",
165
177
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
166
178
  );
167
- } else if (profileImage) {
179
+ } else if (!isNCI && profileImage) {
168
180
  safeSetImage(form, "ProfilePicture", profileImage);
169
181
  safeSetImage(form, "HalfWidthLogo", mqLogo);
170
182
  if (
@@ -176,7 +188,7 @@ export async function getReport(payload, _test) {
176
188
  "TechName",
177
189
  `${payload.meta.profile_settings.techFirstName} ${payload.meta.profile_settings.techLastName}`
178
190
  );
179
- } else {
191
+ } else if (!isNCI) {
180
192
  if (companyImage) safeSetImage(form, "FullWidthLogo", companyImage);
181
193
  else safeSetImage(form, "FullWidthLogo", mqLogo);
182
194
  }