@sme.up/doc-alchemist 1.0.0-SNAPSHOT-20250613100237 → 1.0.0-SNAPSHOT-20250613190613
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/excel/excel-generator.types.js +1 -1
- package/dist/src/excel/excel-generator.types.js.map +1 -1
- package/dist/src/utils/generator-utility.js +2 -2
- package/dist/src/utils/generator-utility.js.map +1 -1
- package/dist/tests/excel-generator.test.js +2 -2
- package/dist/tests/excel-generator.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-generator.types.js","sourceRoot":"","sources":["../../../src/excel/excel-generator.types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
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"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { exportTypeSupportsFormatting } from "../excel/excel-generator.types.js";
|
|
2
2
|
import { datesIsIsoDate, datesToDate, datesFormat } from "./dates-utility.js";
|
|
3
|
-
import { mathNumberStringToFormattedString, mathCountDecimals, } from "./math-utility";
|
|
4
|
-
import { objectsIsVoCodVer, objectsIsDate, objectsIsNumber, } from "./objects-utility";
|
|
3
|
+
import { mathNumberStringToFormattedString, mathCountDecimals, } from "./math-utility.js";
|
|
4
|
+
import { objectsIsVoCodVer, objectsIsDate, objectsIsNumber, } from "./objects-utility.js";
|
|
5
5
|
export const getFilteredColumns = (columns) => {
|
|
6
6
|
if (!columns)
|
|
7
7
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator-utility.js","sourceRoot":"","sources":["../../../src/utils/generator-utility.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAOjF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EACL,iCAAiC,EACjC,iBAAiB,GAClB,MAAM,
|
|
1
|
+
{"version":3,"file":"generator-utility.js","sourceRoot":"","sources":["../../../src/utils/generator-utility.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAOjF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EACL,iCAAiC,EACjC,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAA0B,EAAE,EAAE;IAC/D,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QAC7B,MAAM,UAAU,GAAG;YACjB,GAAG,MAAM,CAAC,GAAG;YACb,CAAC,EAAE,EAAE;SACU,CAAC;QAClB,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,GAA8B,EAC9B,IAA+B,EAC/B,OAAe,EACf,EAAE;IACF,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO;IAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACjB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC;YACzB,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,cAA8B,EAC9B,eAAkC,EAClC,OAAwC,EACxC,EAAE;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACtC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACjC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;gBAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;oBACrC,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACtE,OAAO,CACL,OAAO,SAAS,KAAK,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CACnE,CAAC;gBACJ,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,cAAc,CAAC,IAAI,CAAC;IAC7B,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAmB,EACnB,QAAgC,EAChC,gBAAkC,EAClC,EAAE;IACF,IAAI,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,4BAA4B,CAAC,QAAQ,CAAC;YAC3C,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACjE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,OAAO,CACL,iCAAiC,CAC/B,IAAI,CAAC,KAAK,EACV,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAC1C,EAAE,EACF,gBAAgB,CAAC,UAAU,CAC5B,IAAI,EAAE,CACR,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE;IAC/C,iBAAiB;IACjB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,yBAAyB;IACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3C,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;SAClD,QAAQ,CAAC,EAAE,CAAC;SACZ,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC7D,CAAC,CAAC;AAEF,oDAAoD;AACpD,MAAM,iBAAiB,GAAG,GAAY,EAAE;IACtC,IAAI,CAAC;QACH,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,WAAwB,EACH,EAAE;IACvB,IAAI,iBAAiB,EAAE,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;AACH,CAAC,CAAC","sourcesContent":["import {\n SmeupDataColumn,\n SmeupDataTable,\n SmeupDataCell,\n} from \"@sme.up/kokos-sdk-node\";\nimport { exportTypeSupportsFormatting } from \"../excel/excel-generator.types.js\";\nimport {\n SmeupDataObj,\n ColumnFilter,\n WebupManagerData,\n SupportedExportFormats,\n} from \"../types/index.js\";\nimport { datesIsIsoDate, datesToDate, datesFormat } from \"./dates-utility.js\";\nimport {\n mathNumberStringToFormattedString,\n mathCountDecimals,\n} from \"./math-utility.js\";\nimport {\n objectsIsVoCodVer,\n objectsIsDate,\n objectsIsNumber,\n} from \"./objects-utility.js\";\n\nexport const getFilteredColumns = (columns: SmeupDataColumn[]) => {\n if (!columns) return [];\n\n return columns.filter(column => {\n const dataObject = {\n ...column.obj,\n k: \"\",\n } as SmeupDataObj;\n return column.obj?.t !== \"J4\" && !objectsIsVoCodVer(dataObject);\n });\n};\n\n/**\n * By passing the map, length value and column name\n * creates or updates a map record with\n * @param map Contains columnNames and their longest cell's length\n * @param text The text to use in length calculation\n * @param colName The column to check\n */\nexport const updateMaxValueLength = (\n map: { [key: string]: number },\n text: string | undefined | null,\n colName: string,\n) => {\n if (!map || !text || !colName) return;\n\n const value = Math.max(...text.split(\"\\n\").map(line => line.length));\n if (map[colName]) {\n if (map[colName] < value) {\n map[colName] = value;\n }\n } else {\n map[colName] = value;\n }\n};\n\nexport const filterRows = (\n smeupDataTable: SmeupDataTable,\n filteredColumns: SmeupDataColumn[],\n filters: { [key: string]: ColumnFilter },\n) => {\n if (filters) {\n return smeupDataTable.rows.filter(row => {\n return filteredColumns.every(col => {\n const cellValue = row.cells?.[col.name]?.value;\n const columnFilter = filters[col.name];\n if (columnFilter?.checkBoxes?.length) {\n const allowedValues = columnFilter.checkBoxes.map(item => item.value);\n return (\n typeof cellValue === \"string\" && allowedValues.includes(cellValue)\n );\n }\n return true;\n });\n });\n } else {\n return smeupDataTable.rows;\n }\n};\n\n/**\n * Returns a converted and formatted cell value (string, date, number)\n * @param cell - SmeupDataCell\n * @param bookType - SupportedExportFormats\n * @param webupManagerData - WebupManagerData\n * @returns\n */\nexport const calculateCellValue = (\n cell: SmeupDataCell,\n bookType: SupportedExportFormats,\n webupManagerData: WebupManagerData,\n) => {\n if (cell.obj && objectsIsDate(cell.obj) && datesIsIsoDate(cell.value)) {\n return exportTypeSupportsFormatting[bookType]\n ? new Date(datesToDate(cell.value, webupManagerData.datesLocale))\n : datesFormat(cell.value, webupManagerData.datesLocale);\n }\n\n if (cell.obj && objectsIsNumber(cell.obj)) {\n if (!exportTypeSupportsFormatting[bookType]) {\n return (\n mathNumberStringToFormattedString(\n cell.value,\n mathCountDecimals(Number(cell.value) || 0),\n \"\",\n webupManagerData.mathLocale,\n ) || \"\"\n );\n }\n\n const numValue = Number(cell.value);\n return !isNaN(numValue) ? numValue : \"\";\n }\n\n return cell?.value ?? \"\";\n};\n\n/**\n * Conversion from Hexadecimal color to an AlphaRGB\n * @param hex string - Hexadecimal value, it can bot have and don't have the # prefix\n * @returns ARGB string code\n */\nexport const hexToArgb = (hex: string): string => {\n // Hex validation\n if (hex.startsWith(\"#\")) hex = hex.slice(1);\n if (hex.length !== 6) return \"\";\n\n // Value Parse and return\n const red = parseInt(hex.slice(0, 2), 16);\n const green = parseInt(hex.slice(2, 4), 16);\n const blue = parseInt(hex.slice(4, 6), 16);\n return `FF${red.toString(16).padStart(2, \"0\")}${green\n .toString(16)\n .padStart(2, \"0\")}${blue.toString(16).padStart(2, \"0\")}`;\n};\n\n// Utility function to detect if Buffer is available\nconst isBufferAvailable = (): boolean => {\n try {\n return typeof Buffer !== \"undefined\" && typeof Buffer.from === \"function\";\n } catch {\n return false;\n }\n};\n\n// Utility function to convert ArrayBuffer to Buffer or Uint8Array\nexport const convertToBuffer = (\n arrayBuffer: ArrayBuffer,\n): Buffer | Uint8Array => {\n if (isBufferAvailable()) {\n return Buffer.from(arrayBuffer);\n } else {\n return new Uint8Array(arrayBuffer);\n }\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SmeupDataStructureType, } from "@sme.up/kokos-sdk-node";
|
|
2
|
-
import { addStyleToExceljsRow, dataTableToExcelWorkbook, getExcelNumFormat, smeupFormulaToExcelFormula, } from "../src";
|
|
3
|
-
import { SupportedExportFormats } from "../src/types";
|
|
2
|
+
import { addStyleToExceljsRow, dataTableToExcelWorkbook, getExcelNumFormat, smeupFormulaToExcelFormula, } from "../src/index.js";
|
|
3
|
+
import { SupportedExportFormats, } from "../src/types/index.js";
|
|
4
4
|
import ExcelJS from "exceljs";
|
|
5
5
|
import { table_sample_1, table_sample_2 } from "../assets/sample-data.js";
|
|
6
6
|
const Workbook = ExcelJS.Workbook;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-generator.test.js","sourceRoot":"","sources":["../../tests/excel-generator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,sBAAsB,GAGvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,sBAAsB,EAAoB,MAAM,cAAc,CAAC;AACxE,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAM1E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAElC,gBAAgB;AAChB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,eAAe,GAAG;YACtB,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ;YAChC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ;YACxB,CAAC,qBAAqB,CAAC,EAAE,aAAa,EAAE,QAAQ;YAChD,CAAC,cAAc,CAAC,EAAE,cAAc,EAAE,QAAQ;YAC1C,CAAC,qBAAqB,CAAC,EAAE,aAAa,EAAE,QAAQ;YAChD,CAAC,0BAA0B,CAAC,EAAE,kBAAkB,EAAE,QAAQ;YAC1D,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ;YAChC,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ;YAC5B,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,QAAQ;YAC5C,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,SAAS;SACjB,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE;YACvD,MAAM,CAAC,0BAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CACvE,eAAe,CAAC,YAAY,CAAC,CAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,kBAAkB,GAA6B;YACnD;gBACE,IAAI,EAAE;oBACJ,QAAQ,EAAE,CAAC;iBACZ;aACF;YACD;gBACE,IAAI,EAAE;oBACJ,QAAQ,EAAE,CAAC;iBACZ;aACF;YACD;gBACE,IAAI,EAAE;oBACJ,QAAQ,EAAE,CAAC;iBACZ;aACF;YACD;gBACE,IAAI,EAAE;oBACJ,QAAQ,EAAE,CAAC;iBACZ;aACF;YACD;gBACE,IAAI,EAAE;oBACJ,QAAQ,EAAE,CAAC;iBACZ;aACF;SACF,CAAC;QAEF,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACzC,MAAM,MAAM,GAAG,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChE,MAAM,CACJ,iBAAiB,CACd,IAAI,CAAC,IAAI,EAAE,QAAmB,IAAI,CAAC,EACnC,IAAI,CAAC,IAA0B,IAAI,CAAC,CACtC,CACF,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,QAAQ,GAAa,wBAAwB,CACjD,cAAc,EACd,sBAAsB,CAAC,IAAI,EAC3B,EAAsB,CACvB,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3C,yBAAyB;YACzB,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,sBAAsB;YACtB,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,QAAQ,GAAa,wBAAwB,CACjD,cAAc,EACd,sBAAsB,CAAC,GAAG,EAC1B,EAAsB,CACvB,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3C,yBAAyB;YACzB,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,sBAAsB;YACtB,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,QAAQ,GAAa,wBAAwB,CACjD,cAAc,EACd,sBAAsB,CAAC,GAAG,EAC1B,EAAsB,CACvB,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3C,yBAAyB;YACzB,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,sBAAsB;YACtB,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,QAAQ,GAAa,wBAAwB,CACjD,cAAc,EACd,sBAAsB,CAAC,IAAI,EAC3B,EAAsB,CACvB,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;YAChE,YAAY,CAAC,KAAK,GAAG;gBACnB,GAAG,YAAY,CAAC,KAAK;gBACrB,MAAM,EAAE,eAAe;aACxB,CAAC;YAEF,MAAM,QAAQ,GAAa,wBAAwB,CACjD,YAAY,EACZ,sBAAsB,CAAC,IAAI,EAC3B,EAAsB,CACvB,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAE3C,yBAAyB;YACzB,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,sBAAsB;YACtB,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,mBAAmB;YACnB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAU,EAAE,EAAE;gBAC3C,MAAM,UAAU,GAAG,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;gBACtD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACvB,iCAAiC,CAAC,UAAU,CAAC,CAC9C,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,qBAAqB,GAAG;gBAC5B,KAAK,EAAE,mBAAmB;gBAC1B,GAAG,EAAE,mBAAmB;gBACxB,GAAG,EAAE,mBAAmB;gBACxB,GAAG,EAAE,mBAAmB;gBACxB,OAAO,EAAE,mBAAmB;aAC7B,CAAC;YACF,MAAM,uBAAuB,GAAG;gBAC9B,KAAK,EAAE,GAAG;gBACV,GAAG,EAAE,GAAG;gBACR,GAAG,EAAE,GAAG;gBACR,GAAG,EAAE,GAAG;gBACR,OAAO,EAAE,GAAG;aACb,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;gBACvD,MAAM,QAAQ,GAAqB,wBAAwB,CACzD,oBAAoB,CAClB,KAAK,EACL;oBACE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;oBAC9B,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;iBAC/B,EACD,CAAC,EACD,CAAC,CACF,EACD,sBAAsB,CAAC,IAAI,EAC3B,EAAsB,CACvB,CAAC;gBACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAE3C,MAAM,QAAQ,GAAG,KAA6C,CAAC;gBAE/D,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,YAAY,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CACvD,CAAC;gBACF,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,YAAY,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CACvD,CAAC;gBACF,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,YAAY,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CACvD,CAAC;gBACF,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,YAAY,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CACvD,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,MAAM,SAAS,GAAG;QAChB,UAAU,EAAE,MAAM;QAClB,eAAe,EAAE,SAAS;QAC1B,KAAK,EAAE,SAAS;KACjB,CAAC;IACF,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;SAC9B;QACD,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;KACzC,CAAC;IAEX,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEnD,MAAM,GAAG,GAAQ,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACnD,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE;YACrD,KAAK,EAAE;gBACL,CAAC,EAAE;oBACD,KAAK,EAAE,EAAE;oBACT,GAAG,EAAE;wBACH,CAAC,EAAE,EAAE;wBACL,CAAC,EAAE,EAAE;wBACL,CAAC,EAAE,EAAE;qBACN;oBACD,KAAK,EAAE,SAAS;iBACjB;aACF;SACc,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,GAAG,GAAQ,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACnD,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE;YACrD,KAAK,EAAE;gBACL,CAAC,EAAE;oBACD,KAAK,EAAE,EAAE;oBACT,GAAG,EAAE;wBACH,CAAC,EAAE,EAAE;wBACL,CAAC,EAAE,EAAE;wBACL,CAAC,EAAE,EAAE;qBACN;oBACD,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,SAAS;SACW,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,aAAa;AAEb,iBAAiB;AAEjB,MAAM,UAAU,GAAG,CAAC,aAAqB,EAAqB,EAAE;IAC9D,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,IAAI,GAAG,EAAE;YACf,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,yCAAyC;AACzC,MAAM,eAAe,GAAiD;IACpE,IAAI,EAAE,OAAoB;IAC1B,IAAI,EAAE,UAAuB;IAC7B,UAAU,EAAE,KAAkB;IAC9B,OAAO,EAAE,KAAkB;IAC3B,OAAO,EAAE,SAAsB;IAC/B,OAAO,EAAE,KAAkB;IAC3B,OAAO,EAAE,KAAkB;IAC3B,QAAQ,EAAE,GAAG,MAAmB,0BAA0B;CAC3D,CAAC;AAEF,MAAM,iCAAiC,GAA8B;IACnE,IAAI,EAAE,mBAAmB;IACzB,UAAU,EAAE,mBAAmB;IAC/B,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,MAA8C,EAC9C,aAAqB,CAAC,EACtB,iBAAyB,CAAC,EAC1B,EAAE;IACF,MAAM,IAAI,GAQL,EAAE,CAAC;IACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG;YACb,KAAK,EAAE;gBACL,CAAC,EAAE;oBACD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;oBAC5B,KAAK,EAAE,KAAK,CAAC,EAAE;iBAChB;gBACD,CAAC,EAAE;oBACD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;oBAC5B,KAAK,EAAE,KAAK,CAAC,EAAE;iBAChB;gBACD,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;oBAChC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;iBAClB;aACF;YACD,EAAE,EAAE,GAAG,CAAC,EAAE;SACX,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO;QACL,cAAc,EAAE;YACd,IAAI,EAAE,sBAAsB,CAAC,cAAc;YAC3C,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;iBACtB;gBACD;oBACE,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;iBACtB;gBACD;oBACE,IAAI,EAAE,GAAG,MAAM,EAAE;oBACjB,KAAK,EAAE,GAAG,MAAM,OAAO;oBACvB,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;iBACxB;aACF;YACD,IAAI;SACa;QACnB,KAAK,EAAE;YACL,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;YACpD,MAAM,EAAE,EAAE;SACX;KACF,CAAC;AACJ,CAAC,CAAC;AACF,aAAa","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\";\nimport { TotalMode } from \"../src/excel/excel-generator.types\";\nimport { SupportedExportFormats, WebupManagerData } from \"../src/types\";\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 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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sme.up/doc-alchemist",
|
|
3
|
-
"version": "1.0.0-SNAPSHOT-
|
|
3
|
+
"version": "1.0.0-SNAPSHOT-20250613190613",
|
|
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/)",
|