@sme.up/doc-alchemist 1.1.0-SNAPSHOT-20250623155458 → 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 (127) 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} +32 -17
  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} +5 -5
  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 +7 -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/{src/utils/generator-utility.js → utils/commons-utility.js} +63 -10
  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 +13 -11
  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 -29
  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 -120
  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 -7
  109. package/dist/src/pdf/pdf-generator.js +0 -28
  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 -34
  117. package/dist/src/utils/generator-utility.js.map +0 -1
  118. package/dist/src/utils/math-utility.js.map +0 -1
  119. package/dist/src/utils/objects-utility.js.map +0 -1
  120. package/dist/src/utils/regex-utility.js.map +0 -1
  121. package/dist/tests/excel-generator.test.d.ts +0 -1
  122. package/dist/tests/excel-generator.test.js +0 -406
  123. package/dist/tests/excel-generator.test.js.map +0 -1
  124. /package/dist/{src/utils → utils}/objects-utility.d.ts +0 -0
  125. /package/dist/{src/utils → utils}/objects-utility.js +0 -0
  126. /package/dist/{src/utils → utils}/regex-utility.d.ts +0 -0
  127. /package/dist/{src/utils → utils}/regex-utility.js +0 -0
@@ -1,372 +0,0 @@
1
- import { SmeupDataStructureType, } from "@sme.up/kokos-sdk-node";
2
- const columns_sample_1 = [
3
- {
4
- name: "COL1",
5
- title: "Column1",
6
- visible: true,
7
- obj: { t: "", p: "" },
8
- },
9
- {
10
- name: "VO_COD_VER_COL",
11
- title: "VO_COD_VER",
12
- visible: true,
13
- obj: { t: "VO", p: "COD_VER" },
14
- },
15
- {
16
- name: "BTN_COL",
17
- title: "Button",
18
- visible: true,
19
- obj: { t: "J4", p: "BTN" },
20
- },
21
- {
22
- name: "COL2",
23
- title: "Column2",
24
- visible: true,
25
- obj: { t: "", p: "" },
26
- },
27
- {
28
- name: "HIDDEN_COL",
29
- title: "Hidden column",
30
- visible: false,
31
- obj: { t: "NR", p: "" },
32
- },
33
- {
34
- name: "SUM_COL",
35
- title: "Sum",
36
- visible: true,
37
- obj: { t: "NR", p: "" },
38
- },
39
- {
40
- name: "AVG_COL",
41
- title: "Average",
42
- visible: true,
43
- obj: { t: "NR", p: "" },
44
- },
45
- {
46
- name: "MIN_COL",
47
- title: "Minimum",
48
- visible: true,
49
- obj: { t: "NR", p: "" },
50
- },
51
- {
52
- name: "MAX_COL",
53
- title: "Maximum",
54
- visible: true,
55
- obj: { t: "NR", p: "" },
56
- },
57
- {
58
- name: "DIFF_COL",
59
- title: "Difference",
60
- visible: true,
61
- formula: "([HIDDEN_COL]-[SUM_COL])",
62
- obj: { t: "NR", p: "" },
63
- },
64
- ];
65
- const cells_1_sample_1 = {
66
- COL1: {
67
- obj: { t: "", p: "", k: "Value 1" },
68
- value: "Value 1",
69
- },
70
- VO_COD_VER_COL: {
71
- obj: { t: "VO", p: "COD_VER", k: "Op" },
72
- value: "Op",
73
- },
74
- BTN_COL: {
75
- obj: { t: "J4", p: "BTN", k: "Button" },
76
- value: "Button",
77
- },
78
- COL2: {
79
- obj: { t: "", p: "", k: "Value 2" },
80
- value: "Value 2",
81
- },
82
- HIDDEN_COL: {
83
- obj: { t: "NR", p: "", k: "33" },
84
- value: "33",
85
- },
86
- SUM_COL: {
87
- obj: { t: "NR", p: "", k: "15" },
88
- value: "15",
89
- },
90
- AVG_COL: {
91
- obj: { t: "NR", p: "", k: "-5" },
92
- value: "-5",
93
- },
94
- MIN_COL: {
95
- obj: { t: "NR", p: "", k: "1000" },
96
- value: "1000",
97
- },
98
- MAX_COL: {
99
- obj: { t: "NR", p: "", k: "12" },
100
- value: "12",
101
- },
102
- DIFF_COL: {
103
- obj: { t: "NR", p: "", k: "-18" },
104
- value: "-18",
105
- },
106
- };
107
- const cells_2_sample_1 = {
108
- COL1: {
109
- obj: { t: "", p: "", k: "Value 3" },
110
- value: "Value 3",
111
- },
112
- VO_COD_VER_COL: {
113
- obj: { t: "VO", p: "COD_VER", k: "Op" },
114
- value: "Op",
115
- },
116
- BTN_COL: {
117
- obj: { t: "J4", p: "BTN", k: "Button" },
118
- value: "Button",
119
- },
120
- COL2: {
121
- obj: { t: "", p: "", k: "Value 4" },
122
- value: "Value 4",
123
- },
124
- HIDDEN_COL: {
125
- obj: { t: "NR", p: "", k: "33" },
126
- value: "33",
127
- },
128
- SUM_COL: {
129
- obj: { t: "NR", p: "", k: "6" },
130
- value: "6",
131
- },
132
- AVG_COL: {
133
- obj: { t: "NR", p: "", k: "-80" },
134
- value: "-80",
135
- },
136
- MIN_COL: {
137
- obj: { t: "NR", p: "", k: "5.5" },
138
- value: "5.5",
139
- },
140
- MAX_COL: {
141
- obj: { t: "NR", p: "", k: "1200" },
142
- value: "1200",
143
- },
144
- DIFF_COL: {
145
- obj: { t: "NR", p: "", k: "-27" },
146
- value: "-27",
147
- },
148
- };
149
- /**
150
- * Sample data for testing Excel generation functionality.
151
- * Contains a table with multiple columns including visible/hidden columns,
152
- * numeric data, and formula columns.
153
- */
154
- export const table_sample_1 = {
155
- smeupDataTable: {
156
- type: SmeupDataStructureType.SmeupDataTable,
157
- columns: columns_sample_1,
158
- rows: [
159
- {
160
- cells: cells_1_sample_1,
161
- },
162
- {
163
- cells: cells_2_sample_1,
164
- },
165
- ],
166
- },
167
- props: {},
168
- };
169
- export const table_sample_2 = {
170
- smeupDataTable: {
171
- type: SmeupDataStructureType.SmeupDataTable,
172
- columns: [
173
- {
174
- name: "1",
175
- title: "1title",
176
- visible: true,
177
- obj: { t: "", p: "" },
178
- },
179
- {
180
- name: "2",
181
- title: "2title",
182
- visible: true,
183
- obj: { t: "", p: "" },
184
- },
185
- {
186
- name: "DSC",
187
- title: "DSCtitle",
188
- visible: true,
189
- obj: { t: "", p: "" },
190
- },
191
- ],
192
- rows: [
193
- {
194
- cells: {
195
- 1: {
196
- obj: { t: "", p: "", k: "" },
197
- value: "1-1",
198
- },
199
- 2: {
200
- obj: { t: "", p: "", k: "" },
201
- value: "2-1",
202
- },
203
- DSC: {
204
- obj: { t: "", p: "", k: "" },
205
- value: "DSC-1",
206
- },
207
- },
208
- },
209
- {
210
- cells: {
211
- 1: {
212
- obj: { t: "", p: "" },
213
- value: "1-2",
214
- },
215
- 2: {
216
- obj: { t: "", p: "" },
217
- value: "2-2",
218
- },
219
- DSC: {
220
- obj: { t: "", p: "" },
221
- value: "DSC-2",
222
- },
223
- },
224
- },
225
- ],
226
- },
227
- props: {
228
- groups: [
229
- { column: "1", visible: true },
230
- { column: "2", visible: true },
231
- ],
232
- totals: [],
233
- },
234
- };
235
- export const tree_grid_sample_1 = {
236
- smeupDataTree: {
237
- type: SmeupDataStructureType.SmeupDataTree,
238
- columns: columns_sample_1,
239
- children: [
240
- {
241
- obj: {
242
- t: "",
243
- p: "",
244
- k: "1LVL.",
245
- },
246
- value: "Node1",
247
- cells: cells_1_sample_1,
248
- children: [
249
- {
250
- obj: {
251
- t: "",
252
- p: "",
253
- k: "2LVL.",
254
- },
255
- value: "Node1",
256
- cells: cells_2_sample_1,
257
- children: [
258
- {
259
- obj: {
260
- t: "",
261
- p: "",
262
- k: "3LVL.",
263
- },
264
- value: "Node1",
265
- cells: cells_1_sample_1,
266
- children: [],
267
- },
268
- ],
269
- },
270
- {
271
- obj: {
272
- t: "",
273
- p: "",
274
- k: "2LVL.",
275
- },
276
- value: "Node2",
277
- cells: cells_2_sample_1,
278
- children: [],
279
- },
280
- ],
281
- },
282
- {
283
- obj: {
284
- t: "",
285
- p: "",
286
- k: "1LVL.",
287
- },
288
- value: "Node2",
289
- cells: cells_1_sample_1,
290
- children: [],
291
- },
292
- ],
293
- },
294
- props: {},
295
- };
296
- // Define table_sample_1 for use in tests
297
- export const totals_sample_1 = {
298
- COL1: "Count",
299
- COL2: "Distinct",
300
- HIDDEN_COL: "Sum",
301
- SUM_COL: "Sum",
302
- AVG_COL: "Average",
303
- MIN_COL: "Min",
304
- MAX_COL: "Max",
305
- DIFF_COL: `${"MATH"}([HIDDEN_COL]-[SUM_COL])`,
306
- };
307
- export const data_table_totals_result_sample_1 = {
308
- COL1: "SUBTOTAL(3,A2:A3)",
309
- HIDDEN_COL: "SUBTOTAL(9,C2:C3)",
310
- SUM_COL: "SUBTOTAL(9,D2:D3)",
311
- AVG_COL: "SUBTOTAL(1,E2:E3)",
312
- MIN_COL: "SUBTOTAL(5,F2:F3)",
313
- MAX_COL: "SUBTOTAL(4,G2:G3)",
314
- DIFF_COL: `(C4-D4)`,
315
- };
316
- export const table_footer_actions = (action, groups, rowsNumber = 1, rowRepetitions = 1) => {
317
- const rows = [];
318
- for (let i = 0; i < rowsNumber; i++) {
319
- const rowObj = {
320
- cells: {
321
- 1: {
322
- obj: { t: "", p: "", k: "" },
323
- value: `1-${i}`,
324
- },
325
- 2: {
326
- obj: { t: "", p: "", k: "" },
327
- value: `2-${i}`,
328
- },
329
- [`${action}`]: {
330
- obj: { t: "NR", p: "", k: "10" },
331
- value: `${i + 1}`,
332
- },
333
- },
334
- id: `${i}`,
335
- };
336
- for (let i = 0; i < rowRepetitions; i++) {
337
- rows.push(rowObj);
338
- }
339
- }
340
- return {
341
- smeupDataTable: {
342
- type: SmeupDataStructureType.SmeupDataTable,
343
- columns: [
344
- {
345
- name: "1",
346
- title: "1title",
347
- visible: true,
348
- obj: { t: "", p: "" },
349
- },
350
- {
351
- name: "2",
352
- title: "2title",
353
- visible: true,
354
- obj: { t: "", p: "" },
355
- },
356
- {
357
- name: `${action}`,
358
- title: `${action}title`,
359
- visible: true,
360
- obj: { t: "NR", p: "" },
361
- },
362
- ],
363
- rows,
364
- },
365
- props: {
366
- groups,
367
- totals: action ? { [`${action}`]: `${action}` } : [],
368
- filter: [],
369
- },
370
- };
371
- };
372
- //# sourceMappingURL=sample-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sample-data.js","sourceRoot":"","sources":["../../assets/sample-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n SmeupDataCell,\n SmeupDataColumn,\n SmeupDataStructureType,\n SmeupDataTable,\n SmeupDataTree,\n} from \"@sme.up/kokos-sdk-node\";\nimport { GenericObject } from \"../src/types/index.js\";\nimport { TotalMode } from \"../src/excel/excel-generator.types.js\";\n\nconst columns_sample_1: SmeupDataColumn[] = [\n {\n name: \"COL1\",\n title: \"Column1\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"VO_COD_VER_COL\",\n title: \"VO_COD_VER\",\n visible: true,\n obj: { t: \"VO\", p: \"COD_VER\" },\n },\n {\n name: \"BTN_COL\",\n title: \"Button\",\n visible: true,\n obj: { t: \"J4\", p: \"BTN\" },\n },\n {\n name: \"COL2\",\n title: \"Column2\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"HIDDEN_COL\",\n title: \"Hidden column\",\n visible: false,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"SUM_COL\",\n title: \"Sum\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"AVG_COL\",\n title: \"Average\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"MIN_COL\",\n title: \"Minimum\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"MAX_COL\",\n title: \"Maximum\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"DIFF_COL\",\n title: \"Difference\",\n visible: true,\n formula: \"([HIDDEN_COL]-[SUM_COL])\",\n obj: { t: \"NR\", p: \"\" },\n },\n];\n\nconst cells_1_sample_1: {\n [key: string]: SmeupDataCell;\n} = {\n COL1: {\n obj: { t: \"\", p: \"\", k: \"Value 1\" },\n value: \"Value 1\",\n },\n VO_COD_VER_COL: {\n obj: { t: \"VO\", p: \"COD_VER\", k: \"Op\" },\n value: \"Op\",\n },\n BTN_COL: {\n obj: { t: \"J4\", p: \"BTN\", k: \"Button\" },\n value: \"Button\",\n },\n COL2: {\n obj: { t: \"\", p: \"\", k: \"Value 2\" },\n value: \"Value 2\",\n },\n HIDDEN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"33\" },\n value: \"33\",\n },\n SUM_COL: {\n obj: { t: \"NR\", p: \"\", k: \"15\" },\n value: \"15\",\n },\n AVG_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-5\" },\n value: \"-5\",\n },\n MIN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"1000\" },\n value: \"1000\",\n },\n MAX_COL: {\n obj: { t: \"NR\", p: \"\", k: \"12\" },\n value: \"12\",\n },\n DIFF_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-18\" },\n value: \"-18\",\n },\n};\n\nconst cells_2_sample_1: {\n [key: string]: SmeupDataCell;\n} = {\n COL1: {\n obj: { t: \"\", p: \"\", k: \"Value 3\" },\n value: \"Value 3\",\n },\n VO_COD_VER_COL: {\n obj: { t: \"VO\", p: \"COD_VER\", k: \"Op\" },\n value: \"Op\",\n },\n BTN_COL: {\n obj: { t: \"J4\", p: \"BTN\", k: \"Button\" },\n value: \"Button\",\n },\n COL2: {\n obj: { t: \"\", p: \"\", k: \"Value 4\" },\n value: \"Value 4\",\n },\n HIDDEN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"33\" },\n value: \"33\",\n },\n SUM_COL: {\n obj: { t: \"NR\", p: \"\", k: \"6\" },\n value: \"6\",\n },\n AVG_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-80\" },\n value: \"-80\",\n },\n MIN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"5.5\" },\n value: \"5.5\",\n },\n MAX_COL: {\n obj: { t: \"NR\", p: \"\", k: \"1200\" },\n value: \"1200\",\n },\n DIFF_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-27\" },\n value: \"-27\",\n },\n};\n\n/**\n * Sample data for testing Excel generation functionality.\n * Contains a table with multiple columns including visible/hidden columns,\n * numeric data, and formula columns.\n */\nexport const table_sample_1: {\n smeupDataTable: SmeupDataTable;\n props: GenericObject;\n} = {\n smeupDataTable: {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: columns_sample_1,\n rows: [\n {\n cells: cells_1_sample_1,\n },\n {\n cells: cells_2_sample_1,\n },\n ],\n } as SmeupDataTable,\n props: {},\n};\n\nexport const table_sample_2 = {\n smeupDataTable: {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: [\n {\n name: \"1\",\n title: \"1title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"2\",\n title: \"2title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"DSC\",\n title: \"DSCtitle\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n ],\n rows: [\n {\n cells: {\n 1: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: \"1-1\",\n },\n 2: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: \"2-1\",\n },\n DSC: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: \"DSC-1\",\n },\n },\n },\n {\n cells: {\n 1: {\n obj: { t: \"\", p: \"\" },\n value: \"1-2\",\n },\n 2: {\n obj: { t: \"\", p: \"\" },\n value: \"2-2\",\n },\n DSC: {\n obj: { t: \"\", p: \"\" },\n value: \"DSC-2\",\n },\n },\n },\n ],\n } as SmeupDataTable,\n props: {\n groups: [\n { column: \"1\", visible: true },\n { column: \"2\", visible: true },\n ],\n totals: [],\n },\n};\n\nexport const tree_grid_sample_1: {\n smeupDataTree: SmeupDataTree;\n props: GenericObject;\n} = {\n smeupDataTree: {\n type: SmeupDataStructureType.SmeupDataTree,\n columns: columns_sample_1,\n children: [\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"1LVL.\",\n },\n value: \"Node1\",\n cells: cells_1_sample_1,\n children: [\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"2LVL.\",\n },\n value: \"Node1\",\n cells: cells_2_sample_1,\n children: [\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"3LVL.\",\n },\n value: \"Node1\",\n cells: cells_1_sample_1,\n children: [],\n },\n ],\n },\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"2LVL.\",\n },\n value: \"Node2\",\n cells: cells_2_sample_1,\n children: [],\n },\n ],\n },\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"1LVL.\",\n },\n value: \"Node2\",\n cells: cells_1_sample_1,\n children: [],\n },\n ],\n },\n props: {},\n};\n\n// Define table_sample_1 for use in tests\nexport const totals_sample_1: { [columnName: string]: TotalMode | string } = {\n COL1: \"Count\" as TotalMode,\n COL2: \"Distinct\" as TotalMode,\n HIDDEN_COL: \"Sum\" as TotalMode,\n SUM_COL: \"Sum\" as TotalMode,\n AVG_COL: \"Average\" as TotalMode,\n MIN_COL: \"Min\" as TotalMode,\n MAX_COL: \"Max\" as TotalMode,\n DIFF_COL: `${\"MATH\" as TotalMode}([HIDDEN_COL]-[SUM_COL])`,\n};\n\nexport const data_table_totals_result_sample_1: { [key: string]: string } = {\n COL1: \"SUBTOTAL(3,A2:A3)\",\n HIDDEN_COL: \"SUBTOTAL(9,C2:C3)\",\n SUM_COL: \"SUBTOTAL(9,D2:D3)\",\n AVG_COL: \"SUBTOTAL(1,E2:E3)\",\n MIN_COL: \"SUBTOTAL(5,F2:F3)\",\n MAX_COL: \"SUBTOTAL(4,G2:G3)\",\n DIFF_COL: `(C4-D4)`,\n};\n\nexport const table_footer_actions = (\n action: string,\n groups: { column: string; visible: boolean }[],\n rowsNumber: number = 1,\n rowRepetitions: number = 1,\n) => {\n const rows: Array<{\n cells: {\n [key: string]: {\n obj: { t: string; p: string; k: string };\n value: string;\n };\n };\n id: string;\n }> = [];\n for (let i = 0; i < rowsNumber; i++) {\n const rowObj = {\n cells: {\n 1: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: `1-${i}`,\n },\n 2: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: `2-${i}`,\n },\n [`${action}`]: {\n obj: { t: \"NR\", p: \"\", k: \"10\" },\n value: `${i + 1}`,\n },\n },\n id: `${i}`,\n };\n for (let i = 0; i < rowRepetitions; i++) {\n rows.push(rowObj);\n }\n }\n return {\n smeupDataTable: {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: [\n {\n name: \"1\",\n title: \"1title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"2\",\n title: \"2title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: `${action}`,\n title: `${action}title`,\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n ],\n rows,\n } as SmeupDataTable,\n props: {\n groups,\n totals: action ? { [`${action}`]: `${action}` } : [],\n filter: [],\n },\n };\n};\n"]}
package/dist/debug.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
package/dist/debug.js DELETED
@@ -1,29 +0,0 @@
1
- import { SupportedExportFormats } from "./src/types/index.js";
2
- //import { table_sample_1 } from "./assets/sample-data.js";
3
- import path from "path";
4
- import fs from "fs/promises";
5
- import { dataTableToExcelData } from "./src/excel/excel-generator.js";
6
- async function main() {
7
- const managerData = {
8
- mathLocale: "it-IT",
9
- datesLocale: "it-IT",
10
- themeBackground: "",
11
- };
12
- const dataTableJSON = JSON.parse(await fs.readFile("F:/temp/data-table.json", "utf-8"));
13
- const dataTableProps = {
14
- ...dataTableJSON,
15
- };
16
- delete dataTableProps.data;
17
- const dataTable = {
18
- smeupDataTable: dataTableJSON.data,
19
- props: dataTableProps,
20
- };
21
- console.log("Generating Excel data...");
22
- const excelData = await dataTableToExcelData(dataTable, SupportedExportFormats.XLSX, managerData);
23
- const outputPath = path.resolve("./output/sample-export-debug.xlsx");
24
- console.log("Saving Excel to:", outputPath);
25
- await fs.writeFile(outputPath, excelData);
26
- console.log("Excel file saved successfully at:", outputPath);
27
- }
28
- main().catch(console.error);
29
- //# sourceMappingURL=debug.js.map
package/dist/debug.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAoB,MAAM,sBAAsB,CAAC;AAChF,2DAA2D;AAC3D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAqB;QACpC,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,OAAO;QACpB,eAAe,EAAE,EAAE;KACpB,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAC9B,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC,CACtD,CAAC;IAEF,MAAM,cAAc,GAAG;QACrB,GAAG,aAAa;KACjB,CAAC;IAEF,OAAO,cAAc,CAAC,IAAI,CAAC;IAE3B,MAAM,SAAS,GAAG;QAChB,cAAc,EAAE,aAAa,CAAC,IAAI;QAClC,KAAK,EAAE,cAAc;KACtB,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExC,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAC1C,SAAS,EACT,sBAAsB,CAAC,IAAI,EAC3B,WAAW,CACZ,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAE5C,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC;AAC/D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC","sourcesContent":["import { SupportedExportFormats, WebupManagerData } from \"./src/types/index.js\";\n//import { table_sample_1 } from \"./assets/sample-data.js\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport { dataTableToExcelData } from \"./src/excel/excel-generator.js\";\n\nasync function main() {\n const managerData: WebupManagerData = {\n mathLocale: \"it-IT\",\n datesLocale: \"it-IT\",\n themeBackground: \"\",\n };\n\n const dataTableJSON = JSON.parse(\n await fs.readFile(\"F:/temp/data-table.json\", \"utf-8\"),\n );\n\n const dataTableProps = {\n ...dataTableJSON,\n };\n\n delete dataTableProps.data;\n\n const dataTable = {\n smeupDataTable: dataTableJSON.data,\n props: dataTableProps,\n };\n\n console.log(\"Generating Excel data...\");\n\n const excelData = await dataTableToExcelData(\n dataTable,\n SupportedExportFormats.XLSX,\n managerData,\n );\n\n const outputPath = path.resolve(\"./output/sample-export-debug.xlsx\");\n console.log(\"Saving Excel to:\", outputPath);\n\n await fs.writeFile(outputPath, excelData);\n console.log(\"Excel file saved successfully at:\", outputPath);\n}\n\nmain().catch(console.error);\n"]}
@@ -1,21 +0,0 @@
1
- import ExcelJS, { Worksheet } from "exceljs";
2
- import { SmeupDataColumn } from "@sme.up/kokos-sdk-node";
3
- import { GenericObject, WebupManagerData } from "../types/index.js";
4
- /**
5
- * Adds creator, creation date to the workbook and creates a sheet
6
- * @param workbook
7
- * @returns void
8
- */
9
- export declare const initializeWorksheet: (workbook: ExcelJS.Workbook) => ExcelJS.Worksheet;
10
- export declare const setHeaderStyling: (worksheet: Worksheet, background?: boolean) => void;
11
- export declare const addFooterTotalsRow: (worksheet: ExcelJS.Worksheet, columns: SmeupDataColumn[], props: GenericObject, webupManagerData: WebupManagerData) => void;
12
- /**
13
- * Returns the formula used in the footer to add Totals at the end of the table
14
- * @param totalOperation string
15
- * @param colIndex string
16
- * @param rowNumber number
17
- * @returns
18
- */
19
- export declare const getTotalFormula: (totalOperation: string, colIndex: number, rowNumber: number, filteredColumns: SmeupDataColumn[], isSmeupFormula: boolean) => string;
20
- export declare const getExcelColumnLetter: (index: number) => string;
21
- export declare const smeupFormulaToExcelFormula: (formula: string, rowNumber: number, filteredColumns: SmeupDataColumn[]) => string;
@@ -1,120 +0,0 @@
1
- import ExcelJS from "exceljs";
2
- import { allowedTotals, footerStyleFill, headerStyleFill, } from "./excel-generator.types.js";
3
- import { objectsIsDate } from "../utils/objects-utility.js";
4
- import { getExcelNumFormat } from "./matrix-generator.js";
5
- const { ValueType } = ExcelJS;
6
- /**
7
- * Adds creator, creation date to the workbook and creates a sheet
8
- * @param workbook
9
- * @returns void
10
- */
11
- export const initializeWorksheet = (workbook) => {
12
- workbook.creator = "/doc-alchemist - dataTable excel generator";
13
- workbook.created = new Date();
14
- const worksheet = workbook.addWorksheet("Export");
15
- // worksheet.pageSetup = {
16
- // paperSize: 9, // A4 paper size
17
- // orientation: "landscape",
18
- // fitToPage: true,
19
- // fitToHeight: 1,
20
- // fitToWidth: 1,
21
- // margins: {
22
- // left: 0.5, // 0.5 inch left margin
23
- // right: 0.5, // 0.5 inch right margin
24
- // top: 0.5, // 0.5 inch top margin
25
- // bottom: 0.5, // 0.5 inch bottom margin
26
- // header: 0.3, // 0.3 inch header margin
27
- // footer: 0.3, // 0.3 inch footer margin
28
- // },
29
- // printTitlesRow: "1:1", // Print the first row as title
30
- // };
31
- return worksheet;
32
- };
33
- export const setHeaderStyling = (worksheet, background = false) => {
34
- const headerRow = worksheet.getRow(1);
35
- headerRow.font = { bold: true };
36
- headerRow.alignment = {
37
- horizontal: "center",
38
- vertical: "middle",
39
- wrapText: true,
40
- };
41
- if (background) {
42
- for (let col = 1; col <= worksheet.columns.length; col++) {
43
- const cell = headerRow.getCell(col);
44
- cell.fill = headerStyleFill;
45
- }
46
- }
47
- };
48
- export const addFooterTotalsRow = (worksheet, columns, props, webupManagerData) => {
49
- if (!props?.totals || typeof props.totals !== "object") {
50
- return;
51
- }
52
- const totals = props.totals;
53
- // Set footer total formulas
54
- const footerRowData = columns.map((column, columnIndex) => {
55
- const totalOperation = totals[column.name];
56
- if (!totalOperation)
57
- return;
58
- const formula = getTotalFormula(totalOperation, columnIndex + 1, // from base 0 to base 1
59
- worksheet.rowCount, columns, totalOperation.startsWith("MATH"));
60
- return formula ? { formula: formula, type: ValueType.Formula } : " ";
61
- });
62
- const footerRow = worksheet.addRow(footerRowData);
63
- // Format excel footer cells
64
- footerRow.font = { bold: true };
65
- footerRow.alignment = { horizontal: "right" };
66
- columns.map((column, index) => {
67
- const exceljsCell = footerRow.getCell(index + 1); // Convert base 0 index to base 1
68
- exceljsCell.fill = footerStyleFill;
69
- if (column.obj &&
70
- objectsIsDate(column.obj) &&
71
- (exceljsCell.formula?.startsWith(allowedTotals.Min) ||
72
- exceljsCell.formula?.startsWith(allowedTotals.Max))) {
73
- const dateFormat = webupManagerData.datesLocale === "it" ? "dd/mm/yyyy" : "mm/dd/yyyy";
74
- exceljsCell.numFmt = dateFormat;
75
- return;
76
- }
77
- exceljsCell.numFmt = getExcelNumFormat(column.decimals ?? 0, column.integers ?? 0);
78
- });
79
- };
80
- /**
81
- * Returns the formula used in the footer to add Totals at the end of the table
82
- * @param totalOperation string
83
- * @param colIndex string
84
- * @param rowNumber number
85
- * @returns
86
- */
87
- export const getTotalFormula = (totalOperation, colIndex, rowNumber, filteredColumns, isSmeupFormula) => {
88
- const startRow = 2;
89
- const columnExcelLetter = getExcelColumnLetter(colIndex);
90
- if (isSmeupFormula) {
91
- return smeupFormulaToExcelFormula(totalOperation, rowNumber, filteredColumns);
92
- }
93
- if (!allowedTotals[totalOperation]) {
94
- console.warn(`Total operation [' ${totalOperation} '] is not supported`, "exportUtils.ts");
95
- return "";
96
- }
97
- return `${allowedTotals[totalOperation]}${columnExcelLetter}${startRow}:${columnExcelLetter}${rowNumber})`;
98
- };
99
- export const getExcelColumnLetter = (index) => {
100
- let columnLetter = "";
101
- while (index > 0) {
102
- index--; // Excel columns are 1-based, but calculations work better with 0-based
103
- columnLetter = String.fromCharCode((index % 26) + 65) + columnLetter;
104
- index = Math.floor(index / 26);
105
- }
106
- return columnLetter;
107
- };
108
- export const smeupFormulaToExcelFormula = (formula, rowNumber, filteredColumns) => {
109
- return formula
110
- .replace("MATH", "")
111
- .replace(/\[(\w+)\]/g, (_, key) => {
112
- const columnIndex = filteredColumns.findIndex(col => col.name === key) + 1; // Convert to base 1 index
113
- const columnLetter = getExcelColumnLetter(columnIndex);
114
- return columnLetter && columnIndex
115
- ? `${columnLetter}${rowNumber + 1}`
116
- : key; // Return column letter with row number or original key if not found
117
- })
118
- .replaceAll(",", "."); // Replace eventual , to . => The excel accepted decimal separator
119
- };
120
- //# sourceMappingURL=commons.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/excel/commons.ts"],"names":[],"mappings":"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","sourcesContent":["import ExcelJS, { Worksheet } from \"exceljs\";\nimport {\n allowedTotals,\n footerStyleFill,\n headerStyleFill,\n} from \"./excel-generator.types.js\";\nimport { SmeupDataColumn } from \"@sme.up/kokos-sdk-node\";\nimport { GenericObject, WebupManagerData } from \"../types/index.js\";\nimport { objectsIsDate } from \"../utils/objects-utility.js\";\nimport { getExcelNumFormat } from \"./matrix-generator.js\";\nconst { ValueType } = ExcelJS;\n\n/**\n * Adds creator, creation date to the workbook and creates a sheet\n * @param workbook\n * @returns void\n */\nexport const initializeWorksheet = (workbook: ExcelJS.Workbook) => {\n workbook.creator = \"/doc-alchemist - dataTable excel generator\";\n workbook.created = new Date();\n\n const worksheet = workbook.addWorksheet(\"Export\");\n // worksheet.pageSetup = {\n // paperSize: 9, // A4 paper size\n // orientation: \"landscape\",\n // fitToPage: true,\n // fitToHeight: 1,\n // fitToWidth: 1,\n // margins: {\n // left: 0.5, // 0.5 inch left margin\n // right: 0.5, // 0.5 inch right margin\n // top: 0.5, // 0.5 inch top margin\n // bottom: 0.5, // 0.5 inch bottom margin\n // header: 0.3, // 0.3 inch header margin\n // footer: 0.3, // 0.3 inch footer margin\n // },\n // printTitlesRow: \"1:1\", // Print the first row as title\n // };\n\n return worksheet;\n};\n\nexport const setHeaderStyling = (\n worksheet: Worksheet,\n background = false,\n): void => {\n const headerRow = worksheet.getRow(1);\n headerRow.font = { bold: true };\n headerRow.alignment = {\n horizontal: \"center\",\n vertical: \"middle\",\n wrapText: true,\n };\n\n if (background) {\n for (let col = 1; col <= worksheet.columns.length; col++) {\n const cell = headerRow.getCell(col);\n cell.fill = headerStyleFill;\n }\n }\n};\n\nexport const addFooterTotalsRow = (\n worksheet: ExcelJS.Worksheet,\n columns: SmeupDataColumn[],\n props: GenericObject,\n webupManagerData: WebupManagerData,\n) => {\n if (!props?.totals || typeof props.totals !== \"object\") {\n return;\n }\n\n const totals = props.totals as Record<string, string>;\n\n // Set footer total formulas\n const footerRowData = columns.map((column, columnIndex) => {\n const totalOperation: string = totals[column.name];\n if (!totalOperation) return;\n\n const formula = getTotalFormula(\n totalOperation,\n columnIndex + 1, // from base 0 to base 1\n worksheet.rowCount,\n columns,\n totalOperation.startsWith(\"MATH\"),\n );\n\n return formula ? { formula: formula, type: ValueType.Formula } : \" \";\n });\n const footerRow = worksheet.addRow(footerRowData);\n\n // Format excel footer cells\n footerRow.font = { bold: true };\n footerRow.alignment = { horizontal: \"right\" };\n columns.map((column, index) => {\n const exceljsCell = footerRow.getCell(index + 1); // Convert base 0 index to base 1\n exceljsCell.fill = footerStyleFill;\n\n if (\n column.obj &&\n objectsIsDate(column.obj) &&\n (exceljsCell.formula?.startsWith(allowedTotals.Min) ||\n exceljsCell.formula?.startsWith(allowedTotals.Max))\n ) {\n const dateFormat =\n webupManagerData.datesLocale === \"it\" ? \"dd/mm/yyyy\" : \"mm/dd/yyyy\";\n exceljsCell.numFmt = dateFormat;\n return;\n }\n\n exceljsCell.numFmt = getExcelNumFormat(\n column.decimals ?? 0,\n column.integers ?? 0,\n );\n });\n};\n\n/**\n * Returns the formula used in the footer to add Totals at the end of the table\n * @param totalOperation string\n * @param colIndex string\n * @param rowNumber number\n * @returns\n */\nexport const getTotalFormula = (\n totalOperation: string,\n colIndex: number,\n rowNumber: number,\n filteredColumns: SmeupDataColumn[],\n isSmeupFormula: boolean,\n): string => {\n const startRow = 2;\n const columnExcelLetter = getExcelColumnLetter(colIndex);\n\n if (isSmeupFormula) {\n return smeupFormulaToExcelFormula(\n totalOperation,\n rowNumber,\n filteredColumns,\n );\n }\n\n if (!allowedTotals[totalOperation]) {\n console.warn(\n `Total operation [' ${totalOperation} '] is not supported`,\n \"exportUtils.ts\",\n );\n return \"\";\n }\n\n return `${allowedTotals[totalOperation]}${columnExcelLetter}${startRow}:${columnExcelLetter}${rowNumber})`;\n};\n\nexport const getExcelColumnLetter = (index: number): string => {\n let columnLetter = \"\";\n while (index > 0) {\n index--; // Excel columns are 1-based, but calculations work better with 0-based\n columnLetter = String.fromCharCode((index % 26) + 65) + columnLetter;\n index = Math.floor(index / 26);\n }\n return columnLetter;\n};\n\nexport const smeupFormulaToExcelFormula = (\n formula: string,\n rowNumber: number,\n filteredColumns: SmeupDataColumn[],\n): string => {\n return formula\n .replace(\"MATH\", \"\")\n .replace(/\\[(\\w+)\\]/g, (_, key) => {\n const columnIndex =\n filteredColumns.findIndex(col => col.name === key) + 1; // Convert to base 1 index\n const columnLetter = getExcelColumnLetter(columnIndex);\n return columnLetter && columnIndex\n ? `${columnLetter}${rowNumber + 1}`\n : key; // Return column letter with row number or original key if not found\n })\n .replaceAll(\",\", \".\"); // Replace eventual , to . => The excel accepted decimal separator\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"excel-generator.js","sourceRoot":"","sources":["../../../src/excel/excel-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,sBAAsB,GAEvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,SAGC,EACD,UAAkC,EAClC,gBAAkC,EACJ,EAAE;IAChC,MAAM,QAAQ,GAAG,wBAAwB,CACvC,SAAS,EACT,UAAU,EACV,gBAAgB,CACjB,CAAC;IAEF,OAAO,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,SAGC,EACD,UAAkC,EAClC,gBAAkC,EACJ,EAAE;IAChC,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAC5C,SAAS,EACT,UAAU,EACV,gBAAgB,CACjB,CAAC;IAEF,OAAO,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAC/B,QAAkB,EAClB,UAAkC,EACJ,EAAE;IAChC,kDAAkD;IAClD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrD,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,sBAAsB,CAAC,GAAG,CAAC;QAChC,KAAK,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC/C,gBAAgB,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE;aACrC,CAAC,CAAC;YACH,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC,CAAC","sourcesContent":["import { SmeupDataTable, SmeupDataTree } from \"@sme.up/kokos-sdk-node\";\nimport {\n GenericObject,\n SupportedExportFormats,\n WebupManagerData,\n} from \"../types/index.js\";\nimport { convertToBuffer } from \"../utils/generator-utility.js\";\nimport { dataTableToExcelWorkbook } from \"./matrix-generator.js\";\nimport { Workbook } from \"exceljs\";\nimport { dataTreeToExcelWorkbook } from \"./tree-generator.js\";\n\nexport const dataTableToExcelData = async (\n component: {\n smeupDataTable: SmeupDataTable;\n props: GenericObject;\n },\n fileFormat: SupportedExportFormats,\n webupManagerData: WebupManagerData,\n): Promise<Buffer | Uint8Array> => {\n const workbook = dataTableToExcelWorkbook(\n component,\n fileFormat,\n webupManagerData,\n );\n\n return convertToStreamData(workbook, fileFormat);\n};\n\nexport const dataTreeToExcelData = async (\n component: {\n smeupDataTree: SmeupDataTree;\n props: GenericObject;\n },\n fileFormat: SupportedExportFormats,\n webupManagerData: WebupManagerData,\n): Promise<Buffer | Uint8Array> => {\n const workbook = await dataTreeToExcelWorkbook(\n component,\n fileFormat,\n webupManagerData,\n );\n\n return convertToStreamData(workbook, fileFormat);\n};\n\nconst convertToStreamData = async (\n workbook: Workbook,\n fileFormat: SupportedExportFormats,\n): Promise<Buffer | Uint8Array> => {\n // Convert workbook to buffer based on file format\n switch (fileFormat) {\n case SupportedExportFormats.XLSX: {\n const xlsxBuffer = await workbook.xlsx.writeBuffer();\n return convertToBuffer(xlsxBuffer);\n }\n case SupportedExportFormats.TXT:\n case SupportedExportFormats.CSV: {\n const csvBuffer = await workbook.csv.writeBuffer({\n formatterOptions: { delimiter: \";\" },\n });\n return convertToBuffer(csvBuffer);\n }\n default:\n throw new Error(`Unsupported export format: ${fileFormat}`);\n }\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"excel-generator.types.js","sourceRoot":"","sources":["../../../src/excel/excel-generator.types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAY3D,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,IAAI;IACnC,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,KAAK;IACnC,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,KAAK;IACnC,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,KAAK;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,sEAAsE;IACtE,CAAC,OAAoB,CAAC,EAAE,aAAa,EAAE,SAAS;IAChD,CAAC,KAAkB,CAAC,EAAE,aAAa,EAAE,MAAM;IAC3C,CAAC,KAAkB,CAAC,EAAE,aAAa,EAAE,MAAM;IAC3C,CAAC,KAAkB,CAAC,EAAE,aAAa,EAAE,MAAM;IAC3C,CAAC,SAAsB,CAAC,EAAE,aAAa,EAAE,UAAU;CACpD,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC5B,CAAC","sourcesContent":["import { Fill } from \"exceljs\";\nimport { SupportedExportFormats } from \"../types/index.js\";\n\nexport declare enum TotalMode {\n COUNT = \"Count\",\n SUM = \"Sum\",\n MIN = \"Min\",\n MAX = \"Max\",\n DISTINCT = \"Distinct\",\n AVERAGE = \"Average\",\n MATH = \"MATH\",\n}\n\nexport const headerStyleFill: Fill = {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"E0E0E0\" },\n};\n\nexport const exportTypeSupportsFormatting = {\n [SupportedExportFormats.XLSX]: true,\n [SupportedExportFormats.CSV]: false,\n [SupportedExportFormats.TXT]: false,\n [SupportedExportFormats.PDF_SCHEDA]: false,\n};\n\nexport const allowedTotals = {\n // The different initial number indicates the specific subtotal action\n [\"Count\" as TotalMode]: \"SUBTOTAL(3,\", // COUNTA\n [\"Sum\" as TotalMode]: \"SUBTOTAL(9,\", // SUM\n [\"Max\" as TotalMode]: \"SUBTOTAL(4,\", // MAX\n [\"Min\" as TotalMode]: \"SUBTOTAL(5,\", // MIN\n [\"Average\" as TotalMode]: \"SUBTOTAL(1,\", // AVERAGE\n};\n\nexport const footerStyleFill: Fill = {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"EEEEEE\" },\n};\n"]}