@measurequick/measurequick-report-generator 1.1.6 → 1.1.10

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.1.6",
3
+ "version": "1.1.10",
4
4
  "description": "Generates PDF documents for various MeasureQuick applications.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -7,7 +7,7 @@ import * as photos1x2 from '../templates/base-64/photos-1x2.js';
7
7
 
8
8
  /***************************************************
9
9
  [Page # || Page Index ]: Purpose
10
- ============================================
10
+ ===================================================
11
11
  [1 || 0]: Cover Sheet
12
12
  [2 || 1]: A/C Vitals Measurements
13
13
  [3 || 2]: A/C Vitals Score Breakdown
@@ -17,14 +17,17 @@ import * as photos1x2 from '../templates/base-64/photos-1x2.js';
17
17
  [7 || 6]: Heating Vitals Information
18
18
  [8 || 7]: Equipment Information
19
19
  [9 || 8]: System Review
20
- [10 || 9]: 2-Column Measurement Details
21
- [11 || 10]: 3-Column Measurement Details
22
- [12 || 11]: 4-Column Measurement Details
23
- [13 || 12]: Understanding A/C Subsystems
24
- [14 || 13]: Understanding Heating Subsystems
25
- [15 || 14]: 2x3 Photo Grid
26
- [16 || 15]: 2x2 Photo Grid
27
- [17 || 16]: 2x1 Photo Grid
20
+ [10 || 9]: 2-Column Measurement Details (Page 1)
21
+ [11 || 10]: 2-Column Measurement Details (Page 2)
22
+ [12 || 11]: 3-Column Measurement Details (Page 1)
23
+ [13 || 12]: 3-Column Measurement Details (Page 2)
24
+ [14 || 13]: 4-Column Measurement Details (Page 1)
25
+ [15 || 14]: 4-Column Measurement Details (Page 2)
26
+ [16 || 15]: Understanding A/C Subsystems
27
+ [17 || 16]: Understanding Heating Subsystems
28
+ [18 || 17]: 2x3 Photo Grid
29
+ [19 || 18]: 2x2 Photo Grid
30
+ [20 || 19]: 2x1 Photo Grid
28
31
  ***************************************************/
29
32
 
30
33
  export async function generateReport(payload) { console.log(payload);
@@ -32,48 +35,45 @@ export async function generateReport(payload) { console.log(payload);
32
35
  // Initialize pdf-lib
33
36
  const pdfDoc = await PDFDocument.load(_base64ToArrayBuffer(pdf.base64));
34
37
 
35
- //pdfDoc.insertPage(0, secondDonorPage);
36
-
37
38
  // Remove Unnecessary Photo Pages
38
39
  let duplicatePhotoPageIndex;
39
40
  if (payload.meta.max_photos_per_page === 2) {
40
- // const duplicatePhotoPageDoc = await PDFDocument.load(_base64ToArrayBuffer(photos3x2.base64));
41
- // const [duplicatePhotoPage] = await pdfDoc.copyPages(duplicatePhotoPageDoc, [0]);
42
- // pdfDoc.addPage(duplicatePhotoPage);
43
- pdfDoc.removePage(15);
44
- pdfDoc.removePage(14);
41
+ duplicatePhotoPageIndex = 19;
42
+ pdfDoc.removePage(18);
43
+ pdfDoc.removePage(17);
45
44
  } else if (payload.meta.max_photos_per_page === 4) {
46
- pdfDoc.removePage(16);
47
- // const duplicatePhotoPageDoc = await PDFDocument.load(_base64ToArrayBuffer(photos2x2.base64));
48
- // const [duplicatePhotoPage] = await pdfDoc.copyPages(duplicatePhotoPageDoc, [0]);
49
- // pdfDoc.addPage(duplicatePhotoPage);
50
- pdfDoc.removePage(14);
45
+ duplicatePhotoPageIndex = 18;
46
+ pdfDoc.removePage(19);
47
+ pdfDoc.removePage(17);
51
48
  } else if (payload.meta.max_photos_per_page === 6) {
52
- pdfDoc.removePage(16);
53
- pdfDoc.removePage(15);
54
- // const duplicatePhotoPageDoc = await PDFDocument.load(_base64ToArrayBuffer(photos1x2.base64));
55
- // const [duplicatePhotoPage] = await pdfDoc.copyPages(duplicatePhotoPageDoc, [0]);
56
- // pdfDoc.addPage(duplicatePhotoPage);
49
+ duplicatePhotoPageIndex = 17;
50
+ pdfDoc.removePage(19);
51
+ pdfDoc.removePage(18);
57
52
  }
58
53
 
54
+ // TODO: Duplicate duplicatePhotoPageIndex (x) numberOfDuplicates = payload.project.photos.length / payload.meta.max_photos_per_page;
55
+
59
56
  // Remove Unnecessary Info Page
60
- if (payload.meta.report_type === "cooling") pdfDoc.removePage(13);
61
- else if (payload.meta.report_type === "heating") pdfDoc.removePage(12);
57
+ if (payload.meta.report_type === "cooling") pdfDoc.removePage(16);
58
+ else if (payload.meta.report_type === "heating") pdfDoc.removePage(15);
62
59
 
63
60
  // Remove Unnecessary Measurement Pages
64
61
  let duplicateMeasurementPageIndex;
65
62
  if (payload.meta.number_of_measurement_columns === 2) {
63
+ pdfDoc.removePage(14);
64
+ pdfDoc.removePage(13);
65
+ pdfDoc.removePage(12);
66
66
  pdfDoc.removePage(11);
67
- pdfDoc.removePage(10);
68
- //duplicate(9);
69
67
  }
70
68
  else if (payload.meta.number_of_measurement_columns === 3) {
71
- pdfDoc.removePage(11);
72
- //duplicate(10);
69
+ pdfDoc.removePage(14);
70
+ pdfDoc.removePage(13);
71
+ pdfDoc.removePage(10);
73
72
  pdfDoc.removePage(9);
74
73
  }
75
74
  else if (payload.meta.number_of_measurement_columns === 4) {
76
- //duplicate(11);
75
+ pdfDoc.removePage(12);
76
+ pdfDoc.removePage(11);
77
77
  pdfDoc.removePage(10);
78
78
  pdfDoc.removePage(9);
79
79
  }
@@ -119,14 +119,12 @@ export async function generateReport(payload) { console.log(payload);
119
119
  // Initialize Form For Population
120
120
  const form = pdfDoc.getForm();
121
121
 
122
- // const fields = form.getFields()
123
- // fields.forEach(field => {
124
- // const type = field.constructor.name
125
- // const name = field.getName()
126
- // const ref = field.ref
127
- // const acroField = field.acroField
128
- // console.log(`${type}: ${name} - ${ref}`)
129
- // })
122
+ const fields = form.getFields()
123
+ fields.forEach(field => {
124
+ const type = field.constructor.name
125
+ const name = field.getName()
126
+ console.log(`${type}: ${name}`)
127
+ })
130
128
 
131
129
  // Populate Cover Sheet
132
130
  form.getTextField("Report Title").setText(payload.meta.report_title);
@@ -163,7 +161,7 @@ export async function generateReport(payload) { console.log(payload);
163
161
  let systemScoreColor = getColorFromGrade(systemScoreGrade);
164
162
  let textFields = getTextFields(payload);
165
163
 
166
- // customer data
164
+ // Populate Customer Data
167
165
  let dateTimePlacement = "Upper";
168
166
  let e = "";
169
167
  let d = "";
@@ -192,7 +190,7 @@ export async function generateReport(payload) { console.log(payload);
192
190
  form.getTextField('TimeOfServiceUpper').setText(date.toLocaleTimeString("en-US"));
193
191
  }
194
192
 
195
- // vitals measurement values
193
+ // Populate Vitals Measurement Data
196
194
  form.getTextField(`YourSystemScore${systemScoreColor}`).setText(`${systemScorePercentage}% ${systemScoreGrade}`);
197
195
  form.getTextField('Superheat').setText(`${textFields.superheat} °${payload.units.temperature}`);
198
196
  form.getTextField('Subcooling').setText(`${textFields.subcooling} °${payload.units.temperature}`);
@@ -214,7 +212,7 @@ export async function generateReport(payload) { console.log(payload);
214
212
  form.getTextField(`RefrigerantChargeIssues${lossColor}`).setText(`- ${textFields.refChargeLosses}`);
215
213
  form.getTextField('YourSystemScorePage2').setText(`${systemScorePercentage}% ${systemScoreGrade}`);
216
214
 
217
- // target & range icons
215
+ // Populate Measurement Range Icons
218
216
  const measureLabels = ["Superheat", "Subcooling", "Condenser", "TempSplit", "Tesp", "FilterFace"];
219
217
  const targetKeys = ["superheat", "subcooling", "approach", "temperature_split", "pressure_static_total_external", "velocity_face_filter1"];
220
218
  for (let i = 0; i < measureLabels.length; i++) {
@@ -238,7 +236,7 @@ export async function generateReport(payload) { console.log(payload);
238
236
  form.getTextField(`${measureLabels[i]}Target`).setText(targetZone);
239
237
  }
240
238
 
241
- // pass fail section
239
+ // Populate Pass Fail Section
242
240
  let passFails = ["electrical_system_pass_fail", "air_distribution_system_pass_fail", "air_filtration_system_pass_fail", "condensate_drain_system_pass_fail", "refrigerant_charge_pass_fail", "outdoor_equipment_pass_fail", "indoor_equipment_pass_fail", "cooling_capacity_pass_fail", "cooling_electrical_efficiency_pass_fail"];
243
241
  for (let i = 1; i <= passFails.length; i++) {
244
242
  let meas = payload.test[passFails[i - 1]];
@@ -247,38 +245,66 @@ export async function generateReport(payload) { console.log(payload);
247
245
  }
248
246
 
249
247
  // Populate Equipment Info Page
248
+ console.log("Equipment Info");
250
249
  form.getTextField(`EI Title 1`).setText(payload.equipment_information.title1);
251
250
  form.getTextField(`EI Title 2`).setText(payload.equipment_information.title2);
252
251
  form.getTextField(`EI Title 3`).setText(payload.equipment_information.title3);
253
252
 
253
+ // Populate System Identification Section
254
+ console.log("System ID");
254
255
  for (let fieldNum = 0; fieldNum <= 5; fieldNum++) {
255
- console.log(payload.equipment_information.system_identification[fieldNum]);
256
256
  let e = payload.equipment_information.system_identification[fieldNum];
257
- form.getTextField(`Equip_Info-Field ${fieldNum+1}a`).setText(`${payload.equipment[e.ref]}`);
258
- form.getTextField(`Equip_Info-Field ${fieldNum+1}b`).setText(`${payload.equipment[e.ref]}`);
257
+ form.getTextField(`Equip_Info-Field ${fieldNum+1}a`).setText(`${e.label}`);
258
+ if (payload.equipment[e.ref]) form.getTextField(`Equip_Info-Field ${fieldNum+1}b`).setText(`${payload.equipment[e.ref]}`);
259
+ else form.getTextField(`Equip_Info-Field ${fieldNum+1}b`).setText("--");
259
260
  }
260
261
 
262
+ // Populate System Profile Section
263
+ console.log("System Profile");
261
264
  let c = 0;
262
265
  for (let fieldNum = 41; fieldNum <= 47; fieldNum++) {
263
- console.log(payload.equipment_information.system_profile[c]);
264
266
  let e = payload.equipment_information.system_profile[c];
265
- form.getTextField(`Equip_Info-Field ${fieldNum+1}a`).setText(`${payload.equipment[e.ref]}`);
266
- form.getTextField(`Equip_Info-Field ${fieldNum+1}b`).setText(`${payload.equipment[e.ref]}`);
267
+ form.getTextField(`Equip_Info-Field ${fieldNum+1}a`).setText(`${e.label}`);
268
+ if (payload.equipment[e.ref]) form.getTextField(`Equip_Info-Field ${fieldNum+1}b`).setText(`${payload.equipment[e.ref]}`);
269
+ else form.getTextField(`Equip_Info-Field ${fieldNum+1}b`).setText("--");
267
270
  c++;
268
271
  }
269
272
 
273
+ // Populate System Components Section
274
+ console.log("System Components");
275
+ let iterateOver = payload.equipment_information.installation_information;
276
+ let sectionPrinting = 1;
270
277
  c = 0;
271
- for (let fieldNum = 6; fieldNum <= 40; fieldNum++) {
272
- console.log(payload.equipment_information.installation_information[c]);
273
- let e = payload.equipment_information.installation_information[c];
278
+ form.getTextField(`Equip_Info-Field 7a`).setText("Installation Information");
279
+ for (let fieldNum = 7; fieldNum <= 40; fieldNum++) {
280
+ let e = iterateOver[c];
274
281
  if (e) {
275
282
  form.getTextField(`Equip_Info-Field ${fieldNum+1}a`).setText(`${e.label}`);
276
- form.getTextField(`Equip_Info-Field ${fieldNum+1}b`).setText(`${payload.equipment[e.ref]}`);
283
+ if (payload.equipment[e.ref]) form.getTextField(`Equip_Info-Field ${fieldNum+1}b`).setText(`${payload.equipment[e.ref]}`);
284
+ else form.getTextField(`Equip_Info-Field ${fieldNum+1}b`).setText("--");
285
+ } else {
286
+ fieldNum++;
287
+ c = 0;
288
+ if (sectionPrinting == 1) {
289
+ iterateOver = payload.equipment_information.filter_information;
290
+ form.getTextField(`Equip_Info-Field ${fieldNum+1}a`).setText("Filter Information");
291
+ } else if (sectionPrinting == 2) {
292
+ iterateOver = payload.equipment_information.capacitors;
293
+ form.getTextField(`Equip_Info-Field ${fieldNum+1}a`).setText("Capacitor Information");
294
+ } else if (sectionPrinting == 3) {
295
+ iterateOver = payload.equipment_information.belt_sizes;
296
+ form.getTextField(`Equip_Info-Field ${fieldNum+1}a`).setText("Belt Information");
297
+ } else break;
298
+ sectionPrinting++;
277
299
  }
278
300
  c++;
279
301
  }
280
302
 
303
+ let t1 = payload.project.tests[0].testInfo;
304
+ let t2 = payload.project.tests[1].testInfo;
305
+
281
306
  // Populate System Review Page
307
+ console.log("System Review");
282
308
  for (let catNum = 1; catNum <= 10; catNum++) {
283
309
  if (payload.system_review[`category${catNum}`]) {
284
310
  form.getTextField(`SR Title ${catNum}`).setText(payload.system_review[`title${catNum}`]);
@@ -286,97 +312,128 @@ export async function generateReport(payload) { console.log(payload);
286
312
  if (factors) {
287
313
  for (let fieldNum = 0; fieldNum < factors.length; fieldNum++) {
288
314
  form.getTextField(`Category ${catNum} Field ${fieldNum+1}a`).setText(`${factors[fieldNum].label} (${factors[fieldNum].units}):`);
289
- form.getTextField(`Category ${catNum} Field ${fieldNum+1}b`).setText(factors[fieldNum].value);
315
+ if (t1.data[factors[fieldNum].ref]) form.getTextField(`Category ${catNum} Field ${fieldNum+1}b`).setText(`${t1.data[factors[fieldNum].ref]}`);
316
+ else form.getTextField(`Category ${catNum} Field ${fieldNum+1}b`).setText("--");
290
317
  }
291
318
  }
292
319
  }
293
320
  }
294
321
 
295
322
  // Populate Measurement Details Page
296
- let t1 = payload.project.tests[0].testInfo;
297
- let t2 = payload.project.tests[1].testInfo;
323
+ console.log("Measurement Details Page 1");
324
+ let suffix = "";//"#0";
298
325
  let rowPrinting = 1;
299
326
  let cNums = payload.meta.number_of_measurement_columns;
300
- form.getTextField(`MD${cNums} Title 1`).setText(payload.measurement_details.title1);
301
- form.getTextField(`MD${cNums} Title 2`).setText(payload.measurement_details.title2);
302
- if (cNums >= 3) form.getTextField(`MD${cNums} Title 3`).setText(payload.measurement_details.title3);
303
- if (cNums == 4) form.getTextField(`MD${cNums} Title 4`).setText(payload.measurement_details.title4);
327
+ form.getTextField(`MD${cNums} Title 1${suffix}`).setText(payload.measurement_details.title1);
328
+ form.getTextField(`MD${cNums} Title 2${suffix}`).setText(payload.measurement_details.title2);
329
+ if (cNums >= 3) form.getTextField(`MD${cNums} Title 3${suffix}`).setText(payload.measurement_details.title3);
330
+ if (cNums == 4) form.getTextField(`MD${cNums} Title 4${suffix}`).setText(payload.measurement_details.title4);
304
331
 
305
- form.getTextField(`MD${cNums} ${rowPrinting}1`).setText("Outdoor Measurements:");
332
+ form.getTextField(`MD${cNums} ${rowPrinting}1${suffix}`).setText("Outdoor Measurements:");
306
333
  rowPrinting++;
307
334
 
308
335
  for (let rowNum = 0; rowNum < payload.measurement_details.outdoor_measurements.length; rowNum++) {
309
336
  let m = payload.measurement_details.outdoor_measurements[rowNum];
310
- //console.log(m);
311
- form.getTextField(`MD${cNums} ${rowPrinting}1`).setText(`${m.label} (${m.units})`);
312
- form.getTextField(`MD${cNums} ${rowPrinting}2`).setText(`${t1.data[m.ref]}`);
313
- if (cNums >= 3) form.getTextField(`MD${cNums} ${rowPrinting}3`).setText(`${t2.data[m.ref]}`);
337
+ form.getTextField(`MD${cNums} ${rowPrinting}1${suffix}`).setText(`${m.label} (${m.units})`);
338
+ if (t1.data[m.ref]) {
339
+ let v = (+t1.data[m.ref]).toFixed(2);
340
+ form.getTextField(`MD${cNums} ${rowPrinting}2${suffix}`).setText(`${v}`);
341
+ } else form.getTextField(`MD${cNums} ${rowPrinting}2${suffix}`).setText("--");
342
+ if (cNums >= 3) {
343
+ if (t2.data[m.ref]) {
344
+ let v = (+t2.data[m.ref]).toFixed(2);
345
+ form.getTextField(`MD${cNums} ${rowPrinting}3${suffix}`).setText(`${v}`);
346
+ } else form.getTextField(`MD${cNums} ${rowPrinting}3${suffix}`).setText("--");
347
+ }
314
348
  if (cNums == 4) {
315
349
  if (t1.data[m.ref] && t2.data[m.ref]) {
316
- let v = (+t1.data[m.ref]) - (+t2.data[m.ref]);
317
- form.getTextField(`MD${cNums} ${rowPrinting}4`).setText(`${v}`);
318
- } else form.getTextField(`MD${cNums} ${rowPrinting}4`).setText("--");
350
+ let v = ((+t1.data[m.ref]) - (+t2.data[m.ref])).toFixed(2);
351
+ form.getTextField(`MD${cNums} ${rowPrinting}4${suffix}`).setText(`${v}`);
352
+ } else form.getTextField(`MD${cNums} ${rowPrinting}4${suffix}`).setText("--");
319
353
  }
320
354
  rowPrinting++;
321
355
  }
322
356
 
323
357
  rowPrinting++;
324
- form.getTextField(`MD${cNums} ${rowPrinting}1`).setText("Weather Data:");
358
+ form.getTextField(`MD${cNums} ${rowPrinting}1${suffix}`).setText("Weather Data:");
325
359
  rowPrinting++;
326
360
 
327
361
  for (let rowNum = 0; rowNum < payload.measurement_details.weather_data.length; rowNum++) {
328
362
  let m = payload.measurement_details.weather_data[rowNum];
329
- //console.log(m);
330
- form.getTextField(`MD${cNums} ${rowPrinting}1`).setText(`${m.label} (${m.units})`);
331
- form.getTextField(`MD${cNums} ${rowPrinting}2`).setText(`${t1.data[m.ref]}`);
332
- if (cNums >= 3) form.getTextField(`MD${cNums} ${rowPrinting}3`).setText(`${t2.data[m.ref]}`);
363
+ form.getTextField(`MD${cNums} ${rowPrinting}1${suffix}`).setText(`${m.label} (${m.units})`);
364
+ if (t1.data[m.ref]) {
365
+ let v = (+t1.data[m.ref]).toFixed(2);
366
+ form.getTextField(`MD${cNums} ${rowPrinting}2${suffix}`).setText(`${v}`);
367
+ } else form.getTextField(`MD${cNums} ${rowPrinting}2${suffix}`).setText("--");
368
+ if (cNums >= 3) {
369
+ if (t2.data[m.ref]) {
370
+ let v = (+t2.data[m.ref]).toFixed(2);
371
+ form.getTextField(`MD${cNums} ${rowPrinting}3${suffix}`).setText(`${v}`);
372
+ } else form.getTextField(`MD${cNums} ${rowPrinting}3${suffix}`).setText("--");
373
+ }
333
374
  if (cNums == 4) {
334
375
  if (t1.data[m.ref] && t2.data[m.ref]) {
335
- let v = (+t1.data[m.ref]) - (+t2.data[m.ref]);
336
- form.getTextField(`MD${cNums} ${rowPrinting}4`).setText(`${v}`);
337
- } else form.getTextField(`MD${cNums} ${rowPrinting}4`).setText("--");
376
+ let v = ((+t1.data[m.ref]) - (+t2.data[m.ref])).toFixed(2);
377
+ form.getTextField(`MD${cNums} ${rowPrinting}4${suffix}`).setText(`${v}`);
378
+ } else form.getTextField(`MD${cNums} ${rowPrinting}4${suffix}`).setText("--");
338
379
  }
339
380
  rowPrinting++;
340
381
  }
341
382
 
342
383
  rowPrinting++;
343
- form.getTextField(`MD${cNums} ${rowPrinting}1`).setText("Indoor Measurements:");
384
+ form.getTextField(`MD${cNums} ${rowPrinting}1${suffix}`).setText("Indoor Measurements:");
344
385
  rowPrinting++;
345
386
 
346
387
  for (let rowNum = 0; rowNum < payload.measurement_details.indoor_measurements.length; rowNum++) {
347
388
  let m = payload.measurement_details.indoor_measurements[rowNum];
348
- //console.log(m);
349
- form.getTextField(`MD${cNums} ${rowPrinting}1`).setText(`${m.label} (${m.units})`);
350
- form.getTextField(`MD${cNums} ${rowPrinting}2`).setText(`${t1.data[m.ref]}`);
351
- if (cNums >= 3) form.getTextField(`MD${cNums} ${rowPrinting}3`).setText(`${t2.data[m.ref]}`);
352
- if (cNums == 4) {
353
- if (t1.data[m.ref] && t2.data[m.ref]) {
354
- let v = (+t1.data[m.ref]) - (+t2.data[m.ref]);
355
- form.getTextField(`MD${cNums} ${rowPrinting}4`).setText(`${v}`);
356
- } else form.getTextField(`MD${cNums} ${rowPrinting}4`).setText("--");
389
+ form.getTextField(`MD${cNums} ${rowPrinting}1${suffix}`).setText(`${m.label} (${m.units})`);
390
+ if (t1.data[m.ref]) {
391
+ let v = (+t1.data[m.ref]).toFixed(2);
392
+ form.getTextField(`MD${cNums} ${rowPrinting}2${suffix}`).setText(`${v}`);
393
+ } else form.getTextField(`MD${cNums} ${rowPrinting}2${suffix}`).setText("--");
394
+ if (cNums >= 3) {
395
+ if (t2.data[m.ref]) {
396
+ let v = (+t2.data[m.ref]).toFixed(2);
397
+ form.getTextField(`MD${cNums} ${rowPrinting}3${suffix}`).setText(`${v}`);
398
+ } else form.getTextField(`MD${cNums} ${rowPrinting}3${suffix}`).setText("--");
357
399
  }
358
- rowPrinting++;
359
- }
360
-
361
- // TODO: Target New Page
362
-
363
- for (let rowNum = 0; rowNum < payload.measurement_details.performance_calculations.length; rowNum++) {
364
- let m = payload.measurement_details.performance_calculations[rowNum];
365
- //console.log(m);
366
- form.getTextField(`MD${cNums} ${rowPrinting}1`).setText(`${m.label} (${m.units})`);
367
- form.getTextField(`MD${cNums} ${rowPrinting}2`).setText(`${t1.data[m.ref]}`);
368
- if (cNums >= 3) form.getTextField(`MD${cNums} ${rowPrinting}3`).setText(`${t2.data[m.ref]}`);
369
400
  if (cNums == 4) {
370
401
  if (t1.data[m.ref] && t2.data[m.ref]) {
371
- let v = (+t1.data[m.ref]) - (+t2.data[m.ref]);
372
- form.getTextField(`MD${cNums} ${rowPrinting}4`).setText(`${v}`);
373
- } else form.getTextField(`MD${cNums} ${rowPrinting}4`).setText("--");
402
+ let v = ((+t1.data[m.ref]) - (+t2.data[m.ref])).toFixed(2);
403
+ form.getTextField(`MD${cNums} ${rowPrinting}4${suffix}`).setText(`${v}`);
404
+ } else form.getTextField(`MD${cNums} ${rowPrinting}4${suffix}`).setText("--");
374
405
  }
375
406
  rowPrinting++;
376
407
  }
377
408
 
409
+ // suffix = "#1";
410
+ // console.log("Measurement Details Page 2");
411
+ //
412
+ // for (let rowNum = 0; rowNum < payload.measurement_details.performance_calculations.length; rowNum++) {
413
+ // let m = payload.measurement_details.performance_calculations[rowNum];
414
+ // form.getTextField(`MD${cNums} ${rowPrinting}1${suffix}`).setText(`${m.label} (${m.units})`);
415
+ // if (t1.data[m.ref]) {
416
+ // let v = (+t1.data[m.ref]).toFixed(2);
417
+ // form.getTextField(`MD${cNums} ${rowPrinting}2${suffix}`).setText(`${v}`);
418
+ // } else form.getTextField(`MD${cNums} ${rowPrinting}2${suffix}`).setText("--");
419
+ // if (cNums >= 3) {
420
+ // if (t2.data[m.ref]) {
421
+ // let v = (+t2.data[m.ref]).toFixed(2);
422
+ // form.getTextField(`MD${cNums} ${rowPrinting}3${suffix}`).setText(`${v}`);
423
+ // } else form.getTextField(`MD${cNums} ${rowPrinting}3${suffix}`).setText("--");
424
+ // }
425
+ // if (cNums == 4) {
426
+ // if (t1.data[m.ref] && t2.data[m.ref]) {
427
+ // let v = (+t1.data[m.ref]) - (+t2.data[m.ref]);
428
+ // form.getTextField(`MD${cNums} ${rowPrinting}4${suffix}`).setText(`${v}`);
429
+ // } else form.getTextField(`MD${cNums} ${rowPrinting}4${suffix}`).setText("--");
430
+ // }
431
+ // rowPrinting++;
432
+ // }
433
+
378
434
  // TODO: Populate Photo Page(s)
379
435
 
436
+
380
437
  // Flatten Form, Convert & Return PDF as Base64
381
438
  form.flatten();
382
439
  const pdfBase64 = await pdfDoc.saveAsBase64({ dataUri: true });
@@ -384,12 +441,6 @@ export async function generateReport(payload) { console.log(payload);
384
441
  return pdfBase64;
385
442
  }
386
443
 
387
- function duplicatePage(fromIndex, toIndex) {
388
- // const duplicatePhotoPageDoc = await PDFDocument.load(_base64ToArrayBuffer(photos3x2.base64));
389
- // const [duplicatePhotoPage] = await pdfDoc.copyPages(duplicatePhotoPageDoc, [0]);
390
- // pdfDoc.addPage(duplicatePhotoPage);
391
- }
392
-
393
444
  function getGradeFromScore(score) {
394
445
  let grade = "F";
395
446
  if (score == 100) return "A+";