@sme.up/doc-alchemist 1.0.0-SNAPSHOT-20250613190613 → 1.0.0-SNAPSHOT-20250616152545

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.
@@ -1,8 +1,9 @@
1
- import { SmeupDataStructureType, } from "@sme.up/kokos-sdk-node";
2
- import { addStyleToExceljsRow, dataTableToExcelWorkbook, getExcelNumFormat, smeupFormulaToExcelFormula, } from "../src/index.js";
1
+ import { addStyleToExceljsRow, dataTableToExcelWorkbook, getExcelNumFormat, } from "../src/index.js";
3
2
  import { SupportedExportFormats, } from "../src/types/index.js";
4
3
  import ExcelJS from "exceljs";
5
- import { table_sample_1, table_sample_2 } from "../assets/sample-data.js";
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";
6
7
  const Workbook = ExcelJS.Workbook;
7
8
  // #region Tests
8
9
  describe("Export Manager Test", () => {
@@ -140,6 +141,175 @@ describe("Export Manager Test", () => {
140
141
  });
141
142
  });
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
+ });
143
313
  });
144
314
  describe("Cell to XLSX Style converter", () => {
145
315
  const cellStyle = {
@@ -207,81 +377,4 @@ const getColumns = (numberColumns) => {
207
377
  }
208
378
  return columns;
209
379
  };
210
- // Define table_sample_1 for use in tests
211
- const totals_sample_1 = {
212
- COL1: "Count",
213
- COL2: "Distinct",
214
- HIDDEN_COL: "Sum",
215
- SUM_COL: "Sum",
216
- AVG_COL: "Average",
217
- MIN_COL: "Min",
218
- MAX_COL: "Max",
219
- DIFF_COL: `${"MATH"}([HIDDEN_COL]-[SUM_COL])`,
220
- };
221
- const data_table_totals_result_sample_1 = {
222
- COL1: "SUBTOTAL(3,A2:A3)",
223
- HIDDEN_COL: "SUBTOTAL(9,C2:C3)",
224
- SUM_COL: "SUBTOTAL(9,D2:D3)",
225
- AVG_COL: "SUBTOTAL(1,E2:E3)",
226
- MIN_COL: "SUBTOTAL(5,F2:F3)",
227
- MAX_COL: "SUBTOTAL(4,G2:G3)",
228
- DIFF_COL: `(C4-D4)`,
229
- };
230
- export const table_footer_actions = (action, groups, rowsNumber = 1, rowRepetitions = 1) => {
231
- const rows = [];
232
- for (let i = 0; i < rowsNumber; i++) {
233
- const rowObj = {
234
- cells: {
235
- 1: {
236
- obj: { t: "", p: "", k: "" },
237
- value: `1-${i}`,
238
- },
239
- 2: {
240
- obj: { t: "", p: "", k: "" },
241
- value: `2-${i}`,
242
- },
243
- [`${action}`]: {
244
- obj: { t: "NR", p: "", k: "10" },
245
- value: `${i + 1}`,
246
- },
247
- },
248
- id: `${i}`,
249
- };
250
- for (let i = 0; i < rowRepetitions; i++) {
251
- rows.push(rowObj);
252
- }
253
- }
254
- return {
255
- smeupDataTable: {
256
- type: SmeupDataStructureType.SmeupDataTable,
257
- columns: [
258
- {
259
- name: "1",
260
- title: "1title",
261
- visible: true,
262
- obj: { t: "", p: "" },
263
- },
264
- {
265
- name: "2",
266
- title: "2title",
267
- visible: true,
268
- obj: { t: "", p: "" },
269
- },
270
- {
271
- name: `${action}`,
272
- title: `${action}title`,
273
- visible: true,
274
- obj: { t: "NR", p: "" },
275
- },
276
- ],
277
- rows,
278
- },
279
- props: {
280
- groups,
281
- totals: action ? { [`${action}`]: `${action}` } : [],
282
- filter: [],
283
- },
284
- };
285
- };
286
- // #endregion
287
380
  //# sourceMappingURL=excel-generator.test.js.map
@@ -1 +1 @@
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 SmeupDataStructureType,\n SmeupDataNode,\n SmeupDataTable,\n} from \"@sme.up/kokos-sdk-node\";\nimport {\n addStyleToExceljsRow,\n dataTableToExcelWorkbook,\n getExcelNumFormat,\n smeupFormulaToExcelFormula,\n} from \"../src/index.js\";\nimport { TotalMode } from \"../src/excel/excel-generator.types.js\";\nimport {\n SupportedExportFormats,\n WebupManagerData,\n} from \"../src/types/index.js\";\nimport ExcelJS from \"exceljs\";\nimport { table_sample_1, table_sample_2 } from \"../assets/sample-data.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\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\n// Define table_sample_1 for use in tests\nconst 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\nconst 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// #endregion\n"]}
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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sme.up/doc-alchemist",
3
- "version": "1.0.0-SNAPSHOT-20250613190613",
3
+ "version": "1.0.0-SNAPSHOT-20250616152545",
4
4
  "description": "Library for generating documents in various formats, including Excel and PDF.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Smeup LAB <info@smeup.com> (https://www.smeup.com/)",