@measurequick/measurequick-report-generator 1.2.110 → 1.2.112

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.110",
3
+ "version": "1.2.112",
4
4
  "description": "Generates PDF documents for various MeasureQuick applications.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -16,11 +16,9 @@ export async function getReport(payload) {
16
16
  let b64 = payload.tests.length < 2 ? pdf : pdf2;
17
17
  const pdfDoc = await PDFDocument.load(util._base64ToArrayBuffer(b64.base64));
18
18
  const form = pdfDoc.getForm();
19
- // TODO: Embed Proper Font From Local File -- Eliminate Remote Request
20
19
  const fontBytes = await fetch('https://pdf-lib.js.org/assets/ubuntu/Ubuntu-R.ttf').then(res => res.arrayBuffer());
21
20
  pdfDoc.registerFontkit(fontkit);
22
21
  const font = await pdfDoc.embedFont(fontBytes);
23
-
24
22
  let labels = ["iconRangeHigh", "iconRangeLow", "iconRangeNormal", "iconTesto", "iconCalculator", "iconFieldpiece",
25
23
  "iconUei", "iconSporlanPro", "iconSporlanLegacy", "iconIconnect", "iconImanifold", "iconSensi", "iconDg8",
26
24
  "iconBluflame", "iconRedfish510", "iconRedfish510333", "iconRedfish550", "iconDg1000", "iconTrueflow", "iconThumbprintRed", "iconThumbprintGreen", "iconThumbprintYellow", "whiteBox"
@@ -28,7 +26,6 @@ export async function getReport(payload) {
28
26
  for (let label of labels) embeddedIcons[label] = await pdfDoc.embedPng(util._base64ToArrayBuffer(base64[label]));
29
27
  const mqLogoBytes = util._base64ToArrayBuffer(base64.mqLogo);
30
28
  const mqLogo = await pdfDoc.embedPng(mqLogoBytes);
31
-
32
29
  // embed company logo and profile picture
33
30
  let profileImage, companyImage;
34
31
  let profileImageType = util.checkProfilePicture(payload.meta);
@@ -41,10 +38,8 @@ export async function getReport(payload) {
41
38
  }
42
39
  if (companyImageType == "jpg") companyImage = await pdfDoc.embedJpg(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
43
40
  else if (companyImageType == "png") companyImage = await pdfDoc.embedPng(util._base64ToArrayBuffer(payload.meta.profile_settings.companyLogoBase64));
44
-
45
41
  let pageHeader = payload.meta.report_mode == "heating" ? "Visual Inspection" : "Corrective Measures";
46
42
  form.getTextField('Header').setText(pageHeader);
47
-
48
43
  // print company logo and profile picture
49
44
  if (profileImage && companyImage) {
50
45
  form.getButton("ProfilePicture").setImage(profileImage);
@@ -60,7 +55,6 @@ export async function getReport(payload) {
60
55
  if (companyImage) form.getButton("FullWidthLogo").setImage(companyImage);
61
56
  else form.getButton("FullWidthLogo").setImage(mqLogo);
62
57
  }
63
-
64
58
  let scoreHeader = payload.tests.length > 1 ? "Test In Score" : "Your System Score";
65
59
  form.getTextField("YourSystemScoreHeader").setText(scoreHeader);
66
60
  let systemScorePercentage = payload.tests[0].testInfo.data.vitals_score ? +payload.tests[0].testInfo.data.vitals_score.toFixed(0) : 0;
@@ -71,7 +65,6 @@ export async function getReport(payload) {
71
65
  systemScoreGrade = "";
72
66
  } else systemScorePercentage += "%";
73
67
  form.getTextField(`YourSystemScore${systemScoreColor}`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
74
-
75
68
  if (payload.tests.length > 1) {
76
69
  form.getTextField("YourSystemScoreHeader2").setText("Test Out Score");
77
70
  systemScorePercentage = payload.tests[1].testInfo.data.vitals_score ? +payload.tests[1].testInfo.data.vitals_score.toFixed(0) : 0;
@@ -83,14 +76,12 @@ export async function getReport(payload) {
83
76
  } else systemScorePercentage += "%";
84
77
  form.getTextField(`YourSystemScore${systemScoreColor}2`).setText(`${systemScorePercentage} ${systemScoreGrade}`);
85
78
  }
86
-
87
79
  form.getTextField(`Block1-Title`).setText(payload.system_data.title1);
88
80
  for (let rowNum = 1; rowNum < 12; rowNum++) {
89
81
  let measurement = payload.system_data[`block1`][rowNum - 1];
90
82
  if (measurement) form.getTextField(`Block1-Row${rowNum}`).setText(`${measurement.value}`);
91
83
  else break;
92
84
  }
93
-
94
85
  form.getTextField(`Block2-Title`).setText(payload.system_data.title2);
95
86
  for (let rowNum = 1; rowNum < 12; rowNum++) {
96
87
  let measurement = payload.system_data[`block2`][rowNum - 1];
@@ -102,33 +93,39 @@ export async function getReport(payload) {
102
93
  if (icon) form.getButton(`Block2-Row${rowNum}-Col3`).setImage(icon);
103
94
  } else break;
104
95
  }
105
-
106
96
  form.getTextField(`Block3-Title`).setText(payload.system_data.title3);
107
97
 
108
- let header, text = "", maxWidth = 165, maxHeight = 362, col = 1, maxLines = 20; // TODO: Calculate Max Lines
98
+
99
+
100
+ /** START CORRECTIVE ACTIONS **/
101
+ let header, text = "", col = 1,
102
+ maxWidth = 165, maxHeight = 362,
103
+ maxLines = 362 / font.heightAtSize(8);
109
104
  for (let i = 0; i < payload.system_data.block3.length && col < 4; i++) {
110
105
  let action = payload.system_data.block3[i];
111
106
  if (header != action.ref) text += `\n${action.ref}\n`;
112
107
  header = action.ref;
113
108
  let textWidth = font.widthOfTextAtSize(action.label, 8);
114
- let textHeight = font.heightAtSize(8);
115
109
  let numLines = 1;
116
110
  if (textWidth > maxWidth) {
117
111
  numLines = textWidth / maxWidth;
118
112
  let words = action.label.split(" ");
119
- // TODO: Calculate Line & Column Splits
113
+ let line = "";
114
+ for (let w = 0; w < words.length; w++) {
115
+ if (font.widthOfTextAtSize(`${line} ${words[w]} `, 8) >= maxWidth) line = `${line}\n`;
116
+ else line = `${line} ${words[w]} `;
117
+ }
120
118
  }
121
119
  text += action.label + "\n";
122
- if (true) { // TODO: Calculate Condition
123
- form.getTextField(`Text${col}`).setText(text);
124
- col++;
125
- }
120
+ if (currentHeight >= maxHeight) form.getTextField(`Text${col++}`).setText(text);
126
121
  }
122
+ /** END CORRECTIVE ACTIONS **/
123
+
124
+
127
125
 
128
126
  form.flatten();
129
127
  return await pdfDoc.saveAsBase64({
130
128
  dataUri: true
131
129
  });
132
- } catch (error) { console.log(error); }
133
-
130
+ } catch (error) { console.log(error) }
134
131
  }