ms-data-grid 0.0.59 → 0.0.61
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/esm2022/lib/data-grid/data-grid.component.mjs +5213 -0
- package/esm2022/lib/data-grid/statuses.mjs +45 -0
- package/esm2022/lib/data-grid.module.mjs +27 -0
- package/esm2022/lib/directives/cell-render-init.directive.mjs +67 -0
- package/esm2022/lib/directives/cellHost.directive.mjs +16 -0
- package/esm2022/lib/pipes/filter.pipe.mjs +28 -0
- package/esm2022/lib/services/common.service.mjs +259 -0
- package/esm2022/lib/services/copy-service.service.mjs +222 -0
- package/esm2022/lib/services/export.service.mjs +149 -0
- package/esm2022/lib/services/split-columns.service.mjs +143 -0
- package/esm2022/ms-data-grid.mjs +5 -0
- package/esm2022/public-api.mjs +6 -0
- package/fesm2022/ms-data-grid.mjs +6150 -0
- package/fesm2022/ms-data-grid.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/data-grid/data-grid.component.d.ts +570 -0
- package/lib/data-grid/statuses.d.ts +3 -0
- package/lib/data-grid.module.d.ts +15 -0
- package/lib/directives/cell-render-init.directive.d.ts +18 -0
- package/lib/directives/cellHost.directive.d.ts +8 -0
- package/lib/pipes/filter.pipe.d.ts +7 -0
- package/lib/services/common.service.d.ts +18 -0
- package/lib/services/copy-service.service.d.ts +14 -0
- package/lib/services/export.service.d.ts +24 -0
- package/lib/services/split-columns.service.d.ts +9 -0
- package/package.json +51 -38
- package/{src/public-api.ts → public-api.d.ts} +2 -6
- package/ng-package.json +0 -18
- package/src/lib/css/bootstrap.css +0 -12043
- package/src/lib/data-grid/animations.ts +0 -267
- package/src/lib/data-grid/data-grid.component.html +0 -5724
- package/src/lib/data-grid/data-grid.component.scss +0 -2126
- package/src/lib/data-grid/data-grid.component.spec.ts +0 -28
- package/src/lib/data-grid/data-grid.component.ts +0 -5780
- package/src/lib/data-grid/statuses.ts +0 -49
- package/src/lib/data-grid.module.ts +0 -21
- package/src/lib/data-grid.service.spec.ts +0 -16
- package/src/lib/data-grid.service.ts +0 -9
- package/src/lib/directives/cell-render-init.directive.spec.ts +0 -11
- package/src/lib/directives/cell-render-init.directive.ts +0 -65
- package/src/lib/directives/cellHost.directive.spec.ts +0 -11
- package/src/lib/directives/cellHost.directive.ts +0 -10
- package/src/lib/directives/draggable-header.directive.spec.ts +0 -11
- package/src/lib/directives/draggable-header.directive.ts +0 -172
- package/src/lib/pipes/filter.pipe.spec.ts +0 -11
- package/src/lib/pipes/filter.pipe.ts +0 -22
- package/src/lib/services/cell-selection.service.spec.ts +0 -16
- package/src/lib/services/cell-selection.service.ts +0 -205
- package/src/lib/services/common.service.spec.ts +0 -16
- package/src/lib/services/common.service.ts +0 -306
- package/src/lib/services/copy-service.service.spec.ts +0 -16
- package/src/lib/services/copy-service.service.ts +0 -252
- package/src/lib/services/drag-drp.service.spec.ts +0 -16
- package/src/lib/services/drag-drp.service.ts +0 -58
- package/src/lib/services/export.service.spec.ts +0 -16
- package/src/lib/services/export.service.ts +0 -189
- package/src/lib/services/split-columns.service.spec.ts +0 -16
- package/src/lib/services/split-columns.service.ts +0 -148
- package/src/lib/services/swap-columns.service.spec.ts +0 -16
- package/src/lib/services/swap-columns.service.ts +0 -162
- package/src/typings.d.ts +0 -4
- package/tsconfig.lib.json +0 -19
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -14
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class CopyServiceService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.updateRows = [];
|
|
6
|
+
this.currentColums = [];
|
|
7
|
+
}
|
|
8
|
+
getSelectedDataForCopy(dataSet, columns, rowSelectedIndexes, selectedCells, getNestedValue) {
|
|
9
|
+
columns = columns.filter(col => col.is_visible);
|
|
10
|
+
const copiedRows = [];
|
|
11
|
+
const findRowByVirtualIndex = (vIndex) => dataSet.find((r) => r.__virtualIndex === vIndex);
|
|
12
|
+
if (rowSelectedIndexes && rowSelectedIndexes.size > 0) {
|
|
13
|
+
const sortedIndexes = [...rowSelectedIndexes].sort((a, b) => a - b);
|
|
14
|
+
for (const vIndex of sortedIndexes) {
|
|
15
|
+
const row = findRowByVirtualIndex(vIndex);
|
|
16
|
+
if (!row)
|
|
17
|
+
continue;
|
|
18
|
+
const extractValue = (field) => {
|
|
19
|
+
const nested = getNestedValue(row, field);
|
|
20
|
+
const value = nested?.value ??
|
|
21
|
+
nested?.name ??
|
|
22
|
+
nested ??
|
|
23
|
+
'-';
|
|
24
|
+
if (Array.isArray(value)) {
|
|
25
|
+
return value
|
|
26
|
+
.map(v => typeof v === 'object'
|
|
27
|
+
? (v.departmentName ?? v.roleName ?? '')
|
|
28
|
+
: (v?.toString() ?? ''))
|
|
29
|
+
.join(', ');
|
|
30
|
+
}
|
|
31
|
+
return value ?? '';
|
|
32
|
+
};
|
|
33
|
+
const mapped = columns.map(col => {
|
|
34
|
+
if (col.children && Array.isArray(col.children)) {
|
|
35
|
+
return col.children.map((c) => extractValue(c.field));
|
|
36
|
+
}
|
|
37
|
+
return [extractValue(col.field)];
|
|
38
|
+
});
|
|
39
|
+
const rowValues = mapped.reduce((acc, curr) => acc.concat(curr), []);
|
|
40
|
+
copiedRows.push(rowValues);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (selectedCells && selectedCells.length > 0) {
|
|
44
|
+
const rowsMap = new Map();
|
|
45
|
+
for (const cell of selectedCells) {
|
|
46
|
+
const row = findRowByVirtualIndex(cell.rowIndex);
|
|
47
|
+
if (!row)
|
|
48
|
+
continue;
|
|
49
|
+
const col = columns[cell.colIndex];
|
|
50
|
+
let fieldName = col?.field;
|
|
51
|
+
if (col?.children && col.children[cell.subColIndex]) {
|
|
52
|
+
fieldName = col.children[cell.subColIndex].field;
|
|
53
|
+
}
|
|
54
|
+
let value = getNestedValue(row, fieldName) || getNestedValue(row, fieldName)?.name || getNestedValue(row, fieldName) || '-';
|
|
55
|
+
if (Array.isArray(value)) {
|
|
56
|
+
value = value
|
|
57
|
+
.map(v => typeof v === 'object'
|
|
58
|
+
? v.departmentName ?? v.roleName ?? v.full_name ?? ''
|
|
59
|
+
: v?.toString() ?? '')
|
|
60
|
+
.join(', ');
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
value = value ?? '';
|
|
64
|
+
}
|
|
65
|
+
if (!rowsMap.has(cell.rowIndex))
|
|
66
|
+
rowsMap.set(cell.rowIndex, []);
|
|
67
|
+
rowsMap.get(cell.rowIndex).push(value);
|
|
68
|
+
}
|
|
69
|
+
const sortedCells = [...rowsMap.entries()]
|
|
70
|
+
.sort(([a], [b]) => a - b)
|
|
71
|
+
.map(([_, v]) => v);
|
|
72
|
+
copiedRows.push(...sortedCells);
|
|
73
|
+
}
|
|
74
|
+
if (copiedRows.length === 0) {
|
|
75
|
+
const activeCell = document.querySelector('.active-cell');
|
|
76
|
+
if (activeCell)
|
|
77
|
+
return [[activeCell.textContent?.trim() || '']];
|
|
78
|
+
}
|
|
79
|
+
const maxCols = copiedRows.reduce((max, row) => Math.max(max, row.length), 0);
|
|
80
|
+
return copiedRows.map(row => {
|
|
81
|
+
const newRow = [...row];
|
|
82
|
+
while (newRow.length < maxCols)
|
|
83
|
+
newRow.push('');
|
|
84
|
+
return newRow;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
copyToClipboard(selectedData, selector = '.selected-cell, .active-cell, .row-selected') {
|
|
88
|
+
if (!selectedData || selectedData.length === 0)
|
|
89
|
+
return;
|
|
90
|
+
const textToCopy = selectedData
|
|
91
|
+
.map(row => row.map(cell => (cell ?? '').toString()).join('\t'))
|
|
92
|
+
.join('\n');
|
|
93
|
+
navigator.clipboard.writeText(textToCopy).catch(err => console.error(err));
|
|
94
|
+
const selectedEls = document.querySelectorAll(selector);
|
|
95
|
+
selectedEls.forEach(el => el.classList.add('flash-bg'));
|
|
96
|
+
setTimeout(() => {
|
|
97
|
+
selectedEls.forEach(el => el.classList.remove('flash-bg'));
|
|
98
|
+
}, 1000);
|
|
99
|
+
}
|
|
100
|
+
async pasteFromClipboardText(text, dataSet, columns, startRowIndex, startColIndex, startSubColIndex = 0) {
|
|
101
|
+
if (!text)
|
|
102
|
+
return [];
|
|
103
|
+
this.updateRows = [];
|
|
104
|
+
const rows = text.split(/\r?\n/).map(r => r.split('\t'));
|
|
105
|
+
const flattenedColumns = [];
|
|
106
|
+
columns.forEach(col => {
|
|
107
|
+
if (col.children?.length) {
|
|
108
|
+
col.children.forEach((child) => flattenedColumns.push({ parent: col, ...child }));
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
flattenedColumns.push(col);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
let startFlattenedIndex = 0;
|
|
115
|
+
for (let i = 0; i < startColIndex; i++) {
|
|
116
|
+
const col = columns[i];
|
|
117
|
+
startFlattenedIndex += col.children?.length || 1;
|
|
118
|
+
}
|
|
119
|
+
const startCol = columns[startColIndex];
|
|
120
|
+
if (startCol?.children?.length) {
|
|
121
|
+
startFlattenedIndex += Math.min(startSubColIndex, startCol.children.length - 1);
|
|
122
|
+
}
|
|
123
|
+
rows.forEach((rowValues, rOffset) => {
|
|
124
|
+
const targetRowIndex = startRowIndex + rOffset;
|
|
125
|
+
const row = dataSet.find(r => r?.__virtualIndex === targetRowIndex);
|
|
126
|
+
if (!row)
|
|
127
|
+
return;
|
|
128
|
+
rowValues.forEach((value, cOffset) => {
|
|
129
|
+
const targetIndex = startFlattenedIndex + cOffset;
|
|
130
|
+
if (targetIndex < 0 || targetIndex >= flattenedColumns.length)
|
|
131
|
+
return;
|
|
132
|
+
const targetColumn = flattenedColumns[targetIndex];
|
|
133
|
+
if (!targetColumn || !targetColumn.is_editable)
|
|
134
|
+
return;
|
|
135
|
+
if (targetColumn?.type === 'string') {
|
|
136
|
+
this.currentColums.push(targetColumn);
|
|
137
|
+
this.setNestedValue(row, targetColumn, value);
|
|
138
|
+
}
|
|
139
|
+
else if (targetColumn.type === 'number') {
|
|
140
|
+
const num = Number(value);
|
|
141
|
+
if (!isNaN(num) && value !== '') {
|
|
142
|
+
this.currentColums.push(targetColumn);
|
|
143
|
+
this.setNestedValue(row, targetColumn, num);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
return { updateRows: this.updateRows, currentColums: this.currentColums };
|
|
149
|
+
}
|
|
150
|
+
setNestedValue(obj, column, option, calledFromInput = false) {
|
|
151
|
+
if (column.type === 'date' || column.type === 'image')
|
|
152
|
+
return;
|
|
153
|
+
const path = column.field;
|
|
154
|
+
if (!path)
|
|
155
|
+
return;
|
|
156
|
+
const keys = path.split('.');
|
|
157
|
+
const lastKey = keys.pop();
|
|
158
|
+
const parent = keys.reduce((acc, key) => (acc[key] ??= {}), obj);
|
|
159
|
+
if (parent && lastKey) {
|
|
160
|
+
if (typeof option === 'object' && option !== null) {
|
|
161
|
+
parent[lastKey] = {
|
|
162
|
+
id: option.id ?? 1,
|
|
163
|
+
value: option.value ?? option,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
parent[lastKey] = option;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
const sendObj = {
|
|
171
|
+
data: { ...obj },
|
|
172
|
+
eventType: 'onCellEdit',
|
|
173
|
+
};
|
|
174
|
+
this.updateRows.push(obj);
|
|
175
|
+
}
|
|
176
|
+
cutSelectedSelectedData(dataSet, rowSelectedIndexes, selectedCells, columns, setNestedValue) {
|
|
177
|
+
let updatedData = [...dataSet];
|
|
178
|
+
if (rowSelectedIndexes?.size) {
|
|
179
|
+
const indexes = [...rowSelectedIndexes];
|
|
180
|
+
updatedData = updatedData.filter((row) => !indexes.includes(row.__virtualIndex));
|
|
181
|
+
// rowSelectedIndexes.clear();
|
|
182
|
+
}
|
|
183
|
+
else if (selectedCells?.length) {
|
|
184
|
+
this.updateRows = [];
|
|
185
|
+
for (const cell of selectedCells) {
|
|
186
|
+
const row = updatedData.find(r => r.__virtualIndex === cell.rowIndex);
|
|
187
|
+
if (!row)
|
|
188
|
+
continue;
|
|
189
|
+
let col = columns[cell.colIndex];
|
|
190
|
+
if (col?.children && col.children[cell.subColIndex]) {
|
|
191
|
+
col = col.children[cell.subColIndex];
|
|
192
|
+
}
|
|
193
|
+
this.setNestedValue(row, col, '');
|
|
194
|
+
}
|
|
195
|
+
// selectedCells.length = 0;
|
|
196
|
+
}
|
|
197
|
+
return { updatedData: updatedData, updatedRows: this.updateRows };
|
|
198
|
+
}
|
|
199
|
+
cutWithAnimation(selectedData, selector = '.selected-cell, .active-cell, .row-selected') {
|
|
200
|
+
if (!selectedData || selectedData.length === 0)
|
|
201
|
+
return;
|
|
202
|
+
const textToCopy = selectedData
|
|
203
|
+
.map(row => row.map(cell => (cell ?? '').toString()).join('\t'))
|
|
204
|
+
.join('\n');
|
|
205
|
+
navigator.clipboard.writeText(textToCopy).catch(err => console.error(err));
|
|
206
|
+
// Apply red cut animation
|
|
207
|
+
const selectedEls = document.querySelectorAll(selector);
|
|
208
|
+
selectedEls.forEach(el => el.classList.add('cut-flash-bg'));
|
|
209
|
+
setTimeout(() => {
|
|
210
|
+
selectedEls.forEach(el => el.classList.remove('cut-flash-bg'));
|
|
211
|
+
}, 1000);
|
|
212
|
+
}
|
|
213
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyServiceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
214
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyServiceService, providedIn: 'root' }); }
|
|
215
|
+
}
|
|
216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyServiceService, decorators: [{
|
|
217
|
+
type: Injectable,
|
|
218
|
+
args: [{
|
|
219
|
+
providedIn: 'root'
|
|
220
|
+
}]
|
|
221
|
+
}], ctorParameters: function () { return []; } });
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS1zZXJ2aWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9zZXJ2aWNlcy9jb3B5LXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCO1FBMkdGLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDckIsa0JBQWEsR0FBUyxFQUFFLENBQUE7SUE1R1IsQ0FBQztJQUNqQixzQkFBc0IsQ0FDcEIsT0FBYyxFQUNkLE9BQWMsRUFDZCxrQkFBK0IsRUFDL0IsYUFBb0IsRUFDcEIsY0FBK0M7UUFFL0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsTUFBTSxVQUFVLEdBQVksRUFBRSxDQUFDO1FBQy9CLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksa0JBQWtCLElBQUksa0JBQWtCLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtZQUNyRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDcEUsS0FBSyxNQUFNLE1BQU0sSUFBSSxhQUFhLEVBQUU7Z0JBQ2xDLE1BQU0sR0FBRyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsR0FBRztv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QUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUzRSwwQkFBMEI7UUFDMUIsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDOytHQW5QVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29weVNlcnZpY2VTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuICBnZXRTZWxlY3RlZERhdGFGb3JDb3B5KFxyXG4gICAgZGF0YVNldDogYW55W10sXHJcbiAgICBjb2x1bW5zOiBhbnlbXSxcclxuICAgIHJvd1NlbGVjdGVkSW5kZXhlczogU2V0PG51bWJlcj4sXHJcbiAgICBzZWxlY3RlZENlbGxzOiBhbnlbXSxcclxuICAgIGdldE5lc3RlZFZhbHVlOiAob2JqOiBhbnksIHBhdGg6IHN0cmluZykgPT4gYW55XHJcbiAgKTogYW55W11bXSB7XHJcbiAgICBjb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5pc192aXNpYmxlKTtcclxuICAgIGNvbnN0IGNvcGllZFJvd3M6IGFueVtdW10gPSBbXTtcclxuICAgIGNvbnN0IGZpbmRSb3dCeVZpcnR1YWxJbmRleCA9ICh2SW5kZXg6IG51bWJlcikgPT5cclxuICAgICAgZGF0YVNldC5maW5kKChyOiBhbnkpID0+IHIuX192aXJ0dWFsSW5kZXggPT09IHZJbmRleCk7XHJcbiAgICBpZiAocm93U2VsZWN0ZWRJbmRleGVzICYmIHJvd1NlbGVjdGVkSW5kZXhlcy5zaXplID4gMCkge1xyXG4gICAgICBjb25zdCBzb3J0ZWRJbmRleGVzID0gWy4uLnJvd1NlbGVjdGVkSW5kZXhlc10uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xyXG4gICAgICBmb3IgKGNvbnN0IHZJbmRleCBvZiBzb3J0ZWRJbmRleGVzKSB7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gZmluZFJvd0J5VmlydHVhbEluZGV4KHZJbmRleCk7XHJcbiAgICAgICAgaWYgKCFyb3cpIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnN0IGV4dHJhY3RWYWx1ZSA9IChmaWVsZDogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5lc3RlZCA9IGdldE5lc3RlZFZhbHVlKHJvdywgZmllbGQpO1xyXG4gICAgICAgICAgY29uc3QgdmFsdWUgPVxyXG4gICAgICAgICAgICBuZXN0ZWQ/LnZhbHVlID8/XHJcbiAgICAgICAgICAgIG5lc3RlZD8ubmFtZSA/P1xyXG4gICAgICAgICAgICBuZXN0ZWQgPz9cclxuICAgICAgICAgICAgJy0nO1xyXG5cclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWVcclxuICAgICAgICAgICAgICAubWFwKHYgPT5cclxuICAgICAgICAgICAgICAgIHR5cGVvZiB2ID09PSAnb2JqZWN0J1xyXG4gICAgICAgICAgICAgICAgICA/ICh2LmRlcGFydG1lbnROYW1lID8/IHYucm9sZU5hbWUgPz8gJycpXHJcbiAgICAgICAgICAgICAgICAgIDogKHY/LnRvU3RyaW5nKCkgPz8gJycpXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIC5qb2luKCcsICcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlID8/ICcnO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgbWFwcGVkID0gY29sdW1ucy5tYXAoY29sID0+IHtcclxuICAgICAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb2wuY2hpbGRyZW4ubWFwKChjOiB7IGZpZWxkOiBzdHJpbmcgfSkgPT4gZXh0cmFjdFZhbHVlKGMuZmllbGQpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBbZXh0cmFjdFZhbHVlKGNvbC5maWVsZCldO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IHJvd1ZhbHVlcyA9IG1hcHBlZC5yZWR1Y2U8c3RyaW5nW10+KChhY2MsIGN1cnIpID0+IGFjYy5jb25jYXQoY3VyciksIFtdKTtcclxuICAgICAgICBjb3BpZWRSb3dzLnB1c2gocm93VmFsdWVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHNlbGVjdGVkQ2VsbHMgJiYgc2VsZWN0ZWRDZWxscy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJvd3NNYXAgPSBuZXcgTWFwPG51bWJlciwgYW55W10+KCk7XHJcbiAgICAgIGZvciAoY29uc3QgY2VsbCBvZiBzZWxlY3RlZENlbGxzKSB7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gZmluZFJvd0J5VmlydHVhbEluZGV4KGNlbGwucm93SW5kZXgpO1xyXG4gICAgICAgIGlmICghcm93KSBjb250aW51ZTtcclxuICAgICAgICBjb25zdCBjb2wgPSBjb2x1bW5zW2NlbGwuY29sSW5kZXhdO1xyXG4gICAgICAgIGxldCBmaWVsZE5hbWUgPSBjb2w/LmZpZWxkO1xyXG4gICAgICAgIGlmIChjb2w/LmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbltjZWxsLnN1YkNvbEluZGV4XSkge1xyXG4gICAgICAgICAgZmllbGROYW1lID0gY29sLmNoaWxkcmVuW2NlbGwuc3ViQ29sSW5kZXhdLmZpZWxkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdmFsdWUgPSBnZXROZXN0ZWRWYWx1ZShyb3csIGZpZWxkTmFtZSkgfHwgZ2V0TmVzdGVkVmFsdWUocm93LCBmaWVsZE5hbWUpPy5uYW1lIHx8IGdldE5lc3RlZFZhbHVlKHJvdywgZmllbGROYW1lKSB8fCAnLSc7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgICAgIC5tYXAodiA9PlxyXG4gICAgICAgICAgICAgIHR5cGVvZiB2ID09PSAnb2JqZWN0J1xyXG4gICAgICAgICAgICAgICAgPyB2LmRlcGFydG1lbnROYW1lID8/IHYucm9sZU5hbWUgPz8gdi5mdWxsX25hbWUgPz8gJydcclxuICAgICAgICAgICAgICAgIDogdj8udG9TdHJpbmcoKSA/PyAnJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5qb2luKCcsICcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlID8/ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXJvd3NNYXAuaGFzKGNlbGwucm93SW5kZXgpKSByb3dzTWFwLnNldChjZWxsLnJvd0luZGV4LCBbXSk7XHJcbiAgICAgICAgcm93c01hcC5nZXQoY2VsbC5yb3dJbmRleCkhLnB1c2godmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNvcnRlZENlbGxzID0gWy4uLnJvd3NNYXAuZW50cmllcygpXVxyXG4gICAgICAgIC5zb3J0KChbYV0sIFtiXSkgPT4gYSAtIGIpXHJcbiAgICAgICAgLm1hcCgoW18sIHZdKSA9PiB2KTtcclxuICAgICAgY29waWVkUm93cy5wdXNoKC4uLnNvcnRlZENlbGxzKTtcclxuICAgIH1cclxuICAgIGlmIChjb3BpZWRSb3dzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBjb25zdCBhY3RpdmVDZWxsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmFjdGl2ZS1jZWxsJyk7XHJcbiAgICAgIGlmIChhY3RpdmVDZWxsKSByZXR1cm4gW1thY3RpdmVDZWxsLnRleHRDb250ZW50Py50cmltKCkgfHwgJyddXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtYXhDb2xzID0gY29waWVkUm93cy5yZWR1Y2UoKG1heCwgcm93KSA9PiBNYXRoLm1heChtYXgsIHJvdy5sZW5ndGgpLCAwKTtcclxuICAgIHJldHVybiBjb3BpZWRSb3dzLm1hcChyb3cgPT4ge1xyXG4gICAgICBjb25zdCBuZXdSb3cgPSBbLi4ucm93XTtcclxuICAgICAgd2hpbGUgKG5ld1Jvdy5sZW5ndGggPCBtYXhDb2xzKSBuZXdSb3cucHVzaCgnJyk7XHJcbiAgICAgIHJldHVybiBuZXdSb3c7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBjb3B5VG9DbGlwYm9hcmQoXHJcbiAgICBzZWxlY3RlZERhdGE6IGFueVtdW10sXHJcbiAgICBzZWxlY3RvciA9ICcuc2VsZWN0ZWQtY2VsbCwgLmFjdGl2ZS1jZWxsLCAucm93LXNlbGVjdGVkJ1xyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKCFzZWxlY3RlZERhdGEgfHwgc2VsZWN0ZWREYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGV4dFRvQ29weSA9IHNlbGVjdGVkRGF0YVxyXG4gICAgICAubWFwKHJvdyA9PiByb3cubWFwKGNlbGwgPT4gKGNlbGwgPz8gJycpLnRvU3RyaW5nKCkpLmpvaW4oJ1xcdCcpKVxyXG4gICAgICAuam9pbignXFxuJyk7XHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0VG9Db3B5KS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkRWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XHJcbiAgICBzZWxlY3RlZEVscy5mb3JFYWNoKGVsID0+IGVsLmNsYXNzTGlzdC5hZGQoJ2ZsYXNoLWJnJykpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHNlbGVjdGVkRWxzLmZvckVhY2goZWwgPT4gZWwuY2xhc3NMaXN0LnJlbW92ZSgnZmxhc2gtYmcnKSk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG5cclxudXBkYXRlUm93czogYW55W10gPSBbXTtcclxuICBjdXJyZW50Q29sdW1zIDogYW55ID0gW11cclxuICBhc3luYyBwYXN0ZUZyb21DbGlwYm9hcmRUZXh0KFxyXG4gICAgdGV4dDogc3RyaW5nLFxyXG4gICAgZGF0YVNldDogYW55W10sXHJcbiAgICBjb2x1bW5zOiBhbnlbXSxcclxuICAgIHN0YXJ0Um93SW5kZXg6IG51bWJlcixcclxuICAgIHN0YXJ0Q29sSW5kZXg6IG51bWJlcixcclxuICAgIHN0YXJ0U3ViQ29sSW5kZXg6IG51bWJlciA9IDBcclxuICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gW107XHJcbiAgICB0aGlzLnVwZGF0ZVJvd3MgPSBbXTtcclxuICAgIGNvbnN0IHJvd3MgPSB0ZXh0LnNwbGl0KC9cXHI/XFxuLykubWFwKHIgPT4gci5zcGxpdCgnXFx0JykpO1xyXG4gICAgY29uc3QgZmxhdHRlbmVkQ29sdW1uczogYW55W10gPSBbXTtcclxuICAgIGNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBjb2wuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gZmxhdHRlbmVkQ29sdW1ucy5wdXNoKHsgcGFyZW50OiBjb2wsIC4uLmNoaWxkIH0pKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmbGF0dGVuZWRDb2x1bW5zLnB1c2goY29sKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgc3RhcnRGbGF0dGVuZWRJbmRleCA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXJ0Q29sSW5kZXg7IGkrKykge1xyXG4gICAgICBjb25zdCBjb2wgPSBjb2x1bW5zW2ldO1xyXG4gICAgICBzdGFydEZsYXR0ZW5lZEluZGV4ICs9IGNvbC5jaGlsZHJlbj8ubGVuZ3RoIHx8IDE7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdGFydENvbCA9IGNvbHVtbnNbc3RhcnRDb2xJbmRleF07XHJcbiAgICBpZiAoc3RhcnRDb2w/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgc3RhcnRGbGF0dGVuZWRJbmRleCArPSBNYXRoLm1pbihzdGFydFN1YkNvbEluZGV4LCBzdGFydENvbC5jaGlsZHJlbi5sZW5ndGggLSAxKTtcclxuICAgIH1cclxuIFxyXG4gICAgcm93cy5mb3JFYWNoKChyb3dWYWx1ZXMsIHJPZmZzZXQpID0+IHtcclxuICAgICAgY29uc3QgdGFyZ2V0Um93SW5kZXggPSBzdGFydFJvd0luZGV4ICsgck9mZnNldDtcclxuICAgICAgY29uc3Qgcm93ID0gZGF0YVNldC5maW5kKHIgPT4gcj8uX192aXJ0dWFsSW5kZXggPT09IHRhcmdldFJvd0luZGV4KTtcclxuICAgICAgaWYgKCFyb3cpIHJldHVybjtcclxuIFxyXG4gICAgICByb3dWYWx1ZXMuZm9yRWFjaCgodmFsdWUsIGNPZmZzZXQpID0+IHtcclxuICAgICAgICBjb25zdCB0YXJnZXRJbmRleCA9IHN0YXJ0RmxhdHRlbmVkSW5kZXggKyBjT2Zmc2V0O1xyXG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA8IDAgfHwgdGFyZ2V0SW5kZXggPj0gZmxhdHRlbmVkQ29sdW1ucy5sZW5ndGgpIHJldHVybjtcclxuIFxyXG4gICAgICAgIGNvbnN0IHRhcmdldENvbHVtbiA9IGZsYXR0ZW5lZENvbHVtbnNbdGFyZ2V0SW5kZXhdO1xyXG4gICAgICAgIGlmKCF0YXJnZXRDb2x1bW4gfHwgIXRhcmdldENvbHVtbi5pc19lZGl0YWJsZSkgcmV0dXJuO1xyXG4gICAgICAgICBpZiAodGFyZ2V0Q29sdW1uPy50eXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50Q29sdW1zLnB1c2godGFyZ2V0Q29sdW1uKTtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyb3csIHRhcmdldENvbHVtbiwgdmFsdWUpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0YXJnZXRDb2x1bW4udHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKCFpc05hTihudW0pICYmIHZhbHVlICE9PSAnJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudENvbHVtcy5wdXNoKHRhcmdldENvbHVtbik7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyb3csIHRhcmdldENvbHVtbiwgbnVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gXHJcbiAgICByZXR1cm4ge3VwZGF0ZVJvd3MgOiB0aGlzLnVwZGF0ZVJvd3MsIGN1cnJlbnRDb2x1bXMgOiB0aGlzLmN1cnJlbnRDb2x1bXN9O1xyXG4gIH1cclxuXHJcblxyXG4gIHNldE5lc3RlZFZhbHVlKG9iajogYW55LCBjb2x1bW46IGFueSwgb3B0aW9uOiBhbnksIGNhbGxlZEZyb21JbnB1dCA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2ltYWdlJykgcmV0dXJuO1xyXG4gICAgY29uc3QgcGF0aCA9IGNvbHVtbi5maWVsZDtcclxuICAgIGlmICghcGF0aCkgcmV0dXJuO1xyXG4gICAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoJy4nKTtcclxuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzLnBvcCgpO1xyXG4gICAgY29uc3QgcGFyZW50ID0ga2V5cy5yZWR1Y2UoKGFjYzogYW55LCBrZXk6IHN0cmluZykgPT4gKGFjY1trZXldID8/PSB7fSksIG9iaik7XHJcbiAgICBpZiAocGFyZW50ICYmIGxhc3RLZXkpIHtcclxuICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbiAhPT0gbnVsbCkge1xyXG4gICAgICAgIHBhcmVudFtsYXN0S2V5XSA9IHtcclxuICAgICAgICAgIGlkOiBvcHRpb24uaWQgPz8gMSxcclxuICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUgPz8gb3B0aW9uLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0gb3B0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZW5kT2JqID0ge1xyXG4gICAgICBkYXRhOiB7IC4uLm9iaiB9LFxyXG4gICAgICBldmVudFR5cGU6ICdvbkNlbGxFZGl0JyxcclxuICAgIH07XHJcbiAgICB0aGlzLnVwZGF0ZVJvd3MucHVzaChvYmopO1xyXG4gIH1cclxuXHJcblxyXG4gIGN1dFNlbGVjdGVkU2VsZWN0ZWREYXRhKFxyXG4gICAgZGF0YVNldDogYW55W10sXHJcbiAgICByb3dTZWxlY3RlZEluZGV4ZXM6IFNldDxudW1iZXI+LFxyXG4gICAgc2VsZWN0ZWRDZWxsczogYW55W10sXHJcbiAgICBjb2x1bW5zOiBhbnlbXSxcclxuICAgIHNldE5lc3RlZFZhbHVlOiAob2JqOiBhbnksIGNvbHVtbjogYW55LCB2YWx1ZTogYW55KSA9PiB2b2lkXHJcbiAgKTogYW55IHtcclxuICAgIGxldCB1cGRhdGVkRGF0YSA9IFsuLi5kYXRhU2V0XTtcclxuICAgIGlmIChyb3dTZWxlY3RlZEluZGV4ZXM/LnNpemUpIHtcclxuICAgICAgY29uc3QgaW5kZXhlcyA9IFsuLi5yb3dTZWxlY3RlZEluZGV4ZXNdO1xyXG4gICAgICB1cGRhdGVkRGF0YSA9IHVwZGF0ZWREYXRhLmZpbHRlcihcclxuICAgICAgICAocm93OiBhbnkpID0+ICFpbmRleGVzLmluY2x1ZGVzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgKTtcclxuICAgICAgLy8gcm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZWxlY3RlZENlbGxzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy51cGRhdGVSb3dzID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgY2VsbCBvZiBzZWxlY3RlZENlbGxzKSB7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gdXBkYXRlZERhdGEuZmluZChyID0+IHIuX192aXJ0dWFsSW5kZXggPT09IGNlbGwucm93SW5kZXgpO1xyXG4gICAgICAgIGlmICghcm93KSBjb250aW51ZTtcclxuICAgICAgICBsZXQgY29sID0gY29sdW1uc1tjZWxsLmNvbEluZGV4XTtcclxuICAgICAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW5bY2VsbC5zdWJDb2xJbmRleF0pIHtcclxuICAgICAgICAgIGNvbCA9IGNvbC5jaGlsZHJlbltjZWxsLnN1YkNvbEluZGV4XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyb3csIGNvbCwgJycpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHNlbGVjdGVkQ2VsbHMubGVuZ3RoID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiB7dXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLCB1cGRhdGVkUm93czogdGhpcy51cGRhdGVSb3dzfTtcclxuICB9XHJcblxyXG5cclxuICBjdXRXaXRoQW5pbWF0aW9uKFxyXG4gICAgc2VsZWN0ZWREYXRhOiBhbnlbXVtdLFxyXG4gICAgc2VsZWN0b3IgPSAnLnNlbGVjdGVkLWNlbGwsIC5hY3RpdmUtY2VsbCwgLnJvdy1zZWxlY3RlZCdcclxuICApOiB2b2lkIHtcclxuICAgIGlmICghc2VsZWN0ZWREYXRhIHx8IHNlbGVjdGVkRGF0YS5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB0ZXh0VG9Db3B5ID0gc2VsZWN0ZWREYXRhXHJcbiAgICAgIC5tYXAocm93ID0+IHJvdy5tYXAoY2VsbCA9PiAoY2VsbCA/PyAnJykudG9TdHJpbmcoKSkuam9pbignXFx0JykpXHJcbiAgICAgIC5qb2luKCdcXG4nKTtcclxuXHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0VG9Db3B5KS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcclxuXHJcbiAgICAvLyBBcHBseSByZWQgY3V0IGFuaW1hdGlvblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRFbHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcclxuICAgIHNlbGVjdGVkRWxzLmZvckVhY2goZWwgPT4gZWwuY2xhc3NMaXN0LmFkZCgnY3V0LWZsYXNoLWJnJykpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHNlbGVjdGVkRWxzLmZvckVhY2goZWwgPT4gZWwuY2xhc3NMaXN0LnJlbW92ZSgnY3V0LWZsYXNoLWJnJykpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as XLSX from 'xlsx-js-style';
|
|
3
|
+
import { saveAs } from 'file-saver';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ExportService {
|
|
6
|
+
constructor() { }
|
|
7
|
+
/**
|
|
8
|
+
* Exports data to CSV or Excel.
|
|
9
|
+
* @param columns List of column definitions (each having name/key/is_visible)
|
|
10
|
+
* @param data The array of data objects
|
|
11
|
+
* @param fileName Name of the exported file (without extension)
|
|
12
|
+
* @param format 'csv' | 'xlsx'
|
|
13
|
+
*/
|
|
14
|
+
exportData(columns, data, fileName, format = 'xlsx', rowSelectedIndexes = new Set(), styleConfig = {}) {
|
|
15
|
+
const { headerBgColor = '#228B22', headerTextColor = '#FFFFFF', bodyTextColor = '#000000', fontFamily = 'Calibri', fontWeight = 'normal', zoomScale = 120, headerRowHeight = 20, selectedRowBgColor = '#8AC5FF', } = styleConfig;
|
|
16
|
+
const visibleColumns = columns.filter(col => col.is_visible && col.type !== 'image' && col.type !== 'logo');
|
|
17
|
+
const headers = visibleColumns.map(col => col.header || col.headerName || col.name);
|
|
18
|
+
const flattenValue = (value) => {
|
|
19
|
+
if (value == null)
|
|
20
|
+
return '';
|
|
21
|
+
if (Array.isArray(value))
|
|
22
|
+
return value.map(v => (typeof v === 'object' ? flattenValue(v) : v)).join(', ');
|
|
23
|
+
if (typeof value === 'object')
|
|
24
|
+
return Object.entries(value)
|
|
25
|
+
.map(([k, v]) => `${k}: ${flattenValue(v)}`)
|
|
26
|
+
.join(', ');
|
|
27
|
+
return value;
|
|
28
|
+
};
|
|
29
|
+
const exportData = data.map(row => visibleColumns.reduce((acc, col) => {
|
|
30
|
+
const header = col.headerName || col.name || col.header;
|
|
31
|
+
let value = this.getNestedValue(row, col.field);
|
|
32
|
+
switch (col.type) {
|
|
33
|
+
case 'boolean':
|
|
34
|
+
value = value ? 'Yes' : 'No';
|
|
35
|
+
break;
|
|
36
|
+
case 'date':
|
|
37
|
+
if (value) {
|
|
38
|
+
const date = new Date(value);
|
|
39
|
+
if (!isNaN(date.getTime())) {
|
|
40
|
+
value = date.toLocaleDateString('en-US', {
|
|
41
|
+
day: '2-digit',
|
|
42
|
+
month: 'long',
|
|
43
|
+
year: 'numeric',
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
value = flattenValue(value);
|
|
50
|
+
}
|
|
51
|
+
acc[header] = value;
|
|
52
|
+
return acc;
|
|
53
|
+
}, {}));
|
|
54
|
+
const worksheet = XLSX.utils.json_to_sheet(exportData, { header: headers });
|
|
55
|
+
// ✅ Define a reusable border style
|
|
56
|
+
const borderStyle = {
|
|
57
|
+
top: { style: 'thin', color: { rgb: 'CCCCCC' } },
|
|
58
|
+
bottom: { style: 'thin', color: { rgb: 'CCCCCC' } },
|
|
59
|
+
left: { style: 'thin', color: { rgb: 'CCCCCC' } },
|
|
60
|
+
right: { style: 'thin', color: { rgb: 'CCCCCC' } },
|
|
61
|
+
};
|
|
62
|
+
// ✅ Apply header styles
|
|
63
|
+
headers.forEach((header, index) => {
|
|
64
|
+
const cellAddress = XLSX.utils.encode_cell({ r: 0, c: index });
|
|
65
|
+
if (!worksheet[cellAddress])
|
|
66
|
+
return;
|
|
67
|
+
worksheet[cellAddress].s = {
|
|
68
|
+
fill: { fgColor: { rgb: headerBgColor.replace('#', '') } },
|
|
69
|
+
font: {
|
|
70
|
+
name: fontFamily,
|
|
71
|
+
sz: 14,
|
|
72
|
+
color: { rgb: headerTextColor.replace('#', '') },
|
|
73
|
+
bold: fontWeight === 'bold',
|
|
74
|
+
},
|
|
75
|
+
alignment: { horizontal: 'center', vertical: 'center' },
|
|
76
|
+
border: borderStyle, // ✅ Added border here
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
// ✅ Apply body styles + highlight selected rows
|
|
80
|
+
for (let r = 1; r <= exportData.length; r++) {
|
|
81
|
+
const isSelected = rowSelectedIndexes?.has(r - 1);
|
|
82
|
+
const rowBgColor = isSelected ? selectedRowBgColor : '#FFFFFF';
|
|
83
|
+
for (let c = 0; c < headers.length; c++) {
|
|
84
|
+
const col = visibleColumns[c];
|
|
85
|
+
const cellAddress = XLSX.utils.encode_cell({ r, c });
|
|
86
|
+
const cell = worksheet[cellAddress];
|
|
87
|
+
if (!cell)
|
|
88
|
+
continue;
|
|
89
|
+
let horizontalAlign = 'left';
|
|
90
|
+
if (['number', 'boolean', 'date'].includes(col.type))
|
|
91
|
+
horizontalAlign = 'center';
|
|
92
|
+
cell.s = {
|
|
93
|
+
fill: { fgColor: { rgb: rowBgColor.replace('#', '') } },
|
|
94
|
+
font: {
|
|
95
|
+
name: fontFamily,
|
|
96
|
+
sz: 14,
|
|
97
|
+
color: { rgb: bodyTextColor.replace('#', '') },
|
|
98
|
+
bold: false,
|
|
99
|
+
},
|
|
100
|
+
alignment: { horizontal: horizontalAlign, vertical: 'center', wrapText: true },
|
|
101
|
+
border: borderStyle, // ✅ Added border here too
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// ✅ Adjust column widths
|
|
106
|
+
const colWidths = headers.map(header => {
|
|
107
|
+
let maxLength = header.length;
|
|
108
|
+
exportData.forEach(row => {
|
|
109
|
+
const val = row[header];
|
|
110
|
+
if (val != null) {
|
|
111
|
+
const len = val.toString().length;
|
|
112
|
+
if (len > maxLength)
|
|
113
|
+
maxLength = len;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
return { wch: Math.min(maxLength + 2, 64) };
|
|
117
|
+
});
|
|
118
|
+
worksheet['!cols'] = colWidths;
|
|
119
|
+
worksheet['!rows'] = [{ hpt: headerRowHeight }];
|
|
120
|
+
worksheet['!zoom'] = zoomScale;
|
|
121
|
+
const workbook = { Sheets: { Data: worksheet }, SheetNames: ['Data'] };
|
|
122
|
+
if (format === 'csv') {
|
|
123
|
+
const csv = XLSX.utils.sheet_to_csv(worksheet);
|
|
124
|
+
const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
|
|
125
|
+
saveAs(blob, `${fileName}.csv`);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
|
|
129
|
+
const blob = new Blob([excelBuffer], {
|
|
130
|
+
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8',
|
|
131
|
+
});
|
|
132
|
+
saveAs(blob, `${fileName}.xlsx`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
getNestedValue(obj, path) {
|
|
136
|
+
if (!path || typeof obj !== 'object')
|
|
137
|
+
return obj;
|
|
138
|
+
return path.split('.').reduce((acc, key) => (acc && acc[key] !== undefined ? acc[key] : ''), obj);
|
|
139
|
+
}
|
|
140
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
141
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExportService, providedIn: 'root' }); }
|
|
142
|
+
}
|
|
143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExportService, decorators: [{
|
|
144
|
+
type: Injectable,
|
|
145
|
+
args: [{
|
|
146
|
+
providedIn: 'root'
|
|
147
|
+
}]
|
|
148
|
+
}], ctorParameters: function () { return []; } });
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9zZXJ2aWNlcy9leHBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxJQUFJLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7O0FBS3BDLE1BQU0sT0FBTyxhQUFhO0lBRXhCLGdCQUFlLENBQUM7SUFFaEI7Ozs7OztPQU1HO0lBQ0wsVUFBVSxDQUNSLE9BQWMsRUFDZCxJQUFXLEVBQ1gsUUFBZ0IsRUFDaEIsU0FBeUIsTUFBTSxFQUMvQixxQkFBeUMsSUFBSSxHQUFHLEVBQUUsRUFDbEQsY0FTSSxFQUFFO1FBRU4sTUFBTSxFQUNKLGFBQWEsR0FBRyxTQUFTLEVBQ3pCLGVBQWUsR0FBRyxTQUFTLEVBQzNCLGFBQWEsR0FBRyxTQUFTLEVBQ3pCLFVBQVUsR0FBRyxTQUFTLEVBQ3RCLFVBQVUsR0FBRyxRQUFRLEVBQ3JCLFNBQVMsR0FBRyxHQUFHLEVBQ2YsZUFBZSxHQUFHLEVBQUUsRUFDcEIsa0JBQWtCLEdBQUcsU0FBUyxHQUMvQixHQUFHLFdBQVcsQ0FBQztRQUVoQixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUNuQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNLENBQ3JFLENBQUM7UUFFRixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENB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QUFJLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLE1BQU0sQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDTCxNQUFNLFdBQVcsR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDbkYsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxFQUFFLGlGQUFpRjthQUN4RixDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxPQUFPLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFLTyxjQUFjLENBQUMsR0FBUSxFQUFFLElBQVk7UUFDM0MsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEcsQ0FBQzsrR0FwTFksYUFBYTttSEFBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeC1qcy1zdHlsZSc7XHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXhwb3J0U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgLyoqXHJcbiAgICogRXhwb3J0cyBkYXRhIHRvIENTViBvciBFeGNlbC5cclxuICAgKiBAcGFyYW0gY29sdW1ucyBMaXN0IG9mIGNvbHVtbiBkZWZpbml0aW9ucyAoZWFjaCBoYXZpbmcgbmFtZS9rZXkvaXNfdmlzaWJsZSlcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgYXJyYXkgb2YgZGF0YSBvYmplY3RzXHJcbiAgICogQHBhcmFtIGZpbGVOYW1lIE5hbWUgb2YgdGhlIGV4cG9ydGVkIGZpbGUgKHdpdGhvdXQgZXh0ZW5zaW9uKVxyXG4gICAqIEBwYXJhbSBmb3JtYXQgJ2NzdicgfCAneGxzeCdcclxuICAgKi9cclxuZXhwb3J0RGF0YShcclxuICBjb2x1bW5zOiBhbnlbXSxcclxuICBkYXRhOiBhbnlbXSxcclxuICBmaWxlTmFtZTogc3RyaW5nLFxyXG4gIGZvcm1hdDogJ2NzdicgfCAneGxzeCcgPSAneGxzeCcsXHJcbiAgcm93U2VsZWN0ZWRJbmRleGVzOiBTZXQ8bnVtYmVyPiB8IG51bGwgPSBuZXcgU2V0KCksXHJcbiAgc3R5bGVDb25maWc6IHtcclxuICAgIGhlYWRlckJnQ29sb3I/OiBzdHJpbmc7XHJcbiAgICBoZWFkZXJUZXh0Q29sb3I/OiBzdHJpbmc7XHJcbiAgICBib2R5VGV4dENvbG9yPzogc3RyaW5nO1xyXG4gICAgZm9udEZhbWlseT86IHN0cmluZztcclxuICAgIGZvbnRXZWlnaHQ/OiAnbm9ybWFsJyB8ICdib2xkJztcclxuICAgIHpvb21TY2FsZT86IG51bWJlcjtcclxuICAgIGhlYWRlclJvd0hlaWdodD86IG51bWJlcjtcclxuICAgIHNlbGVjdGVkUm93QmdDb2xvcj86IHN0cmluZztcclxuICB9ID0ge31cclxuKSB7XHJcbiAgY29uc3Qge1xyXG4gICAgaGVhZGVyQmdDb2xvciA9ICcjMjI4QjIyJyxcclxuICAgIGhlYWRlclRleHRDb2xvciA9ICcjRkZGRkZGJyxcclxuICAgIGJvZHlUZXh0Q29sb3IgPSAnIzAwMDAwMCcsXHJcbiAgICBmb250RmFtaWx5ID0gJ0NhbGlicmknLFxyXG4gICAgZm9udFdlaWdodCA9ICdub3JtYWwnLFxyXG4gICAgem9vbVNjYWxlID0gMTIwLFxyXG4gICAgaGVhZGVyUm93SGVpZ2h0ID0gMjAsXHJcbiAgICBzZWxlY3RlZFJvd0JnQ29sb3IgPSAnIzhBQzVGRicsXHJcbiAgfSA9IHN0eWxlQ29uZmlnO1xyXG5cclxuICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKFxyXG4gICAgY29sID0+IGNvbC5pc192aXNpYmxlICYmIGNvbC50eXBlICE9PSAnaW1hZ2UnICYmIGNvbC50eXBlICE9PSAnbG9nbydcclxuICApO1xyXG5cclxuICBjb25zdCBoZWFkZXJzID0gdmlzaWJsZUNvbHVtbnMubWFwKGNvbCA9PiBjb2wuaGVhZGVyIHx8IGNvbC5oZWFkZXJOYW1lIHx8IGNvbC5uYW1lKTtcclxuXHJcbiAgY29uc3QgZmxhdHRlblZhbHVlID0gKHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiAnJztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcclxuICAgICAgcmV0dXJuIHZhbHVlLm1hcCh2ID0+ICh0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyBmbGF0dGVuVmFsdWUodikgOiB2KSkuam9pbignLCAnKTtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKVxyXG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWUpXHJcbiAgICAgICAgLm1hcCgoW2ssIHZdKSA9PiBgJHtrfTogJHtmbGF0dGVuVmFsdWUodil9YClcclxuICAgICAgICAuam9pbignLCAnKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9O1xyXG5cclxuICBjb25zdCBleHBvcnREYXRhID0gZGF0YS5tYXAocm93ID0+XHJcbiAgICB2aXNpYmxlQ29sdW1ucy5yZWR1Y2UoKGFjYzogYW55LCBjb2wpID0+IHtcclxuICAgICAgY29uc3QgaGVhZGVyID0gY29sLmhlYWRlck5hbWUgfHwgY29sLm5hbWUgfHwgY29sLmhlYWRlcjtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XHJcblxyXG4gICAgICBzd2l0Y2ggKGNvbC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlID8gJ1llcycgOiAnTm8nO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKCFpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcclxuICAgICAgICAgICAgICB2YWx1ZSA9IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgICAgICAgICAgIGRheTogJzItZGlnaXQnLFxyXG4gICAgICAgICAgICAgICAgbW9udGg6ICdsb25nJyxcclxuICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHZhbHVlID0gZmxhdHRlblZhbHVlKHZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgYWNjW2hlYWRlcl0gPSB2YWx1ZTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9KVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IHdvcmtzaGVldDogWExTWC5Xb3JrU2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoZXhwb3J0RGF0YSwgeyBoZWFkZXI6IGhlYWRlcnMgfSk7XHJcblxyXG4gIC8vIOKchSBEZWZpbmUgYSByZXVzYWJsZSBib3JkZXIgc3R5bGVcclxuICBjb25zdCBib3JkZXJTdHlsZSA9IHtcclxuICAgIHRvcDogeyBzdHlsZTogJ3RoaW4nLCBjb2xvcjogeyByZ2I6ICdDQ0NDQ0MnIH0gfSxcclxuICAgIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nLCBjb2xvcjogeyByZ2I6ICdDQ0NDQ0MnIH0gfSxcclxuICAgIGxlZnQ6IHsgc3R5bGU6ICd0aGluJywgY29sb3I6IHsgcmdiOiAnQ0NDQ0NDJyB9IH0sXHJcbiAgICByaWdodDogeyBzdHlsZTogJ3RoaW4nLCBjb2xvcjogeyByZ2I6ICdDQ0NDQ0MnIH0gfSxcclxuICB9O1xyXG5cclxuICAvLyDinIUgQXBwbHkgaGVhZGVyIHN0eWxlc1xyXG4gIGhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBpbmRleCkgPT4ge1xyXG4gICAgY29uc3QgY2VsbEFkZHJlc3MgPSBYTFNYLnV0aWxzLmVuY29kZV9jZWxsKHsgcjogMCwgYzogaW5kZXggfSk7XHJcbiAgICBpZiAoIXdvcmtzaGVldFtjZWxsQWRkcmVzc10pIHJldHVybjtcclxuXHJcbiAgICB3b3Jrc2hlZXRbY2VsbEFkZHJlc3NdLnMgPSB7XHJcbiAgICAgIGZpbGw6IHsgZmdDb2xvcjogeyByZ2I6IGhlYWRlckJnQ29sb3IucmVwbGFjZSgnIycsICcnKSB9IH0sXHJcbiAgICAgIGZvbnQ6IHtcclxuICAgICAgICBuYW1lOiBmb250RmFtaWx5LFxyXG4gICAgICAgIHN6OiAxNCxcclxuICAgICAgICBjb2xvcjogeyByZ2I6IGhlYWRlclRleHRDb2xvci5yZXBsYWNlKCcjJywgJycpIH0sXHJcbiAgICAgICAgYm9sZDogZm9udFdlaWdodCA9PT0gJ2JvbGQnLFxyXG4gICAgICB9LFxyXG4gICAgICBhbGlnbm1lbnQ6IHsgaG9yaXpvbnRhbDogJ2NlbnRlcicsIHZlcnRpY2FsOiAnY2VudGVyJyB9LFxyXG4gICAgICBib3JkZXI6IGJvcmRlclN0eWxlLCAvLyDinIUgQWRkZWQgYm9yZGVyIGhlcmVcclxuICAgIH07XHJcbiAgfSk7XHJcblxyXG4gIC8vIOKchSBBcHBseSBib2R5IHN0eWxlcyArIGhpZ2hsaWdodCBzZWxlY3RlZCByb3dzXHJcbiAgZm9yIChsZXQgciA9IDE7IHIgPD0gZXhwb3J0RGF0YS5sZW5ndGg7IHIrKykge1xyXG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHJvd1NlbGVjdGVkSW5kZXhlcz8uaGFzKHIgLSAxKTtcclxuICAgIGNvbnN0IHJvd0JnQ29sb3IgPSBpc1NlbGVjdGVkID8gc2VsZWN0ZWRSb3dCZ0NvbG9yIDogJyNGRkZGRkYnO1xyXG5cclxuICAgIGZvciAobGV0IGMgPSAwOyBjIDwgaGVhZGVycy5sZW5ndGg7IGMrKykge1xyXG4gICAgICBjb25zdCBjb2wgPSB2aXNpYmxlQ29sdW1uc1tjXTtcclxuICAgICAgY29uc3QgY2VsbEFkZHJlc3MgPSBYTFNYLnV0aWxzLmVuY29kZV9jZWxsKHsgciwgYyB9KTtcclxuICAgICAgY29uc3QgY2VsbCA9IHdvcmtzaGVldFtjZWxsQWRkcmVzc107XHJcbiAgICAgIGlmICghY2VsbCkgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgaG9yaXpvbnRhbEFsaWduID0gJ2xlZnQnO1xyXG4gICAgICBpZiAoWydudW1iZXInLCAnYm9vbGVhbicsICdkYXRlJ10uaW5jbHVkZXMoY29sLnR5cGUpKSBob3Jpem9udGFsQWxpZ24gPSAnY2VudGVyJztcclxuXHJcbiAgICAgIGNlbGwucyA9IHtcclxuICAgICAgICBmaWxsOiB7IGZnQ29sb3I6IHsgcmdiOiByb3dCZ0NvbG9yLnJlcGxhY2UoJyMnLCAnJykgfSB9LFxyXG4gICAgICAgIGZvbnQ6IHtcclxuICAgICAgICAgIG5hbWU6IGZvbnRGYW1pbHksXHJcbiAgICAgICAgICBzejogMTQsXHJcbiAgICAgICAgICBjb2xvcjogeyByZ2I6IGJvZHlUZXh0Q29sb3IucmVwbGFjZSgnIycsICcnKSB9LFxyXG4gICAgICAgICAgYm9sZDogZmFsc2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBhbGlnbm1lbnQ6IHsgaG9yaXpvbnRhbDogaG9yaXpvbnRhbEFsaWduLCB2ZXJ0aWNhbDogJ2NlbnRlcicsIHdyYXBUZXh0OiB0cnVlIH0sXHJcbiAgICAgICAgYm9yZGVyOiBib3JkZXJTdHlsZSwgLy8g4pyFIEFkZGVkIGJvcmRlciBoZXJlIHRvb1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g4pyFIEFkanVzdCBjb2x1bW4gd2lkdGhzXHJcbiAgY29uc3QgY29sV2lkdGhzID0gaGVhZGVycy5tYXAoaGVhZGVyID0+IHtcclxuICAgIGxldCBtYXhMZW5ndGggPSBoZWFkZXIubGVuZ3RoO1xyXG4gICAgZXhwb3J0RGF0YS5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbCA9IHJvd1toZWFkZXJdO1xyXG4gICAgICBpZiAodmFsICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCBsZW4gPSB2YWwudG9TdHJpbmcoKS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGxlbiA+IG1heExlbmd0aCkgbWF4TGVuZ3RoID0gbGVuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7IHdjaDogTWF0aC5taW4obWF4TGVuZ3RoICsgMiwgNjQpIH07XHJcbiAgfSk7XHJcbiAgd29ya3NoZWV0WychY29scyddID0gY29sV2lkdGhzO1xyXG5cclxuICB3b3Jrc2hlZXRbJyFyb3dzJ10gPSBbeyBocHQ6IGhlYWRlclJvd0hlaWdodCB9XTtcclxuICB3b3Jrc2hlZXRbJyF6b29tJ10gPSB6b29tU2NhbGU7XHJcblxyXG4gIGNvbnN0IHdvcmtib29rOiBYTFNYLldvcmtCb29rID0geyBTaGVldHM6IHsgRGF0YTogd29ya3NoZWV0IH0sIFNoZWV0TmFtZXM6IFsnRGF0YSddIH07XHJcblxyXG4gIGlmIChmb3JtYXQgPT09ICdjc3YnKSB7XHJcbiAgICBjb25zdCBjc3YgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2Nzdih3b3Jrc2hlZXQpO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjc3ZdLCB7IHR5cGU6ICd0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04OycgfSk7XHJcbiAgICBzYXZlQXMoYmxvYiwgYCR7ZmlsZU5hbWV9LmNzdmApO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCBleGNlbEJ1ZmZlcjogYW55ID0gWExTWC53cml0ZSh3b3JrYm9vaywgeyBib29rVHlwZTogJ3hsc3gnLCB0eXBlOiAnYXJyYXknIH0pO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtleGNlbEJ1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLTgnLFxyXG4gICAgfSk7XHJcbiAgICBzYXZlQXMoYmxvYiwgYCR7ZmlsZU5hbWV9Lnhsc3hgKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5cclxuXHJcbnByaXZhdGUgZ2V0TmVzdGVkVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZyk6IGFueSB7XHJcbiAgaWYgKCFwYXRoIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSByZXR1cm4gb2JqO1xyXG4gIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChhY2MsIGtleSkgPT4gKGFjYyAmJiBhY2Nba2V5XSAhPT0gdW5kZWZpbmVkID8gYWNjW2tleV0gOiAnJyksIG9iaik7XHJcbn1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SplitColumnsService {
|
|
4
|
+
prepareColumns(columns, containerWidth) {
|
|
5
|
+
const left = [];
|
|
6
|
+
const center = [];
|
|
7
|
+
const right = [];
|
|
8
|
+
for (const col of columns) {
|
|
9
|
+
if (col.children?.length) {
|
|
10
|
+
const leftChildren = [];
|
|
11
|
+
const centerChildren = [];
|
|
12
|
+
const rightChildren = [];
|
|
13
|
+
for (const child of col.children) {
|
|
14
|
+
if (child.is_visible === false)
|
|
15
|
+
continue;
|
|
16
|
+
const pinned = child.pinned ?? col.pinned ?? null;
|
|
17
|
+
const childWithPinned = { ...child, pinned };
|
|
18
|
+
if (pinned === 'left')
|
|
19
|
+
leftChildren.push(childWithPinned);
|
|
20
|
+
else if (pinned === 'right')
|
|
21
|
+
rightChildren.push(childWithPinned);
|
|
22
|
+
else
|
|
23
|
+
centerChildren.push(childWithPinned);
|
|
24
|
+
}
|
|
25
|
+
if (leftChildren.length) {
|
|
26
|
+
left.push({ header: col.header, children: leftChildren, id: col?.id || col?._id });
|
|
27
|
+
}
|
|
28
|
+
if (centerChildren.length) {
|
|
29
|
+
center.push({
|
|
30
|
+
header: col.header,
|
|
31
|
+
children: centerChildren,
|
|
32
|
+
id: col.id || col._id,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (rightChildren.length) {
|
|
36
|
+
right.push({
|
|
37
|
+
header: col.header,
|
|
38
|
+
children: rightChildren,
|
|
39
|
+
id: col.id || col._id,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else if (col.is_visible !== false) {
|
|
44
|
+
const pinned = col.pinned ?? null;
|
|
45
|
+
if (pinned === 'left')
|
|
46
|
+
left.push(col);
|
|
47
|
+
else if (pinned === 'right')
|
|
48
|
+
right.push(col);
|
|
49
|
+
else
|
|
50
|
+
center.push(col);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return { left, center, right };
|
|
54
|
+
}
|
|
55
|
+
setColumnsQuery(columns) {
|
|
56
|
+
for (const col of columns) {
|
|
57
|
+
// if (col.children?.length) {
|
|
58
|
+
// for (const child of col.children) {
|
|
59
|
+
// if (!child?.query?.firt_value && !child?.query?._ids?.length) {
|
|
60
|
+
// child['query'] = {
|
|
61
|
+
// first_condition: 'contain',
|
|
62
|
+
// first_value: null,
|
|
63
|
+
// condition: 'none',
|
|
64
|
+
// second_condition: 'contain',
|
|
65
|
+
// second_value: null,
|
|
66
|
+
// _ids: [],
|
|
67
|
+
// };
|
|
68
|
+
// }
|
|
69
|
+
// }
|
|
70
|
+
// }
|
|
71
|
+
// if (!col?.query?.firt_value && !col?.query?._ids?.length) {
|
|
72
|
+
// col.query = {
|
|
73
|
+
// first_condition: 'contain',
|
|
74
|
+
// first_value: null,
|
|
75
|
+
// condition: 'none',
|
|
76
|
+
// second_condition: 'contain',
|
|
77
|
+
// second_value: null,
|
|
78
|
+
// _ids: [],
|
|
79
|
+
// };
|
|
80
|
+
// }
|
|
81
|
+
}
|
|
82
|
+
console.log('Updated Columns: ', columns);
|
|
83
|
+
return columns;
|
|
84
|
+
}
|
|
85
|
+
assignDefaultWidths(columns, containerWidth) {
|
|
86
|
+
const visibleLeafCols = this.getVisibleLeafColumns(columns);
|
|
87
|
+
if (!visibleLeafCols.length)
|
|
88
|
+
return columns;
|
|
89
|
+
let defaultWidth = Math.floor(containerWidth / visibleLeafCols.length);
|
|
90
|
+
if (defaultWidth < 150)
|
|
91
|
+
defaultWidth = 150;
|
|
92
|
+
const cloneColumns = (cols) => cols.map((col) => {
|
|
93
|
+
if (col.children?.length) {
|
|
94
|
+
const newChildren = col.children.map((child) => {
|
|
95
|
+
// If visible → dynamic default width
|
|
96
|
+
// If invisible → fixed 150px
|
|
97
|
+
if (!child.width) {
|
|
98
|
+
if (child.is_visible === false) {
|
|
99
|
+
return { ...child, width: 150 };
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return { ...child, width: defaultWidth };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return { ...child };
|
|
106
|
+
});
|
|
107
|
+
return { ...col, children: newChildren };
|
|
108
|
+
}
|
|
109
|
+
if (!col.width) {
|
|
110
|
+
if (col.is_visible === false) {
|
|
111
|
+
return { ...col, width: 150 };
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return { ...col, width: defaultWidth };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return { ...col };
|
|
118
|
+
});
|
|
119
|
+
return cloneColumns(columns);
|
|
120
|
+
}
|
|
121
|
+
getVisibleLeafColumns(columns) {
|
|
122
|
+
const result = [];
|
|
123
|
+
for (const col of columns) {
|
|
124
|
+
if (col.children?.length) {
|
|
125
|
+
const visibleChildren = col.children.filter((c) => c.is_visible !== false);
|
|
126
|
+
result.push(...visibleChildren);
|
|
127
|
+
}
|
|
128
|
+
else if (col.is_visible !== false) {
|
|
129
|
+
result.push(col);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SplitColumnsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
135
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SplitColumnsService, providedIn: 'root' }); }
|
|
136
|
+
}
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SplitColumnsService, decorators: [{
|
|
138
|
+
type: Injectable,
|
|
139
|
+
args: [{
|
|
140
|
+
providedIn: 'root',
|
|
141
|
+
}]
|
|
142
|
+
}] });
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtY29sdW1ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvc2VydmljZXMvc3BsaXQtY29sdW1ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsY0FBYyxDQUFDLE9BQWMsRUFBRSxjQUFzQjtRQUNuRCxNQUFNLElBQUksR0FBVSxFQUFFLENBQUM7UUFDdkIsTUFBTSxNQUFNLEdBQVUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxHQUFVLEVBQUUsQ0FBQztRQUV4QixLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRTtZQUN6QixJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFO2dCQUN4QixNQUFNLFlBQVksR0FBVSxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sY0FBYyxHQUFVLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxhQUFhLEdBQVUsRUFBRSxDQUFDO2dCQUVoQyxLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUU7b0JBQ2hDLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxLQUFLO3dCQUFFLFNBQVM7b0JBRXpDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7b0JBQ2xELE1BQU0sZUFBZSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBRTdDLElBQUksTUFBTSxLQUFLLE1BQU07d0JBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzt5QkFDckQsSUFBSSxNQUFNLEtBQUssT0FBTzt3QkFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDOzt3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LFFBQVEsQ0FBQyxNQUFNLENBQ3pDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FDbkMsQ0FBQztnQkFDRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUM7YUFDakM7aUJBQU0sSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEtBQUssRUFBRTtnQkFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNsQjtTQUNGO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzsrR0E3SVUsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcGxpdENvbHVtbnNTZXJ2aWNlIHtcclxuICBwcmVwYXJlQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSwgY29udGFpbmVyV2lkdGg6IG51bWJlcik6IGFueSB7XHJcbiAgICBjb25zdCBsZWZ0OiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgY2VudGVyOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgcmlnaHQ6IGFueVtdID0gW107XHJcblxyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBsZWZ0Q2hpbGRyZW46IGFueVtdID0gW107XHJcbiAgICAgICAgY29uc3QgY2VudGVyQ2hpbGRyZW46IGFueVtdID0gW107XHJcbiAgICAgICAgY29uc3QgcmlnaHRDaGlsZHJlbjogYW55W10gPSBbXTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjb2wuY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChjaGlsZC5pc192aXNpYmxlID09PSBmYWxzZSkgY29udGludWU7XHJcblxyXG4gICAgICAgICAgY29uc3QgcGlubmVkID0gY2hpbGQucGlubmVkID8/IGNvbC5waW5uZWQgPz8gbnVsbDtcclxuICAgICAgICAgIGNvbnN0IGNoaWxkV2l0aFBpbm5lZCA9IHsgLi4uY2hpbGQsIHBpbm5lZCB9O1xyXG5cclxuICAgICAgICAgIGlmIChwaW5uZWQgPT09ICdsZWZ0JykgbGVmdENoaWxkcmVuLnB1c2goY2hpbGRXaXRoUGlubmVkKTtcclxuICAgICAgICAgIGVsc2UgaWYgKHBpbm5lZCA9PT0gJ3JpZ2h0JykgcmlnaHRDaGlsZHJlbi5wdXNoKGNoaWxkV2l0aFBpbm5lZCk7XHJcbiAgICAgICAgICBlbHNlIGNlbnRlckNoaWxkcmVuLnB1c2goY2hpbGRXaXRoUGlubmVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChsZWZ0Q2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsZWZ0LnB1c2goeyBoZWFkZXI6IGNvbC5oZWFkZXIsIGNoaWxkcmVuOiBsZWZ0Q2hpbGRyZW4sIGlkOiBjb2w/LmlkIHx8IGNvbD8uX2lkIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2VudGVyQ2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjZW50ZXIucHVzaCh7XHJcbiAgICAgICAgICAgIGhlYWRlcjogY29sLmhlYWRlcixcclxuICAgICAgICAgICAgY2hpbGRyZW46IGNlbnRlckNoaWxkcmVuLFxyXG4gICAgICAgICAgICBpZDogY29sLmlkIHx8IGNvbC5faWQsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJpZ2h0Q2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByaWdodC5wdXNoKHtcclxuICAgICAgICAgICAgaGVhZGVyOiBjb2wuaGVhZGVyLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogcmlnaHRDaGlsZHJlbixcclxuICAgICAgICAgICAgaWQ6IGNvbC5pZCB8fCBjb2wuX2lkLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGNvbC5pc192aXNpYmxlICE9PSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IHBpbm5lZCA9IGNvbC5waW5uZWQgPz8gbnVsbDtcclxuICAgICAgICBpZiAocGlubmVkID09PSAnbGVmdCcpIGxlZnQucHVzaChjb2wpO1xyXG4gICAgICAgIGVsc2UgaWYgKHBpbm5lZCA9PT0gJ3JpZ2h0JykgcmlnaHQucHVzaChjb2wpO1xyXG4gICAgICAgIGVsc2UgY2VudGVyLnB1c2goY29sKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IGxlZnQsIGNlbnRlciwgcmlnaHQgfTtcclxuICB9XHJcblxyXG4gIHNldENvbHVtbnNRdWVyeShjb2x1bW5zOiBhbnlbXSkge1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xyXG4gICAgICAvLyBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgLy8gICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbikge1xyXG4gICAgICAvLyAgICAgaWYgKCFjaGlsZD8ucXVlcnk/LmZpcnRfdmFsdWUgJiYgIWNoaWxkPy5xdWVyeT8uX2lkcz8ubGVuZ3RoKSB7XHJcbiAgICAgIC8vICAgICAgIGNoaWxkWydxdWVyeSddID0ge1xyXG4gICAgICAvLyAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAvLyAgICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAvLyAgICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAvLyAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgLy8gICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGwsXHJcbiAgICAgIC8vICAgICAgICAgX2lkczogW10sXHJcbiAgICAgIC8vICAgICAgIH07XHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGlmICghY29sPy5xdWVyeT8uZmlydF92YWx1ZSAmJiAhY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoKSB7XHJcbiAgICAgIC8vICAgY29sLnF1ZXJ5ID0ge1xyXG4gICAgICAvLyAgICAgZmlyc3RfY29uZGl0aW9uOiAnY29udGFpbicsXHJcbiAgICAgIC8vICAgICBmaXJzdF92YWx1ZTogbnVsbCxcclxuICAgICAgLy8gICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAvLyAgICAgc2Vjb25kX2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAvLyAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxyXG4gICAgICAvLyAgICAgX2lkczogW10sXHJcbiAgICAgIC8vICAgfTtcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnNvbGUubG9nKCdVcGRhdGVkIENvbHVtbnM6ICcsIGNvbHVtbnMpO1xyXG5cclxuICAgIHJldHVybiBjb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgIGFzc2lnbkRlZmF1bHRXaWR0aHMoY29sdW1uczogYW55W10sIGNvbnRhaW5lcldpZHRoOiBudW1iZXIpOiBhbnlbXSB7XHJcbiAgY29uc3QgdmlzaWJsZUxlYWZDb2xzID0gdGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1ucyk7XHJcblxyXG4gIGlmICghdmlzaWJsZUxlYWZDb2xzLmxlbmd0aCkgcmV0dXJuIGNvbHVtbnM7XHJcblxyXG4gIGxldCBkZWZhdWx0V2lkdGggPSBNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gdmlzaWJsZUxlYWZDb2xzLmxlbmd0aCk7XHJcbiAgaWYgKGRlZmF1bHRXaWR0aCA8IDE1MCkgZGVmYXVsdFdpZHRoID0gMTUwO1xyXG5cclxuICBjb25zdCBjbG9uZUNvbHVtbnMgPSAoY29sczogYW55W10pOiBhbnlbXSA9PlxyXG4gICAgY29scy5tYXAoKGNvbCkgPT4ge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBuZXdDaGlsZHJlbiA9IGNvbC5jaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vIElmIHZpc2libGUg4oaSIGR5bmFtaWMgZGVmYXVsdCB3aWR0aFxyXG4gICAgICAgICAgLy8gSWYgaW52aXNpYmxlIOKGkiBmaXhlZCAxNTBweFxyXG4gICAgICAgICAgaWYgKCFjaGlsZC53aWR0aCkge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQuaXNfdmlzaWJsZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICByZXR1cm4geyAuLi5jaGlsZCwgd2lkdGg6IDE1MCB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLmNoaWxkLCB3aWR0aDogZGVmYXVsdFdpZHRoIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB7IC4uLmNoaWxkIH07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7IC4uLmNvbCwgY2hpbGRyZW46IG5ld0NoaWxkcmVuIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghY29sLndpZHRoKSB7XHJcbiAgICAgICAgaWYgKGNvbC5pc192aXNpYmxlID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgcmV0dXJuIHsgLi4uY29sLCB3aWR0aDogMTUwIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLmNvbCwgd2lkdGg6IGRlZmF1bHRXaWR0aCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHsgLi4uY29sIH07XHJcbiAgICB9KTtcclxuXHJcbiAgcmV0dXJuIGNsb25lQ29sdW1ucyhjb2x1bW5zKTtcclxufVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBnZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uczogYW55W10pOiBhbnlbXSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCB2aXNpYmxlQ2hpbGRyZW4gPSBjb2wuY2hpbGRyZW4uZmlsdGVyKFxyXG4gICAgICAgICAgKGM6IGFueSkgPT4gYy5pc192aXNpYmxlICE9PSBmYWxzZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goLi4udmlzaWJsZUNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChjb2wuaXNfdmlzaWJsZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICByZXN1bHQucHVzaChjb2wpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXMtZGF0YS1ncmlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9tcy1kYXRhLWdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of data-grid
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/data-grid.module';
|
|
5
|
+
export * from './lib/data-grid/data-grid.component';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBkYXRhLWdyaWRcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRhLWdyaWQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQnO1xyXG4iXX0=
|