@dbg-riskit/angular-excel-export 12.3.0 → 9999.9999.9999-rc.12148

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,23 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { ExcelExportService } from './excel.export.service';
4
- import { ExcelFileExportDirective } from './excel.file.export.directive';
5
- export class ExcelExportModule {
6
- }
7
- ExcelExportModule.decorators = [
8
- { type: NgModule, args: [{
9
- imports: [
10
- CommonModule
11
- ],
12
- declarations: [
13
- ExcelFileExportDirective
14
- ],
15
- exports: [
16
- ExcelFileExportDirective
17
- ],
18
- providers: [
19
- ExcelExportService
20
- ]
21
- },] }
22
- ];
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuZXhwb3J0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItZXhjZWwtZXhwb3J0L3NyYy9saWIvZXhjZWwuZXhwb3J0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQWdCdkUsTUFBTSxPQUFPLGlCQUFpQjs7O1lBZDdCLFFBQVEsU0FBQztnQkFDTixPQUFPLEVBQU87b0JBQ1YsWUFBWTtpQkFDZjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1Ysd0JBQXdCO2lCQUMzQjtnQkFDRCxPQUFPLEVBQU87b0JBQ1Ysd0JBQXdCO2lCQUMzQjtnQkFDRCxTQUFTLEVBQUs7b0JBQ1Ysa0JBQWtCO2lCQUNyQjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RXhjZWxFeHBvcnRTZXJ2aWNlfSBmcm9tICcuL2V4Y2VsLmV4cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7RXhjZWxGaWxlRXhwb3J0RGlyZWN0aXZlfSBmcm9tICcuL2V4Y2VsLmZpbGUuZXhwb3J0LmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0cyAgICAgOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEV4Y2VsRmlsZUV4cG9ydERpcmVjdGl2ZVxuICAgIF0sXG4gICAgZXhwb3J0cyAgICAgOiBbXG4gICAgICAgIEV4Y2VsRmlsZUV4cG9ydERpcmVjdGl2ZVxuICAgIF0sXG4gICAgcHJvdmlkZXJzICAgOiBbXG4gICAgICAgIEV4Y2VsRXhwb3J0U2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRXhjZWxFeHBvcnRNb2R1bGUge1xufVxuIl19
@@ -1,91 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { deepClone } from '@dbg-riskit/common';
3
- import * as XLSX from 'xlsx';
4
- export class ExcelExportService {
5
- exportAsExcel(exportData, filename, tabs, columns) {
6
- if (exportData && exportData.length && columns) {
7
- const data = this.createHeaders(exportData, columns);
8
- this.export(data, filename, tabs);
9
- }
10
- }
11
- createHeaders(data, columns) {
12
- if (this.isArrayOfArrays(data)) {
13
- return this.multiTabHeaders(data, columns);
14
- }
15
- else {
16
- return this.singleTabHeaders(data, columns);
17
- }
18
- }
19
- multiTabHeaders(data, columns) {
20
- const dataWithHeaders = [];
21
- data.forEach((arr, index) => {
22
- const headers = {};
23
- const keys = Object.keys(arr[0]);
24
- keys.forEach((key) => {
25
- // @ts-ignore
26
- headers[key] = columns[index][key].header;
27
- });
28
- const clonedData = deepClone(arr);
29
- clonedData.unshift(headers);
30
- dataWithHeaders.push(clonedData);
31
- });
32
- return dataWithHeaders;
33
- }
34
- singleTabHeaders(data, columns) {
35
- const headers = {};
36
- const keys = Object.keys(data[0]);
37
- keys.forEach((key, index) => {
38
- headers[key] = columns[index].header;
39
- });
40
- const clonedData = deepClone(data);
41
- clonedData.unshift(headers);
42
- return clonedData;
43
- }
44
- export(data, filename, tabs) {
45
- const { sheetName, fileName } = this.getFileName(filename);
46
- if (this.isArrayOfArrays(data)) {
47
- return this.multiTabExport(data, fileName, tabs);
48
- }
49
- else {
50
- return this.singleTabExport(data, sheetName, fileName);
51
- }
52
- }
53
- multiTabExport(data, filename, tabs) {
54
- const workbook = data.reduce((result, curr, index) => {
55
- if ('Sheets' in result) {
56
- result['Sheets'] = Object.assign(Object.assign({}, result['Sheets']), { [tabs[index]]: XLSX.utils.json_to_sheet(curr, { skipHeader: true }) });
57
- }
58
- else {
59
- result['Sheets'] = { [tabs[index]]: XLSX.utils.json_to_sheet(curr, { skipHeader: true }) };
60
- }
61
- if ('SheetNames' in result) {
62
- result['SheetNames'] = [...result['SheetNames'], tabs[index]];
63
- }
64
- else {
65
- result['SheetNames'] = [tabs[index]];
66
- }
67
- return result;
68
- }, {});
69
- XLSX.writeFile(workbook, filename);
70
- }
71
- singleTabExport(data, sheetName, filename) {
72
- const worksheet = XLSX.utils.json_to_sheet(data, { skipHeader: true });
73
- const workbook = XLSX.utils.book_new();
74
- XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);
75
- XLSX.writeFile(workbook, filename);
76
- }
77
- getFileName(sheetName) {
78
- const fileName = `${sheetName}.xlsx`;
79
- return {
80
- sheetName,
81
- fileName
82
- };
83
- }
84
- isArrayOfArrays(array) {
85
- return array.every((item) => Array.isArray(item));
86
- }
87
- }
88
- ExcelExportService.decorators = [
89
- { type: Injectable }
90
- ];
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWV4Y2VsLWV4cG9ydC9zcmMvbGliL2V4Y2VsLmV4cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBSTdCLE1BQU0sT0FBTyxrQkFBa0I7SUFFcEIsYUFBYSxDQUFDLFVBQWlCLEVBQUUsUUFBZ0IsRUFBRSxJQUFlLEVBQ3BELE9BQTBFO1FBQzNGLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksT0FBTyxFQUFFO1lBRTVDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXJELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUVyQztJQUNMLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBVyxFQUNYLE9BQXlFO1FBQzNGLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE9BQTZDLENBQUMsQ0FBQztTQUNwRjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQy9DO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFXLEVBQUUsT0FBMkM7UUFDNUUsTUFBTSxlQUFlLEdBQVUsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFVLEVBQUUsS0FBYSxF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QUFNO2dCQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3pDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFXLEVBQUUsU0FBaUIsRUFBRSxRQUFnQjtRQUNwRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNyRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sV0FBVyxDQUFDLFNBQWlCO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLEdBQUcsU0FBUyxPQUFPLENBQUM7UUFDckMsT0FBTztZQUNILFNBQVM7WUFDVCxRQUFRO1NBQ1gsQ0FBQztJQUNOLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBWTtRQUMvQixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7WUF0R0osVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2RlZXBDbG9uZX0gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XG5pbXBvcnQge0NTVkV4cG9ydENvbHVtbn0gZnJvbSAnLi9leGNlbC5maWxlLmV4cG9ydC5kaXJlY3RpdmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXhjZWxFeHBvcnRTZXJ2aWNlIHtcblxuICAgIHB1YmxpYyBleHBvcnRBc0V4Y2VsKGV4cG9ydERhdGE6IGFueVtdLCBmaWxlbmFtZTogc3RyaW5nLCB0YWJzPzogc3RyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucz86IEFycmF5PENTVkV4cG9ydENvbHVtbjxhbnk+PiB8IEFycmF5PEFycmF5PENTVkV4cG9ydENvbHVtbjxhbnk+Pj4pIHtcbiAgICAgICAgaWYgKGV4cG9ydERhdGEgJiYgZXhwb3J0RGF0YS5sZW5ndGggJiYgY29sdW1ucykge1xuXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5jcmVhdGVIZWFkZXJzKGV4cG9ydERhdGEsIGNvbHVtbnMpO1xuXG4gICAgICAgICAgICB0aGlzLmV4cG9ydChkYXRhLCBmaWxlbmFtZSwgdGFicyk7XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSGVhZGVycyhkYXRhOiBhbnlbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogQXJyYXk8Q1NWRXhwb3J0Q29sdW1uPGFueT4+IHwgQXJyYXk8QXJyYXk8Q1NWRXhwb3J0Q29sdW1uPGFueT4+Pik6IGFueVtdIHtcbiAgICAgICAgaWYgKHRoaXMuaXNBcnJheU9mQXJyYXlzKGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tdWx0aVRhYkhlYWRlcnMoZGF0YSwgY29sdW1ucyBhcyBBcnJheTxBcnJheTxDU1ZFeHBvcnRDb2x1bW48YW55Pj4+KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNpbmdsZVRhYkhlYWRlcnMoZGF0YSwgY29sdW1ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG11bHRpVGFiSGVhZGVycyhkYXRhOiBhbnlbXSwgY29sdW1uczogQXJyYXk8QXJyYXk8Q1NWRXhwb3J0Q29sdW1uPGFueT4+Pik6IGFueVtdIHtcbiAgICAgICAgY29uc3QgZGF0YVdpdGhIZWFkZXJzOiBhbnlbXSA9IFtdO1xuICAgICAgICBkYXRhLmZvckVhY2goKGFycjogYW55W10sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcnJbMF0pO1xuICAgICAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgaGVhZGVyc1trZXldID0gY29sdW1uc1tpbmRleF1ba2V5XS5oZWFkZXI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lZERhdGEgPSBkZWVwQ2xvbmUoYXJyKTtcbiAgICAgICAgICAgIGNsb25lZERhdGEudW5zaGlmdChoZWFkZXJzKTtcbiAgICAgICAgICAgIGRhdGFXaXRoSGVhZGVycy5wdXNoKGNsb25lZERhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGRhdGFXaXRoSGVhZGVycztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNpbmdsZVRhYkhlYWRlcnMoZGF0YTogYW55W10sIGNvbHVtbnM6IGFueSk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgaGVhZGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZGF0YVswXSk7XG5cbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBoZWFkZXJzW2tleV0gPSBjb2x1bW5zW2luZGV4XS5oZWFkZXI7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNsb25lZERhdGEgPSBkZWVwQ2xvbmUoZGF0YSk7XG4gICAgICAgIGNsb25lZERhdGEudW5zaGlmdChoZWFkZXJzKTtcbiAgICAgICAgcmV0dXJuIGNsb25lZERhdGE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHBvcnQoZGF0YTogYW55W10sIGZpbGVuYW1lOiBzdHJpbmcsIHRhYnM/OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBzaGVldE5hbWUsXG4gICAgICAgICAgICBmaWxlTmFtZVxuICAgICAgICB9ID0gdGhpcy5nZXRGaWxlTmFtZShmaWxlbmFtZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNBcnJheU9mQXJyYXlzKGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tdWx0aVRhYkV4cG9ydChkYXRhLCBmaWxlTmFtZSwgdGFicyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaW5nbGVUYWJFeHBvcnQoZGF0YSwgc2hlZXROYW1lLCBmaWxlTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG11bHRpVGFiRXhwb3J0KGRhdGE6IGFueVtdLCBmaWxlbmFtZTogc3RyaW5nLCB0YWJzPzogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd29ya2Jvb2s6IFhMU1guV29ya0Jvb2sgPSBkYXRhLnJlZHVjZSgocmVzdWx0LCBjdXJyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCdTaGVldHMnIGluIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFsnU2hlZXRzJ10gPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdFsnU2hlZXRzJ10sXG4gICAgICAgICAgICAgICAgICAgIFt0YWJzIVtpbmRleF1dOiBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoY3Vyciwge3NraXBIZWFkZXI6IHRydWV9KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFsnU2hlZXRzJ10gPSB7W3RhYnMhW2luZGV4XV06IFhMU1gudXRpbHMuanNvbl90b19zaGVldChjdXJyLCB7c2tpcEhlYWRlcjogdHJ1ZX0pfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgnU2hlZXROYW1lcycgaW4gcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0WydTaGVldE5hbWVzJ10gPSBbLi4ucmVzdWx0WydTaGVldE5hbWVzJ10sIHRhYnMhW2luZGV4XV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFsnU2hlZXROYW1lcyddID0gW3RhYnMhW2luZGV4XV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LCB7fSk7XG4gICAgICAgIFhMU1gud3JpdGVGaWxlKHdvcmtib29rLCBmaWxlbmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaW5nbGVUYWJFeHBvcnQoZGF0YTogYW55W10sIHNoZWV0TmFtZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdvcmtzaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChkYXRhLCB7c2tpcEhlYWRlcjogdHJ1ZX0pO1xuICAgICAgICBjb25zdCB3b3JrYm9vayA9IFhMU1gudXRpbHMuYm9va19uZXcoKTtcbiAgICAgICAgWExTWC51dGlscy5ib29rX2FwcGVuZF9zaGVldCh3b3JrYm9vaywgd29ya3NoZWV0LCBzaGVldE5hbWUpO1xuICAgICAgICBYTFNYLndyaXRlRmlsZSh3b3JrYm9vaywgZmlsZW5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmlsZU5hbWUoc2hlZXROYW1lOiBzdHJpbmcpOiB7IHNoZWV0TmFtZTogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nIH0ge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGAke3NoZWV0TmFtZX0ueGxzeGA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaGVldE5hbWUsXG4gICAgICAgICAgICBmaWxlTmFtZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0FycmF5T2ZBcnJheXMoYXJyYXk6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBhcnJheS5ldmVyeSgoaXRlbSkgPT4gQXJyYXkuaXNBcnJheShpdGVtKSk7XG4gICAgfVxufVxuIl19
@@ -1,65 +0,0 @@
1
- import { Directive, ElementRef, Input } from '@angular/core';
2
- import { BaseComponent } from '@dbg-riskit/angular-view';
3
- import { Logger } from '@dbg-riskit/common';
4
- import { ExcelExportService } from './excel.export.service';
5
- export class ExcelFileExportDirective extends BaseComponent {
6
- constructor(elementRef, excelExportService, logger) {
7
- super();
8
- this.elementRef = elementRef;
9
- this.excelExportService = excelExportService;
10
- this.logger = logger;
11
- this.filename = 'data';
12
- }
13
- isDisabled() {
14
- if (this.elementRef.nativeElement.disabled === true) {
15
- return true;
16
- }
17
- if (this.disabled == null) {
18
- return false;
19
- }
20
- switch (typeof this.disabled) {
21
- case 'boolean':
22
- return this.disabled;
23
- case 'string':
24
- return this.disabled.toLowerCase() === 'disabled' || this.disabled.toLowerCase() === 'true';
25
- }
26
- return false;
27
- }
28
- export() {
29
- if (this.isDisabled()) {
30
- return;
31
- }
32
- if (this.data == null) {
33
- this.logger.error(new Error('No data provided for export!'));
34
- return;
35
- }
36
- if ((this.tabs && this.tabs.length && !this.excelExportService.isArrayOfArrays(this.data)) ||
37
- (!this.tabs && this.excelExportService.isArrayOfArrays(this.data))) {
38
- this.logger.error(new Error('Wrong data structure provided!'));
39
- return;
40
- }
41
- this.excelExportService.exportAsExcel(this.data, this.filename, this.tabs, this.columns);
42
- }
43
- }
44
- ExcelFileExportDirective.decorators = [
45
- { type: Directive, args: [{
46
- selector: '[risk-xlsx-export]',
47
- host: {
48
- '[class.risk-xlsx-export]': 'true',
49
- '(click)': 'export()'
50
- }
51
- },] }
52
- ];
53
- ExcelFileExportDirective.ctorParameters = () => [
54
- { type: ElementRef },
55
- { type: ExcelExportService },
56
- { type: Logger }
57
- ];
58
- ExcelFileExportDirective.propDecorators = {
59
- columns: [{ type: Input, args: ['risk-xlsx-export-columns',] }],
60
- data: [{ type: Input, args: ['risk-xlsx-export',] }],
61
- filename: [{ type: Input, args: ['risk-xlsx-export-filename',] }],
62
- tabs: [{ type: Input, args: ['risk-xlsx-export-tabs',] }],
63
- disabled: [{ type: Input }]
64
- };
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuZmlsZS5leHBvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci1leGNlbC1leHBvcnQvc3JjL2xpYi9leGNlbC5maWxlLmV4cG9ydC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsTUFBTSxFQUFjLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFjMUQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFzQnZELFlBQW9DLFVBQXNCLEVBQ3RCLGtCQUFzQyxFQUN0QyxNQUFjO1FBQzlDLEtBQUssRUFBRSxDQUFDO1FBSHdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVjNDLGFBQVEsR0FBVyxNQUFNLENBQUM7SUFZakMsQ0FBQztJQUVPLFVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7WUFDakQsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFDdkIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMxQixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3pCLEtBQUssUUFBUTtnQkFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxDQUFDO1NBQ25HO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLE1BQU07UUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQztZQUM3RCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RGLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDO1lBQy9ELE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdGLENBQUM7OztZQXZFSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsSUFBSSxFQUFNO29CQUNOLDBCQUEwQixFQUFFLE1BQU07b0JBQ2xDLFNBQVMsRUFBbUIsVUFBVTtpQkFDekM7YUFDSjs7O1lBaEJrQixVQUFVO1lBR3JCLGtCQUFrQjtZQURsQixNQUFNOzs7c0JBc0JULEtBQUssU0FBQywwQkFBMEI7bUJBR2hDLEtBQUssU0FBQyxrQkFBa0I7dUJBR3hCLEtBQUssU0FBQywyQkFBMkI7bUJBR2pDLEtBQUssU0FBQyx1QkFBdUI7dUJBRzdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYXNlQ29tcG9uZW50fSBmcm9tICdAZGJnLXJpc2tpdC9hbmd1bGFyLXZpZXcnO1xuaW1wb3J0IHtMb2dnZXIsIFZhbHVlR2V0dGVyfSBmcm9tICdAZGJnLXJpc2tpdC9jb21tb24nO1xuaW1wb3J0IHtFeGNlbEV4cG9ydFNlcnZpY2V9IGZyb20gJy4vZXhjZWwuZXhwb3J0LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENTVkV4cG9ydENvbHVtbjxUPiB7XG4gICAgZ2V0OiBWYWx1ZUdldHRlcjxUPjtcbiAgICBoZWFkZXI6IHN0cmluZztcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmlzay14bHN4LWV4cG9ydF0nLFxuICAgIGhvc3QgICAgOiB7XG4gICAgICAgICdbY2xhc3Mucmlzay14bHN4LWV4cG9ydF0nOiAndHJ1ZScsXG4gICAgICAgICcoY2xpY2spJyAgICAgICAgICAgICAgICAgOiAnZXhwb3J0KCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBFeGNlbEZpbGVFeHBvcnREaXJlY3RpdmUgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcblxuICAgIC8qKlxuICAgICAqICdyaXNrLXhsc3gtZXhwb3J0LWNvbHVtbnMnIGNhbiBiZSBwcm92aWRlZCBhcyBhcnJheSBPUiBhcnJheSBvZiBhcnJheXMsXG4gICAgICogV2hlbiBwcm92aWRlZCBhcyBhcnJheSBvZiBhcnJheXMgdGhlbiAncmlzay14bHN4LWV4cG9ydCcgc2hvdWxkIGJlIHByb3ZpZGVkIGFzIGFycmF5IG9mIGFycmF5cyBhcyB3ZWxsLFxuICAgICAqIFRoYXQgbWVhbnMgdGhhdCBtdWx0aXBsZSB0YWJzIGFyZSB1c2VkLCB0YWIgbmFtZXMgYXJlIHByb3ZpZGVkIGluICdyaXNrLXhsc3gtZXhwb3J0LXRhYnMnIGFzIGFycmF5IG9mIHN0cmluZ3MsXG4gICAgICovXG4gICAgQElucHV0KCdyaXNrLXhsc3gtZXhwb3J0LWNvbHVtbnMnKVxuICAgIHB1YmxpYyBjb2x1bW5zPzogQXJyYXk8Q1NWRXhwb3J0Q29sdW1uPGFueT4+IHwgQXJyYXk8QXJyYXk8Q1NWRXhwb3J0Q29sdW1uPGFueT4+PjtcblxuICAgIEBJbnB1dCgncmlzay14bHN4LWV4cG9ydCcpXG4gICAgcHVibGljIGRhdGE/OiBhbnlbXTtcblxuICAgIEBJbnB1dCgncmlzay14bHN4LWV4cG9ydC1maWxlbmFtZScpXG4gICAgcHVibGljIGZpbGVuYW1lOiBzdHJpbmcgPSAnZGF0YSc7XG5cbiAgICBASW5wdXQoJ3Jpc2steGxzeC1leHBvcnQtdGFicycpXG4gICAgcHVibGljIHRhYnM/OiBzdHJpbmdbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkPzogYm9vbGVhbiB8IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZXhjZWxFeHBvcnRTZXJ2aWNlOiBFeGNlbEV4cG9ydFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHR5cGVvZiB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZDtcbiAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQudG9Mb3dlckNhc2UoKSA9PT0gJ2Rpc2FibGVkJyB8fCB0aGlzLmRpc2FibGVkLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhwb3J0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IobmV3IEVycm9yKCdObyBkYXRhIHByb3ZpZGVkIGZvciBleHBvcnQhJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCh0aGlzLnRhYnMgJiYgdGhpcy50YWJzLmxlbmd0aCAmJiAhdGhpcy5leGNlbEV4cG9ydFNlcnZpY2UuaXNBcnJheU9mQXJyYXlzKHRoaXMuZGF0YSkpIHx8XG4gICAgICAgICAgICAoIXRoaXMudGFicyAmJiB0aGlzLmV4Y2VsRXhwb3J0U2VydmljZS5pc0FycmF5T2ZBcnJheXModGhpcy5kYXRhKSkpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKG5ldyBFcnJvcignV3JvbmcgZGF0YSBzdHJ1Y3R1cmUgcHJvdmlkZWQhJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5leGNlbEV4cG9ydFNlcnZpY2UuZXhwb3J0QXNFeGNlbCh0aGlzLmRhdGEsIHRoaXMuZmlsZW5hbWUsIHRoaXMudGFicywgdGhpcy5jb2x1bW5zKTtcbiAgICB9XG59XG4iXX0=
@@ -1,180 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Injectable, Directive, ElementRef, Input, NgModule } from '@angular/core';
3
- import { deepClone, Logger } from '@dbg-riskit/common';
4
- import * as XLSX from 'xlsx';
5
- import { BaseComponent } from '@dbg-riskit/angular-view';
6
-
7
- class ExcelExportService {
8
- exportAsExcel(exportData, filename, tabs, columns) {
9
- if (exportData && exportData.length && columns) {
10
- const data = this.createHeaders(exportData, columns);
11
- this.export(data, filename, tabs);
12
- }
13
- }
14
- createHeaders(data, columns) {
15
- if (this.isArrayOfArrays(data)) {
16
- return this.multiTabHeaders(data, columns);
17
- }
18
- else {
19
- return this.singleTabHeaders(data, columns);
20
- }
21
- }
22
- multiTabHeaders(data, columns) {
23
- const dataWithHeaders = [];
24
- data.forEach((arr, index) => {
25
- const headers = {};
26
- const keys = Object.keys(arr[0]);
27
- keys.forEach((key) => {
28
- // @ts-ignore
29
- headers[key] = columns[index][key].header;
30
- });
31
- const clonedData = deepClone(arr);
32
- clonedData.unshift(headers);
33
- dataWithHeaders.push(clonedData);
34
- });
35
- return dataWithHeaders;
36
- }
37
- singleTabHeaders(data, columns) {
38
- const headers = {};
39
- const keys = Object.keys(data[0]);
40
- keys.forEach((key, index) => {
41
- headers[key] = columns[index].header;
42
- });
43
- const clonedData = deepClone(data);
44
- clonedData.unshift(headers);
45
- return clonedData;
46
- }
47
- export(data, filename, tabs) {
48
- const { sheetName, fileName } = this.getFileName(filename);
49
- if (this.isArrayOfArrays(data)) {
50
- return this.multiTabExport(data, fileName, tabs);
51
- }
52
- else {
53
- return this.singleTabExport(data, sheetName, fileName);
54
- }
55
- }
56
- multiTabExport(data, filename, tabs) {
57
- const workbook = data.reduce((result, curr, index) => {
58
- if ('Sheets' in result) {
59
- result['Sheets'] = Object.assign(Object.assign({}, result['Sheets']), { [tabs[index]]: XLSX.utils.json_to_sheet(curr, { skipHeader: true }) });
60
- }
61
- else {
62
- result['Sheets'] = { [tabs[index]]: XLSX.utils.json_to_sheet(curr, { skipHeader: true }) };
63
- }
64
- if ('SheetNames' in result) {
65
- result['SheetNames'] = [...result['SheetNames'], tabs[index]];
66
- }
67
- else {
68
- result['SheetNames'] = [tabs[index]];
69
- }
70
- return result;
71
- }, {});
72
- XLSX.writeFile(workbook, filename);
73
- }
74
- singleTabExport(data, sheetName, filename) {
75
- const worksheet = XLSX.utils.json_to_sheet(data, { skipHeader: true });
76
- const workbook = XLSX.utils.book_new();
77
- XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);
78
- XLSX.writeFile(workbook, filename);
79
- }
80
- getFileName(sheetName) {
81
- const fileName = `${sheetName}.xlsx`;
82
- return {
83
- sheetName,
84
- fileName
85
- };
86
- }
87
- isArrayOfArrays(array) {
88
- return array.every((item) => Array.isArray(item));
89
- }
90
- }
91
- ExcelExportService.decorators = [
92
- { type: Injectable }
93
- ];
94
-
95
- class ExcelFileExportDirective extends BaseComponent {
96
- constructor(elementRef, excelExportService, logger) {
97
- super();
98
- this.elementRef = elementRef;
99
- this.excelExportService = excelExportService;
100
- this.logger = logger;
101
- this.filename = 'data';
102
- }
103
- isDisabled() {
104
- if (this.elementRef.nativeElement.disabled === true) {
105
- return true;
106
- }
107
- if (this.disabled == null) {
108
- return false;
109
- }
110
- switch (typeof this.disabled) {
111
- case 'boolean':
112
- return this.disabled;
113
- case 'string':
114
- return this.disabled.toLowerCase() === 'disabled' || this.disabled.toLowerCase() === 'true';
115
- }
116
- return false;
117
- }
118
- export() {
119
- if (this.isDisabled()) {
120
- return;
121
- }
122
- if (this.data == null) {
123
- this.logger.error(new Error('No data provided for export!'));
124
- return;
125
- }
126
- if ((this.tabs && this.tabs.length && !this.excelExportService.isArrayOfArrays(this.data)) ||
127
- (!this.tabs && this.excelExportService.isArrayOfArrays(this.data))) {
128
- this.logger.error(new Error('Wrong data structure provided!'));
129
- return;
130
- }
131
- this.excelExportService.exportAsExcel(this.data, this.filename, this.tabs, this.columns);
132
- }
133
- }
134
- ExcelFileExportDirective.decorators = [
135
- { type: Directive, args: [{
136
- selector: '[risk-xlsx-export]',
137
- host: {
138
- '[class.risk-xlsx-export]': 'true',
139
- '(click)': 'export()'
140
- }
141
- },] }
142
- ];
143
- ExcelFileExportDirective.ctorParameters = () => [
144
- { type: ElementRef },
145
- { type: ExcelExportService },
146
- { type: Logger }
147
- ];
148
- ExcelFileExportDirective.propDecorators = {
149
- columns: [{ type: Input, args: ['risk-xlsx-export-columns',] }],
150
- data: [{ type: Input, args: ['risk-xlsx-export',] }],
151
- filename: [{ type: Input, args: ['risk-xlsx-export-filename',] }],
152
- tabs: [{ type: Input, args: ['risk-xlsx-export-tabs',] }],
153
- disabled: [{ type: Input }]
154
- };
155
-
156
- class ExcelExportModule {
157
- }
158
- ExcelExportModule.decorators = [
159
- { type: NgModule, args: [{
160
- imports: [
161
- CommonModule
162
- ],
163
- declarations: [
164
- ExcelFileExportDirective
165
- ],
166
- exports: [
167
- ExcelFileExportDirective
168
- ],
169
- providers: [
170
- ExcelExportService
171
- ]
172
- },] }
173
- ];
174
-
175
- /**
176
- * Generated bundle index. Do not edit.
177
- */
178
-
179
- export { ExcelExportModule, ExcelExportService, ExcelFileExportDirective };
180
- //# sourceMappingURL=dbg-riskit-angular-excel-export.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dbg-riskit-angular-excel-export.js","sources":["../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.export.service.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.file.export.directive.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.export.module.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/dbg-riskit-angular-excel-export.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {deepClone} from '@dbg-riskit/common';\nimport * as XLSX from 'xlsx';\nimport {CSVExportColumn} from './excel.file.export.directive';\n\n@Injectable()\nexport class ExcelExportService {\n\n public exportAsExcel(exportData: any[], filename: string, tabs?: string[],\n columns?: Array<CSVExportColumn<any>> | Array<Array<CSVExportColumn<any>>>) {\n if (exportData && exportData.length && columns) {\n\n const data = this.createHeaders(exportData, columns);\n\n this.export(data, filename, tabs);\n\n }\n }\n\n private createHeaders(data: any[],\n columns: Array<CSVExportColumn<any>> | Array<Array<CSVExportColumn<any>>>): any[] {\n if (this.isArrayOfArrays(data)) {\n return this.multiTabHeaders(data, columns as Array<Array<CSVExportColumn<any>>>);\n } else {\n return this.singleTabHeaders(data, columns);\n }\n }\n\n private multiTabHeaders(data: any[], columns: Array<Array<CSVExportColumn<any>>>): any[] {\n const dataWithHeaders: any[] = [];\n data.forEach((arr: any[], index: number) => {\n const headers: { [key: string]: string } = {};\n const keys = Object.keys(arr[0]);\n keys.forEach((key) => {\n // @ts-ignore\n headers[key] = columns[index][key].header;\n });\n const clonedData = deepClone(arr);\n clonedData.unshift(headers);\n dataWithHeaders.push(clonedData);\n });\n return dataWithHeaders;\n }\n\n private singleTabHeaders(data: any[], columns: any): any[] {\n const headers: { [key: string]: string } = {};\n const keys = Object.keys(data[0]);\n\n keys.forEach((key, index) => {\n headers[key] = columns[index].header;\n });\n\n const clonedData = deepClone(data);\n clonedData.unshift(headers);\n return clonedData;\n }\n\n private export(data: any[], filename: string, tabs?: string[]): void {\n const {\n sheetName,\n fileName\n } = this.getFileName(filename);\n\n if (this.isArrayOfArrays(data)) {\n return this.multiTabExport(data, fileName, tabs);\n } else {\n return this.singleTabExport(data, sheetName, fileName);\n }\n }\n\n private multiTabExport(data: any[], filename: string, tabs?: string[]): void {\n const workbook: XLSX.WorkBook = data.reduce((result, curr, index) => {\n if ('Sheets' in result) {\n result['Sheets'] = {\n ...result['Sheets'],\n [tabs![index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})\n };\n } else {\n result['Sheets'] = {[tabs![index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})};\n }\n if ('SheetNames' in result) {\n result['SheetNames'] = [...result['SheetNames'], tabs![index]];\n } else {\n result['SheetNames'] = [tabs![index]];\n }\n return result;\n }, {});\n XLSX.writeFile(workbook, filename);\n }\n\n private singleTabExport(data: any[], sheetName: string, filename: string): void {\n const worksheet = XLSX.utils.json_to_sheet(data, {skipHeader: true});\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);\n XLSX.writeFile(workbook, filename);\n }\n\n private getFileName(sheetName: string): { sheetName: string, fileName: string } {\n const fileName = `${sheetName}.xlsx`;\n return {\n sheetName,\n fileName\n };\n }\n\n public isArrayOfArrays(array: any[]): boolean {\n return array.every((item) => Array.isArray(item));\n }\n}\n","import {Directive, ElementRef, Input} from '@angular/core';\nimport {BaseComponent} from '@dbg-riskit/angular-view';\nimport {Logger, ValueGetter} from '@dbg-riskit/common';\nimport {ExcelExportService} from './excel.export.service';\n\nexport interface CSVExportColumn<T> {\n get: ValueGetter<T>;\n header: string;\n}\n\n@Directive({\n selector: '[risk-xlsx-export]',\n host : {\n '[class.risk-xlsx-export]': 'true',\n '(click)' : 'export()'\n }\n})\nexport class ExcelFileExportDirective extends BaseComponent {\n\n /**\n * 'risk-xlsx-export-columns' can be provided as array OR array of arrays,\n * When provided as array of arrays then 'risk-xlsx-export' should be provided as array of arrays as well,\n * That means that multiple tabs are used, tab names are provided in 'risk-xlsx-export-tabs' as array of strings,\n */\n @Input('risk-xlsx-export-columns')\n public columns?: Array<CSVExportColumn<any>> | Array<Array<CSVExportColumn<any>>>;\n\n @Input('risk-xlsx-export')\n public data?: any[];\n\n @Input('risk-xlsx-export-filename')\n public filename: string = 'data';\n\n @Input('risk-xlsx-export-tabs')\n public tabs?: string[];\n\n @Input()\n public disabled?: boolean | string;\n\n public constructor(private readonly elementRef: ElementRef,\n private readonly excelExportService: ExcelExportService,\n private readonly logger: Logger) {\n super();\n }\n\n private isDisabled(): boolean {\n if (this.elementRef.nativeElement.disabled === true) {\n return true;\n }\n\n if (this.disabled == null) {\n return false;\n }\n\n switch (typeof this.disabled) {\n case 'boolean':\n return this.disabled;\n case 'string':\n return this.disabled.toLowerCase() === 'disabled' || this.disabled.toLowerCase() === 'true';\n }\n\n return false;\n }\n\n public export(): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.data == null) {\n this.logger.error(new Error('No data provided for export!'));\n return;\n }\n\n if ((this.tabs && this.tabs.length && !this.excelExportService.isArrayOfArrays(this.data)) ||\n (!this.tabs && this.excelExportService.isArrayOfArrays(this.data))) {\n this.logger.error(new Error('Wrong data structure provided!'));\n return;\n }\n\n this.excelExportService.exportAsExcel(this.data, this.filename, this.tabs, this.columns);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ExcelExportService} from './excel.export.service';\nimport {ExcelFileExportDirective} from './excel.file.export.directive';\n\n@NgModule({\n imports : [\n CommonModule\n ],\n declarations: [\n ExcelFileExportDirective\n ],\n exports : [\n ExcelFileExportDirective\n ],\n providers : [\n ExcelExportService\n ]\n})\nexport class ExcelExportModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}