@sme.up/doc-alchemist 1.1.0-SNAPSHOT-20250619105432 → 1.1.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.
Files changed (128) hide show
  1. package/README.md +278 -30
  2. package/dist/assets/gfx-data.d.ts +1 -0
  3. package/dist/assets/gfx-data.js +2 -0
  4. package/dist/assets/gfx-data.js.map +1 -0
  5. package/dist/converters/excel/commons.d.ts +35 -0
  6. package/dist/converters/excel/commons.js +216 -0
  7. package/dist/converters/excel/commons.js.map +1 -0
  8. package/dist/{src/excel/excel-generator.types.d.ts → converters/excel/excel-converter.types.d.ts} +1 -0
  9. package/dist/{src/excel/excel-generator.types.js → converters/excel/excel-converter.types.js} +4 -2
  10. package/dist/converters/excel/excel-converter.types.js.map +1 -0
  11. package/dist/{src/excel/matrix-generator.d.ts → converters/excel/matrix-converter.d.ts} +4 -2
  12. package/dist/{src/excel/matrix-generator.js → converters/excel/matrix-converter.js} +39 -23
  13. package/dist/converters/excel/matrix-converter.js.map +1 -0
  14. package/dist/{src/excel/tree-generator.d.ts → converters/excel/tree-converter.d.ts} +2 -2
  15. package/dist/{src/excel/tree-generator.js → converters/excel/tree-converter.js} +8 -8
  16. package/dist/converters/excel/tree-converter.js.map +1 -0
  17. package/dist/{src/excel/excel-generator.d.ts → converters/excel-converter.d.ts} +2 -1
  18. package/dist/{src/excel/excel-generator.js → converters/excel-converter.js} +4 -4
  19. package/dist/converters/excel-converter.js.map +1 -0
  20. package/dist/converters/images/charts-generator.d.ts +9 -0
  21. package/dist/converters/images/charts-generator.js +250 -0
  22. package/dist/converters/images/charts-generator.js.map +1 -0
  23. package/dist/converters/pdf/autotable-renderer.d.ts +3 -0
  24. package/dist/converters/pdf/autotable-renderer.js +89 -0
  25. package/dist/converters/pdf/autotable-renderer.js.map +1 -0
  26. package/dist/converters/pdf/cover-renderer.d.ts +1 -0
  27. package/dist/converters/pdf/cover-renderer.js +26 -0
  28. package/dist/converters/pdf/cover-renderer.js.map +1 -0
  29. package/dist/converters/pdf/formulas-helper.d.ts +40 -0
  30. package/dist/converters/pdf/formulas-helper.js +227 -0
  31. package/dist/converters/pdf/formulas-helper.js.map +1 -0
  32. package/dist/converters/pdf/matrix-converter.d.ts +16 -0
  33. package/dist/converters/pdf/matrix-converter.js +198 -0
  34. package/dist/converters/pdf/matrix-converter.js.map +1 -0
  35. package/dist/converters/pdf/pdf-converter.types.d.ts +12 -0
  36. package/dist/converters/pdf/pdf-converter.types.js +2 -0
  37. package/dist/converters/pdf/pdf-converter.types.js.map +1 -0
  38. package/dist/converters/pdf/sch-converter.d.ts +3 -0
  39. package/dist/converters/pdf/sch-converter.js +99 -0
  40. package/dist/converters/pdf/sch-converter.js.map +1 -0
  41. package/dist/converters/pdf-converter.d.ts +8 -0
  42. package/dist/converters/pdf-converter.js +44 -0
  43. package/dist/converters/pdf-converter.js.map +1 -0
  44. package/dist/index.d.ts +11 -4
  45. package/dist/index.js +4 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/types/component.d.ts +53 -0
  48. package/dist/types/component.js +53 -0
  49. package/dist/types/component.js.map +1 -0
  50. package/dist/types/data-structures/smeupDataStructure.d.ts +215 -0
  51. package/dist/types/data-structures/smeupDataStructure.js +99 -0
  52. package/dist/types/data-structures/smeupDataStructure.js.map +1 -0
  53. package/dist/types/data-structures/smeupDataTable.d.ts +116 -0
  54. package/dist/types/data-structures/smeupDataTable.js +43 -0
  55. package/dist/types/data-structures/smeupDataTable.js.map +1 -0
  56. package/dist/types/data-structures/smeupDataTree.d.ts +13 -0
  57. package/dist/types/data-structures/smeupDataTree.js +2 -0
  58. package/dist/types/data-structures/smeupDataTree.js.map +1 -0
  59. package/dist/types/data-structures/smeupSch.d.ts +72 -0
  60. package/dist/types/data-structures/smeupSch.js +11 -0
  61. package/dist/types/data-structures/smeupSch.js.map +1 -0
  62. package/dist/types/dynamism.d.ts +45 -0
  63. package/dist/types/dynamism.js +30 -0
  64. package/dist/types/dynamism.js.map +1 -0
  65. package/dist/types/general.d.ts +22 -0
  66. package/dist/types/general.js +24 -0
  67. package/dist/types/general.js.map +1 -0
  68. package/dist/types/helpers.d.ts +4 -0
  69. package/dist/types/helpers.js +6 -0
  70. package/dist/types/helpers.js.map +1 -0
  71. package/dist/{src/types → types}/index.d.ts +8 -2
  72. package/dist/{src/types → types}/index.js +1 -0
  73. package/dist/types/index.js.map +1 -0
  74. package/dist/utils/commons-utility.d.ts +59 -0
  75. package/dist/utils/commons-utility.js +188 -0
  76. package/dist/utils/commons-utility.js.map +1 -0
  77. package/dist/utils/datastructure-utility.d.ts +2 -0
  78. package/dist/utils/datastructure-utility.js +5 -0
  79. package/dist/utils/datastructure-utility.js.map +1 -0
  80. package/dist/{src/utils → utils}/dates-utility.d.ts +9 -0
  81. package/dist/{src/utils → utils}/dates-utility.js +18 -0
  82. package/dist/utils/dates-utility.js.map +1 -0
  83. package/dist/utils/formatter-utility.d.ts +3 -0
  84. package/dist/utils/formatter-utility.js +36 -0
  85. package/dist/utils/formatter-utility.js.map +1 -0
  86. package/dist/{src/utils → utils}/math-utility.d.ts +1 -0
  87. package/dist/{src/utils → utils}/math-utility.js +10 -0
  88. package/dist/utils/math-utility.js.map +1 -0
  89. package/dist/utils/objects-utility.js.map +1 -0
  90. package/dist/utils/regex-utility.js.map +1 -0
  91. package/package.json +17 -13
  92. package/dist/assets/sample-data.d.ts +0 -48
  93. package/dist/assets/sample-data.js +0 -372
  94. package/dist/assets/sample-data.js.map +0 -1
  95. package/dist/debug.d.ts +0 -1
  96. package/dist/debug.js +0 -20
  97. package/dist/debug.js.map +0 -1
  98. package/dist/src/excel/commons.d.ts +0 -21
  99. package/dist/src/excel/commons.js +0 -103
  100. package/dist/src/excel/commons.js.map +0 -1
  101. package/dist/src/excel/excel-generator.js.map +0 -1
  102. package/dist/src/excel/excel-generator.types.js.map +0 -1
  103. package/dist/src/excel/matrix-generator.js.map +0 -1
  104. package/dist/src/excel/tree-generator.js.map +0 -1
  105. package/dist/src/index.d.ts +0 -1
  106. package/dist/src/index.js +0 -2
  107. package/dist/src/index.js.map +0 -1
  108. package/dist/src/pdf/pdf-generator.d.ts +0 -6
  109. package/dist/src/pdf/pdf-generator.js +0 -5
  110. package/dist/src/pdf/pdf-generator.js.map +0 -1
  111. package/dist/src/types/index.js.map +0 -1
  112. package/dist/src/utils/datastructure-utility.d.ts +0 -2
  113. package/dist/src/utils/datastructure-utility.js +0 -5
  114. package/dist/src/utils/datastructure-utility.js.map +0 -1
  115. package/dist/src/utils/dates-utility.js.map +0 -1
  116. package/dist/src/utils/generator-utility.d.ts +0 -31
  117. package/dist/src/utils/generator-utility.js +0 -113
  118. package/dist/src/utils/generator-utility.js.map +0 -1
  119. package/dist/src/utils/math-utility.js.map +0 -1
  120. package/dist/src/utils/objects-utility.js.map +0 -1
  121. package/dist/src/utils/regex-utility.js.map +0 -1
  122. package/dist/tests/excel-generator.test.d.ts +0 -1
  123. package/dist/tests/excel-generator.test.js +0 -380
  124. package/dist/tests/excel-generator.test.js.map +0 -1
  125. /package/dist/{src/utils → utils}/objects-utility.d.ts +0 -0
  126. /package/dist/{src/utils → utils}/objects-utility.js +0 -0
  127. /package/dist/{src/utils → utils}/regex-utility.d.ts +0 -0
  128. /package/dist/{src/utils → utils}/regex-utility.js +0 -0
@@ -1,380 +0,0 @@
1
- import { addStyleToExceljsRow, dataTableToExcelWorkbook, getExcelNumFormat, } from "../src/index.js";
2
- import { SupportedExportFormats, } from "../src/types/index.js";
3
- import ExcelJS from "exceljs";
4
- import { data_table_totals_result_sample_1, table_footer_actions, table_sample_1, table_sample_2, totals_sample_1, tree_grid_sample_1, } from "../assets/sample-data.js";
5
- import { smeupFormulaToExcelFormula } from "../src/excel/commons.js";
6
- import { dataTreeToExcelWorkbook } from "../src/excel/tree-generator.js";
7
- const Workbook = ExcelJS.Workbook;
8
- // #region Tests
9
- describe("Export Manager Test", () => {
10
- it("Formula conversion", () => {
11
- const formulaExamples = {
12
- ["[N1]+[N2]"]: "A1+B1", // Row 1
13
- ["1+1"]: "1+1", // Row 2
14
- ["[N1]+[N2]+[N3]+[N4]"]: "A3+B3+C3+D3", // Row 3
15
- ["1,234+1,0001"]: "1.234+1.0001", // Row 4
16
- ["[N1]+[N2]-[N1]-[N2]"]: "A5+B5-A5-B5", // Row 5
17
- ["([N1]+[N2]/[N3]+[N4])/10"]: "(A6+B6/C6+D6)/10", // Row 6
18
- ["[N1]*[N2]"]: "A7*B7", // Row 7
19
- ["[N1]/0"]: "A8/0", // Row 8
20
- ["([N1]+[N2])-[N1]"]: "(A9+B9)-A9", // Row 9
21
- ["([N1]+[N120])"]: "(A10+DP10)", // Row 10
22
- };
23
- Object.keys(formulaExamples).forEach((smeupFormula, i) => {
24
- expect(smeupFormulaToExcelFormula(smeupFormula, i, getColumns(120))).toBe(formulaExamples[smeupFormula]);
25
- });
26
- });
27
- it("Number format creation", () => {
28
- const cellsFormatNumbers = [
29
- {
30
- data: {
31
- decimals: 0,
32
- },
33
- },
34
- {
35
- data: {
36
- decimals: 1,
37
- },
38
- },
39
- {
40
- data: {
41
- decimals: 2,
42
- },
43
- },
44
- {
45
- data: {
46
- decimals: 3,
47
- },
48
- },
49
- {
50
- data: {
51
- decimals: 4,
52
- },
53
- },
54
- ];
55
- cellsFormatNumbers.forEach((cell, index) => {
56
- const format = "0." + `${index > 0 ? "0".repeat(index) : "00"}`;
57
- expect(getExcelNumFormat(cell.data?.decimals ?? 0, cell.data ?? 0)).toBe(format + ";[Red]-" + format);
58
- });
59
- });
60
- describe("SmeupDataTable export", () => {
61
- it("xlsx format", async () => {
62
- const workbook = dataTableToExcelWorkbook(table_sample_1, SupportedExportFormats.XLSX, {});
63
- const worksheet = workbook.getWorksheet(1);
64
- // Test number of columns
65
- expect(worksheet?.columnCount).toBe(8);
66
- // Test number of rows
67
- expect(worksheet?.actualRowCount).toBe(3);
68
- });
69
- it("csv format", async () => {
70
- const workbook = dataTableToExcelWorkbook(table_sample_1, SupportedExportFormats.CSV, {});
71
- const worksheet = workbook.getWorksheet(1);
72
- // Test number of columns
73
- expect(worksheet?.columnCount).toBe(8);
74
- // Test number of rows
75
- expect(worksheet?.actualRowCount).toBe(3);
76
- });
77
- it("txt format", async () => {
78
- const workbook = dataTableToExcelWorkbook(table_sample_1, SupportedExportFormats.TXT, {});
79
- const worksheet = workbook.getWorksheet(1);
80
- // Test number of columns
81
- expect(worksheet?.columnCount).toBe(8);
82
- // Test number of rows
83
- expect(worksheet?.actualRowCount).toBe(3);
84
- });
85
- it("With groups and outline 2 levels", async () => {
86
- const workbook = dataTableToExcelWorkbook(table_sample_2, SupportedExportFormats.XLSX, {});
87
- const worksheet = workbook.getWorksheet(1);
88
- expect(worksheet?.getRow(2).outlineLevel).toBe(0);
89
- expect(worksheet?.getRow(3).outlineLevel).toBe(1);
90
- expect(worksheet?.getRow(4).outlineLevel).toBe(2);
91
- expect(worksheet?.getRow(5).outlineLevel).toBe(0);
92
- expect(worksheet?.getRow(6).outlineLevel).toBe(1);
93
- expect(worksheet?.getRow(7).outlineLevel).toBe(2);
94
- });
95
- it("With totals", async () => {
96
- const table_totals = JSON.parse(JSON.stringify(table_sample_1));
97
- table_totals.props = {
98
- ...table_totals.props,
99
- totals: totals_sample_1,
100
- };
101
- const workbook = dataTableToExcelWorkbook(table_totals, SupportedExportFormats.XLSX, {});
102
- const worksheet = workbook.getWorksheet(1);
103
- // Test number of columns
104
- expect(worksheet?.columnCount).toBe(8);
105
- // Test number of rows
106
- expect(worksheet?.rowCount).toBe(4);
107
- // Check totals row
108
- worksheet?.getRow(4).eachCell((cell) => {
109
- const columnName = worksheet?.getColumn(cell.col).key;
110
- if (columnName !== undefined) {
111
- expect(cell.formula).toBe(data_table_totals_result_sample_1[columnName]);
112
- }
113
- });
114
- });
115
- it("With groups subtotals correct range and action", () => {
116
- const totalsExpectedFormula = {
117
- Count: "SUBTOTAL(3,C2:C2)",
118
- Sum: "SUBTOTAL(9,C2:C2)",
119
- Max: "SUBTOTAL(4,C2:C2)",
120
- Min: "SUBTOTAL(5,C2:C2)",
121
- Average: "SUBTOTAL(1,C2:C2)",
122
- };
123
- const totalsExpectedSubAction = {
124
- Count: "3",
125
- Sum: "9",
126
- Max: "4",
127
- Min: "5",
128
- Average: "1",
129
- };
130
- Object.keys(totalsExpectedFormula).forEach(async (total) => {
131
- const workbook = dataTableToExcelWorkbook(table_footer_actions(total, [
132
- { column: "1", visible: true },
133
- { column: "2", visible: true },
134
- ], 2, 2), SupportedExportFormats.XLSX, {});
135
- const worksheet = workbook.getWorksheet(1);
136
- const totalKey = total;
137
- expect(worksheet?.getRow(2).getCell(3).formula).toBe(`SUBTOTAL(${totalsExpectedSubAction[totalKey]},C3:C5)`);
138
- expect(worksheet?.getRow(3).getCell(3).formula).toBe(`SUBTOTAL(${totalsExpectedSubAction[totalKey]},C4:C5)`);
139
- expect(worksheet?.getRow(6).getCell(3).formula).toBe(`SUBTOTAL(${totalsExpectedSubAction[totalKey]},C7:C9)`);
140
- expect(worksheet?.getRow(7).getCell(3).formula).toBe(`SUBTOTAL(${totalsExpectedSubAction[totalKey]},C8:C9)`);
141
- });
142
- });
143
- });
144
- describe("SmeupDataTree export - with levels split", () => {
145
- it("xlsx format - with levels split", async () => {
146
- const workbook = await dataTreeToExcelWorkbook(tree_grid_sample_1, SupportedExportFormats.XLSX, {}, true);
147
- const worksheet = workbook.getWorksheet(1);
148
- expect(worksheet).toBeTruthy();
149
- // Test number of columns -> all tree nodes are under the same column with indentation
150
- expect(worksheet?.columnCount).toBe(11);
151
- // Test number of rows
152
- expect(worksheet?.actualRowCount).toBe(6);
153
- });
154
- it("xlsx format with split nodes to columns - with levels split", async () => {
155
- const workbook = await dataTreeToExcelWorkbook(tree_grid_sample_1, SupportedExportFormats.XLSX, {}, true);
156
- const worksheet = workbook.getWorksheet(1);
157
- expect(worksheet).toBeTruthy();
158
- // Test number of columns -> new column for each tree node
159
- expect(worksheet?.columnCount).toBe(11);
160
- // Test number of rows
161
- expect(worksheet?.actualRowCount).toBe(6);
162
- });
163
- it("csv format - with levels split", async () => {
164
- const workbook = await dataTreeToExcelWorkbook(tree_grid_sample_1, SupportedExportFormats.CSV, {}, true);
165
- const worksheet = workbook.getWorksheet(1);
166
- expect(worksheet).toBeDefined();
167
- expect(worksheet).not.toBeNull();
168
- // Test number of columns -> all tree nodes are under the same column with indentation
169
- expect(worksheet?.columnCount).toBe(11);
170
- // Test number of rows
171
- expect(worksheet?.actualRowCount).toBe(6);
172
- });
173
- it("txt format - with levels split", async () => {
174
- const workbook = await dataTreeToExcelWorkbook(tree_grid_sample_1, SupportedExportFormats.TXT, {}, true);
175
- const worksheet = workbook.getWorksheet(1);
176
- expect(worksheet).toBeTruthy();
177
- // Test number of columns -> all tree nodes are under the same column with indentation
178
- expect(worksheet?.columnCount).toBe(11);
179
- // Test number of rows
180
- expect(worksheet?.actualRowCount).toBe(6);
181
- });
182
- it("With totals - with levels split", async () => {
183
- const tree_grid_totals = JSON.parse(JSON.stringify(tree_grid_sample_1));
184
- tree_grid_totals.props = {
185
- ...tree_grid_totals.props,
186
- totals: totals_sample_1,
187
- };
188
- const tree_grid_totals_result_sample_1 = {
189
- COL1: "SUBTOTAL(3,D2:D6)",
190
- HIDDEN_COL: "SUBTOTAL(9,F2:F6)",
191
- SUM_COL: "SUBTOTAL(9,G2:G6)",
192
- AVG_COL: "SUBTOTAL(1,H2:H6)",
193
- MIN_COL: "SUBTOTAL(5,I2:I6)",
194
- MAX_COL: "SUBTOTAL(4,J2:J6)",
195
- DIFF_COL: `(F7-G7)`,
196
- };
197
- const workbook = await dataTreeToExcelWorkbook(tree_grid_totals, SupportedExportFormats.XLSX, {}, true);
198
- const worksheet = workbook.getWorksheet(1);
199
- expect(worksheet).toBeTruthy();
200
- // Test number of columns
201
- expect(worksheet?.columnCount).toBe(11);
202
- // Test number of rows
203
- expect(worksheet?.rowCount).toBe(7);
204
- // Check totals row
205
- worksheet?.getRow(7).eachCell((cell) => {
206
- const columnName = worksheet?.getColumn(cell.col).key;
207
- if (columnName) {
208
- expect(cell.formula).toBe(tree_grid_totals_result_sample_1[columnName]);
209
- }
210
- });
211
- });
212
- it("With split nodes to columns and totals", async () => {
213
- const tree_grid_totals = JSON.parse(JSON.stringify(tree_grid_sample_1));
214
- tree_grid_totals.props = {
215
- ...tree_grid_totals.props,
216
- totals: totals_sample_1,
217
- };
218
- const tree_grid_totals_result_sample_1 = {
219
- COL1: "SUBTOTAL(3,D2:D6)",
220
- HIDDEN_COL: "SUBTOTAL(9,F2:F6)",
221
- SUM_COL: "SUBTOTAL(9,G2:G6)",
222
- AVG_COL: "SUBTOTAL(1,H2:H6)",
223
- MIN_COL: "SUBTOTAL(5,I2:I6)",
224
- MAX_COL: "SUBTOTAL(4,J2:J6)",
225
- DIFF_COL: `(F7-G7)`,
226
- };
227
- const workbook = await dataTreeToExcelWorkbook(tree_grid_totals, SupportedExportFormats.XLSX, {}, true);
228
- const worksheet = workbook.getWorksheet(1);
229
- expect(worksheet).toBeTruthy();
230
- // Test number of columns
231
- expect(worksheet?.columnCount).toBe(11);
232
- // Test number of rows
233
- expect(worksheet?.rowCount).toBe(7);
234
- // Check totals row
235
- worksheet?.getRow(7).eachCell((cell) => {
236
- const columnName = worksheet.getColumn(cell.col).key;
237
- expect(columnName).toBeTruthy();
238
- if (columnName) {
239
- expect(cell.formula).toBe(tree_grid_totals_result_sample_1[columnName]);
240
- }
241
- });
242
- });
243
- });
244
- describe("SmeupDataTree export - no levels split", () => {
245
- it("xlsx format - no levels split", async () => {
246
- const workbook = await dataTreeToExcelWorkbook(tree_grid_sample_1, SupportedExportFormats.XLSX, {}, false);
247
- const worksheet = workbook.getWorksheet(1);
248
- expect(worksheet).toBeTruthy();
249
- // Test number of columns -> all tree nodes are under the same column with indentation
250
- expect(worksheet?.columnCount).toBe(9);
251
- // Test number of rows
252
- expect(worksheet?.actualRowCount).toBe(6);
253
- });
254
- it("xlsx format with split nodes to columns - no levels split", async () => {
255
- const workbook = await dataTreeToExcelWorkbook(tree_grid_sample_1, SupportedExportFormats.XLSX, {}, false);
256
- const worksheet = workbook.getWorksheet(1);
257
- expect(worksheet).toBeTruthy();
258
- // Test number of columns -> new column for each tree node
259
- expect(worksheet?.columnCount).toBe(9);
260
- // Test number of rows
261
- expect(worksheet?.actualRowCount).toBe(6);
262
- });
263
- it("csv format - no levels split", async () => {
264
- const workbook = await dataTreeToExcelWorkbook(tree_grid_sample_1, SupportedExportFormats.CSV, {}, false);
265
- const worksheet = workbook.getWorksheet(1);
266
- expect(worksheet).toBeTruthy();
267
- // Test number of columns -> all tree nodes are under the same column with indentation
268
- expect(worksheet?.columnCount).toBe(9);
269
- // Test number of rows
270
- expect(worksheet?.actualRowCount).toBe(6);
271
- });
272
- it("txt format - no levels split", async () => {
273
- const workbook = await dataTreeToExcelWorkbook(tree_grid_sample_1, SupportedExportFormats.TXT, {}, false);
274
- const worksheet = workbook.getWorksheet(1);
275
- expect(worksheet).toBeTruthy();
276
- // Test number of columns -> all tree nodes are under the same column with indentation
277
- expect(worksheet?.columnCount).toBe(9);
278
- // Test number of rows
279
- expect(worksheet?.actualRowCount).toBe(6);
280
- });
281
- it("With totals - no levels split", async () => {
282
- const tree_grid_totals = JSON.parse(JSON.stringify(tree_grid_sample_1));
283
- tree_grid_totals.props = {
284
- ...tree_grid_totals.props,
285
- totals: totals_sample_1,
286
- };
287
- const tree_grid_totals_result_sample_1 = {
288
- COL1: "SUBTOTAL(3,B2:B6)",
289
- HIDDEN_COL: "SUBTOTAL(9,D2:D6)",
290
- SUM_COL: "SUBTOTAL(9,E2:E6)",
291
- AVG_COL: "SUBTOTAL(1,F2:F6)",
292
- MIN_COL: "SUBTOTAL(5,G2:G6)",
293
- MAX_COL: "SUBTOTAL(4,H2:H6)",
294
- DIFF_COL: `(D7-E7)`,
295
- };
296
- const workbook = await dataTreeToExcelWorkbook(tree_grid_totals, SupportedExportFormats.XLSX, {}, false);
297
- const worksheet = workbook.getWorksheet(1);
298
- expect(worksheet).toBeTruthy();
299
- // Test number of columns
300
- expect(worksheet?.columnCount).toBe(9);
301
- // Test number of rows
302
- expect(worksheet?.rowCount).toBe(7);
303
- // Check totals row
304
- worksheet?.getRow(7).eachCell((cell) => {
305
- const columnName = worksheet.getColumn(cell.col).key;
306
- expect(columnName).toBeTruthy();
307
- if (columnName) {
308
- expect(cell.formula).toBe(tree_grid_totals_result_sample_1[columnName]);
309
- }
310
- });
311
- });
312
- });
313
- });
314
- describe("Cell to XLSX Style converter", () => {
315
- const cellStyle = {
316
- fontWeight: "bold",
317
- backgroundColor: "#74c0f2",
318
- color: "#000000",
319
- };
320
- const cellResult = {
321
- fill: {
322
- type: "pattern",
323
- pattern: "solid",
324
- fgColor: { argb: "FF74c0f2" },
325
- },
326
- font: { bold: true, color: { argb: "FF000000" } },
327
- };
328
- it("SmeupDataCell - Style calculations", async () => {
329
- const workbook = new Workbook();
330
- const worksheet = workbook.addWorksheet("Sheet 1");
331
- const row = worksheet.addRow(["Mario Rossi"]);
332
- addStyleToExceljsRow(row, [{ name: "A", title: "A" }], {
333
- cells: {
334
- A: {
335
- value: "",
336
- obj: {
337
- t: "",
338
- p: "",
339
- k: "",
340
- },
341
- style: cellStyle,
342
- },
343
- },
344
- });
345
- expect(row.getCell(1).style).toStrictEqual(cellResult);
346
- });
347
- it("SmeupDataNode - Style calculations", async () => {
348
- const workbook = new Workbook();
349
- const worksheet = workbook.addWorksheet("Sheet 1");
350
- const row = worksheet.addRow(["Mario Rossi"]);
351
- addStyleToExceljsRow(row, [{ name: "A", title: "A" }], {
352
- cells: {
353
- A: {
354
- value: "",
355
- obj: {
356
- t: "",
357
- p: "",
358
- k: "",
359
- },
360
- style: {},
361
- },
362
- },
363
- style: cellStyle,
364
- });
365
- expect(row.getCell(1).style).toStrictEqual(cellResult);
366
- });
367
- });
368
- // #endregion
369
- // #region Assets
370
- const getColumns = (numberColumns) => {
371
- const columns = [];
372
- for (let num = 1; num <= numberColumns; num++) {
373
- columns.push({
374
- name: `N${num}`,
375
- title: "",
376
- });
377
- }
378
- return columns;
379
- };
380
- //# sourceMappingURL=excel-generator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"excel-generator.test.js","sourceRoot":"","sources":["../../tests/excel-generator.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n SmeupDataCell,\n SmeupDataRow,\n SmeupDataColumn,\n SmeupDataNode,\n} from \"@sme.up/kokos-sdk-node\";\nimport {\n addStyleToExceljsRow,\n dataTableToExcelWorkbook,\n getExcelNumFormat,\n} from \"../src/index.js\";\nimport {\n SupportedExportFormats,\n WebupManagerData,\n} from \"../src/types/index.js\";\nimport ExcelJS from \"exceljs\";\nimport {\n data_table_totals_result_sample_1,\n table_footer_actions,\n table_sample_1,\n table_sample_2,\n totals_sample_1,\n tree_grid_sample_1,\n} from \"../assets/sample-data.js\";\nimport { smeupFormulaToExcelFormula } from \"../src/excel/commons.js\";\nimport { dataTreeToExcelWorkbook } from \"../src/excel/tree-generator.js\";\n\ntype Workbook = ExcelJS.Workbook;\ntype Cell = ExcelJS.Cell;\ntype Row = ExcelJS.Row;\ntype Style = ExcelJS.Style;\nconst Workbook = ExcelJS.Workbook;\n\n// #region Tests\ndescribe(\"Export Manager Test\", () => {\n it(\"Formula conversion\", () => {\n const formulaExamples = {\n [\"[N1]+[N2]\"]: \"A1+B1\", // Row 1\n [\"1+1\"]: \"1+1\", // Row 2\n [\"[N1]+[N2]+[N3]+[N4]\"]: \"A3+B3+C3+D3\", // Row 3\n [\"1,234+1,0001\"]: \"1.234+1.0001\", // Row 4\n [\"[N1]+[N2]-[N1]-[N2]\"]: \"A5+B5-A5-B5\", // Row 5\n [\"([N1]+[N2]/[N3]+[N4])/10\"]: \"(A6+B6/C6+D6)/10\", // Row 6\n [\"[N1]*[N2]\"]: \"A7*B7\", // Row 7\n [\"[N1]/0\"]: \"A8/0\", // Row 8\n [\"([N1]+[N2])-[N1]\"]: \"(A9+B9)-A9\", // Row 9\n [\"([N1]+[N120])\"]: \"(A10+DP10)\", // Row 10\n } as Record<string, string>;\n\n Object.keys(formulaExamples).forEach((smeupFormula, i) => {\n expect(smeupFormulaToExcelFormula(smeupFormula, i, getColumns(120))).toBe(\n formulaExamples[smeupFormula],\n );\n });\n });\n\n it(\"Number format creation\", () => {\n const cellsFormatNumbers: Partial<SmeupDataCell>[] = [\n {\n data: {\n decimals: 0,\n },\n },\n {\n data: {\n decimals: 1,\n },\n },\n {\n data: {\n decimals: 2,\n },\n },\n {\n data: {\n decimals: 3,\n },\n },\n {\n data: {\n decimals: 4,\n },\n },\n ];\n\n cellsFormatNumbers.forEach((cell, index) => {\n const format = \"0.\" + `${index > 0 ? \"0\".repeat(index) : \"00\"}`;\n expect(\n getExcelNumFormat(\n (cell.data?.decimals as number) ?? 0,\n (cell.data as unknown as number) ?? 0,\n ),\n ).toBe(format + \";[Red]-\" + format);\n });\n });\n\n describe(\"SmeupDataTable export\", () => {\n it(\"xlsx format\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_1,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(3);\n });\n\n it(\"csv format\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_1,\n SupportedExportFormats.CSV,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(3);\n });\n\n it(\"txt format\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_1,\n SupportedExportFormats.TXT,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(3);\n });\n\n it(\"With groups and outline 2 levels\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_2,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet?.getRow(2).outlineLevel).toBe(0);\n expect(worksheet?.getRow(3).outlineLevel).toBe(1);\n expect(worksheet?.getRow(4).outlineLevel).toBe(2);\n expect(worksheet?.getRow(5).outlineLevel).toBe(0);\n expect(worksheet?.getRow(6).outlineLevel).toBe(1);\n expect(worksheet?.getRow(7).outlineLevel).toBe(2);\n });\n\n it(\"With totals\", async () => {\n const table_totals = JSON.parse(JSON.stringify(table_sample_1));\n table_totals.props = {\n ...table_totals.props,\n totals: totals_sample_1,\n };\n\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_totals,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.rowCount).toBe(4);\n // Check totals row\n worksheet?.getRow(4).eachCell((cell: Cell) => {\n const columnName = worksheet?.getColumn(cell.col).key;\n if (columnName !== undefined) {\n expect(cell.formula).toBe(\n data_table_totals_result_sample_1[columnName],\n );\n }\n });\n });\n\n it(\"With groups subtotals correct range and action\", () => {\n const totalsExpectedFormula = {\n Count: \"SUBTOTAL(3,C2:C2)\",\n Sum: \"SUBTOTAL(9,C2:C2)\",\n Max: \"SUBTOTAL(4,C2:C2)\",\n Min: \"SUBTOTAL(5,C2:C2)\",\n Average: \"SUBTOTAL(1,C2:C2)\",\n };\n const totalsExpectedSubAction = {\n Count: \"3\",\n Sum: \"9\",\n Max: \"4\",\n Min: \"5\",\n Average: \"1\",\n };\n\n Object.keys(totalsExpectedFormula).forEach(async total => {\n const workbook: ExcelJS.Workbook = dataTableToExcelWorkbook(\n table_footer_actions(\n total,\n [\n { column: \"1\", visible: true },\n { column: \"2\", visible: true },\n ],\n 2,\n 2,\n ),\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n\n const totalKey = total as keyof typeof totalsExpectedSubAction;\n\n expect(worksheet?.getRow(2).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C3:C5)`,\n );\n expect(worksheet?.getRow(3).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C4:C5)`,\n );\n expect(worksheet?.getRow(6).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C7:C9)`,\n );\n expect(worksheet?.getRow(7).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C8:C9)`,\n );\n });\n });\n });\n\n describe(\"SmeupDataTree export - with levels split\", () => {\n it(\"xlsx format - with levels split\", async () => {\n const workbook: ExcelJS.Workbook = await dataTreeToExcelWorkbook(\n tree_grid_sample_1,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n true,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet).toBeTruthy();\n\n // Test number of columns -> all tree nodes are under the same column with indentation\n expect(worksheet?.columnCount).toBe(11);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(6);\n });\n\n it(\"xlsx format with split nodes to columns - with levels split\", async () => {\n const workbook: ExcelJS.Workbook = await dataTreeToExcelWorkbook(\n tree_grid_sample_1,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n true,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet).toBeTruthy();\n\n // Test number of columns -> new column for each tree node\n expect(worksheet?.columnCount).toBe(11);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(6);\n });\n\n it(\"csv format - with levels split\", async () => {\n const workbook: ExcelJS.Workbook = await dataTreeToExcelWorkbook(\n tree_grid_sample_1,\n SupportedExportFormats.CSV,\n {} as WebupManagerData,\n true,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet).toBeDefined();\n expect(worksheet).not.toBeNull();\n\n // Test number of columns -> all tree nodes are under the same column with indentation\n expect(worksheet?.columnCount).toBe(11);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(6);\n });\n\n it(\"txt format - with levels split\", async () => {\n const workbook: ExcelJS.Workbook = await dataTreeToExcelWorkbook(\n tree_grid_sample_1,\n SupportedExportFormats.TXT,\n {} as WebupManagerData,\n true,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet).toBeTruthy();\n\n // Test number of columns -> all tree nodes are under the same column with indentation\n expect(worksheet?.columnCount).toBe(11);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(6);\n });\n\n it(\"With totals - with levels split\", async () => {\n const tree_grid_totals = JSON.parse(JSON.stringify(tree_grid_sample_1));\n tree_grid_totals.props = {\n ...tree_grid_totals.props,\n totals: totals_sample_1,\n };\n const tree_grid_totals_result_sample_1: { [key: string]: string } = {\n COL1: \"SUBTOTAL(3,D2:D6)\",\n HIDDEN_COL: \"SUBTOTAL(9,F2:F6)\",\n SUM_COL: \"SUBTOTAL(9,G2:G6)\",\n AVG_COL: \"SUBTOTAL(1,H2:H6)\",\n MIN_COL: \"SUBTOTAL(5,I2:I6)\",\n MAX_COL: \"SUBTOTAL(4,J2:J6)\",\n DIFF_COL: `(F7-G7)`,\n };\n\n const workbook: ExcelJS.Workbook = await dataTreeToExcelWorkbook(\n tree_grid_totals,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n true,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet).toBeTruthy();\n\n // Test number of columns\n expect(worksheet?.columnCount).toBe(11);\n // Test number of rows\n expect(worksheet?.rowCount).toBe(7);\n // Check totals row\n worksheet?.getRow(7).eachCell((cell: ExcelJS.Cell) => {\n const columnName = worksheet?.getColumn(cell.col).key;\n if (columnName) {\n expect(cell.formula).toBe(\n tree_grid_totals_result_sample_1[columnName],\n );\n }\n });\n });\n it(\"With split nodes to columns and totals\", async () => {\n const tree_grid_totals = JSON.parse(JSON.stringify(tree_grid_sample_1));\n tree_grid_totals.props = {\n ...tree_grid_totals.props,\n totals: totals_sample_1,\n };\n const tree_grid_totals_result_sample_1: { [key: string]: string } = {\n COL1: \"SUBTOTAL(3,D2:D6)\",\n HIDDEN_COL: \"SUBTOTAL(9,F2:F6)\",\n SUM_COL: \"SUBTOTAL(9,G2:G6)\",\n AVG_COL: \"SUBTOTAL(1,H2:H6)\",\n MIN_COL: \"SUBTOTAL(5,I2:I6)\",\n MAX_COL: \"SUBTOTAL(4,J2:J6)\",\n DIFF_COL: `(F7-G7)`,\n };\n\n const workbook: ExcelJS.Workbook = await dataTreeToExcelWorkbook(\n tree_grid_totals,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n true,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet).toBeTruthy();\n\n // Test number of columns\n expect(worksheet?.columnCount).toBe(11);\n // Test number of rows\n expect(worksheet?.rowCount).toBe(7);\n // Check totals row\n worksheet?.getRow(7).eachCell((cell: ExcelJS.Cell) => {\n const columnName = worksheet.getColumn(cell.col).key;\n expect(columnName).toBeTruthy();\n if (columnName) {\n expect(cell.formula).toBe(\n tree_grid_totals_result_sample_1[columnName],\n );\n }\n });\n });\n });\n\n describe(\"SmeupDataTree export - no levels split\", () => {\n it(\"xlsx format - no levels split\", async () => {\n const workbook: ExcelJS.Workbook = await dataTreeToExcelWorkbook(\n tree_grid_sample_1,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n false,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet).toBeTruthy();\n\n // Test number of columns -> all tree nodes are under the same column with indentation\n expect(worksheet?.columnCount).toBe(9);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(6);\n });\n\n it(\"xlsx format with split nodes to columns - no levels split\", async () => {\n const workbook: ExcelJS.Workbook = await dataTreeToExcelWorkbook(\n tree_grid_sample_1,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n false,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet).toBeTruthy();\n\n // Test number of columns -> new column for each tree node\n expect(worksheet?.columnCount).toBe(9);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(6);\n });\n\n it(\"csv format - no levels split\", async () => {\n const workbook: ExcelJS.Workbook = await dataTreeToExcelWorkbook(\n tree_grid_sample_1,\n SupportedExportFormats.CSV,\n {} as WebupManagerData,\n false,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet).toBeTruthy();\n\n // Test number of columns -> all tree nodes are under the same column with indentation\n expect(worksheet?.columnCount).toBe(9);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(6);\n });\n\n it(\"txt format - no levels split\", async () => {\n const workbook: ExcelJS.Workbook = await dataTreeToExcelWorkbook(\n tree_grid_sample_1,\n SupportedExportFormats.TXT,\n {} as WebupManagerData,\n false,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet).toBeTruthy();\n\n // Test number of columns -> all tree nodes are under the same column with indentation\n expect(worksheet?.columnCount).toBe(9);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(6);\n });\n\n it(\"With totals - no levels split\", async () => {\n const tree_grid_totals = JSON.parse(JSON.stringify(tree_grid_sample_1));\n tree_grid_totals.props = {\n ...tree_grid_totals.props,\n totals: totals_sample_1,\n };\n const tree_grid_totals_result_sample_1: Record<string, string> = {\n COL1: \"SUBTOTAL(3,B2:B6)\",\n HIDDEN_COL: \"SUBTOTAL(9,D2:D6)\",\n SUM_COL: \"SUBTOTAL(9,E2:E6)\",\n AVG_COL: \"SUBTOTAL(1,F2:F6)\",\n MIN_COL: \"SUBTOTAL(5,G2:G6)\",\n MAX_COL: \"SUBTOTAL(4,H2:H6)\",\n DIFF_COL: `(D7-E7)`,\n };\n\n const workbook: ExcelJS.Workbook = await dataTreeToExcelWorkbook(\n tree_grid_totals,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n false,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet).toBeTruthy();\n\n // Test number of columns\n expect(worksheet?.columnCount).toBe(9);\n // Test number of rows\n expect(worksheet?.rowCount).toBe(7);\n // Check totals row\n worksheet?.getRow(7).eachCell((cell: ExcelJS.Cell) => {\n const columnName = worksheet.getColumn(cell.col).key;\n expect(columnName).toBeTruthy();\n if (columnName) {\n expect(cell.formula).toBe(\n tree_grid_totals_result_sample_1[columnName],\n );\n }\n });\n });\n });\n});\n\ndescribe(\"Cell to XLSX Style converter\", () => {\n const cellStyle = {\n fontWeight: \"bold\",\n backgroundColor: \"#74c0f2\",\n color: \"#000000\",\n };\n const cellResult = {\n fill: {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"FF74c0f2\" },\n },\n font: { bold: true, color: { argb: \"FF000000\" } },\n } as Style;\n\n it(\"SmeupDataCell - Style calculations\", async () => {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet(\"Sheet 1\");\n\n const row: Row = worksheet.addRow([\"Mario Rossi\"]);\n addStyleToExceljsRow(row, [{ name: \"A\", title: \"A\" }], {\n cells: {\n A: {\n value: \"\",\n obj: {\n t: \"\",\n p: \"\",\n k: \"\",\n },\n style: cellStyle,\n },\n },\n } as SmeupDataRow);\n expect(row.getCell(1).style).toStrictEqual(cellResult);\n });\n it(\"SmeupDataNode - Style calculations\", async () => {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet(\"Sheet 1\");\n const row: Row = worksheet.addRow([\"Mario Rossi\"]);\n addStyleToExceljsRow(row, [{ name: \"A\", title: \"A\" }], {\n cells: {\n A: {\n value: \"\",\n obj: {\n t: \"\",\n p: \"\",\n k: \"\",\n },\n style: {},\n },\n },\n style: cellStyle,\n } as unknown as SmeupDataNode);\n expect(row.getCell(1).style).toStrictEqual(cellResult);\n });\n});\n\n// #endregion\n\n// #region Assets\n\nconst getColumns = (numberColumns: number): SmeupDataColumn[] => {\n const columns: SmeupDataColumn[] = [];\n\n for (let num = 1; num <= numberColumns; num++) {\n columns.push({\n name: `N${num}`,\n title: \"\",\n });\n }\n\n return columns;\n};\n"]}
File without changes
File without changes
File without changes
File without changes