@esfaenza/es-table 15.2.9 → 15.2.11
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/esm2020/lib/components/es-table/es_table.component.loc.mjs +3 -1
- package/esm2020/lib/components/es-table/es_table.component.mjs +1 -1
- package/esm2020/lib/core/handlers/ExportHandler.mjs +5 -111
- package/fesm2015/esfaenza-es-table.mjs +6 -112
- package/fesm2015/esfaenza-es-table.mjs.map +1 -1
- package/fesm2020/esfaenza-es-table.mjs +6 -110
- package/fesm2020/esfaenza-es-table.mjs.map +1 -1
- package/lib/components/es-table/es_table.component.d.ts +1 -5
- package/lib/core/handlers/ExportHandler.d.ts +1 -15
- package/package.json +3 -4
|
@@ -24,117 +24,11 @@ export class ExportHandler {
|
|
|
24
24
|
this.msgExts.simpleWarning(this.est.lc.loc("Cannot export an empty dataset"));
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
|
-
this.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
else if (format == "XLSX") {
|
|
32
|
-
if (this.ExcelJS != null) {
|
|
33
|
-
this.exportExcel();
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
try {
|
|
37
|
-
this.ExcelJS = await import("exceljs");
|
|
38
|
-
this.exportExcel();
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
throw "Impossibile caricare la libreria per l'esportazione in Excel";
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
else
|
|
45
|
-
throw "Formato di esportazione non riconosciuto";
|
|
27
|
+
let drcd = this.est.DynamicRowColumnsDefinition;
|
|
28
|
+
let columnsFilter = this.est.ExportOnlyVisibleColumns ? this.est.ColumnsList.filter(t => t.visible).map(t => t.id) : null;
|
|
29
|
+
let csvHeadersOverride = drcd && drcd.length > 0 ? drcd.map(t => { return { label: t.Description, key: t.PropertyName, propKey: t.PropertyName, order: t.ColumnOrder, type: 'string' }; }) : null;
|
|
30
|
+
this.expExts.export(data, format, this.est.ExportFileName, columnsFilter, csvHeadersOverride);
|
|
46
31
|
}, format);
|
|
47
32
|
}
|
|
48
|
-
/** Effettua l'esportazione in file CSV, va a sostituire quel coso inutile di @ctrl/ngx-csv */
|
|
49
|
-
exportCSV() {
|
|
50
|
-
var csvData = this.convertToCSV();
|
|
51
|
-
var blob = new Blob([csvData], { type: 'text/csv' });
|
|
52
|
-
var objectUrl = window.URL.createObjectURL(blob);
|
|
53
|
-
let fn = this.est.ExportFileName;
|
|
54
|
-
this.utiExts.fileDownload(objectUrl, fn.endsWith('.xlsx') ? fn.replace('.xlsx', '.csv') : fn.endsWith('.csv') ? fn : fn + ".csv");
|
|
55
|
-
}
|
|
56
|
-
/** Generazione specifica del CSV */
|
|
57
|
-
convertToCSV() {
|
|
58
|
-
let csv = '', row = '', sep = ';';
|
|
59
|
-
for (let i = 0; i < this.est.headers.length; i++) {
|
|
60
|
-
let h = this.est.headers[i];
|
|
61
|
-
row += `${row != '' ? sep : ''}"${h.label}"`;
|
|
62
|
-
}
|
|
63
|
-
csv += row + '\r\n';
|
|
64
|
-
for (let i = 0; i < this.est.data.length; i++) {
|
|
65
|
-
row = '';
|
|
66
|
-
let item = this.est.data[i];
|
|
67
|
-
for (let j = 0; j < this.est.headers.length; j++) {
|
|
68
|
-
let val = item[this.est.headers[j].key];
|
|
69
|
-
row += `${row != '' ? sep : ''}"${val}"`;
|
|
70
|
-
}
|
|
71
|
-
csv += row + '\r\n';
|
|
72
|
-
}
|
|
73
|
-
return csv;
|
|
74
|
-
}
|
|
75
|
-
/** Effettua l'esportazione del file Excel basandosi sul modulo **ExcelJS**, sugli header **this.est.headers** e sui dati **this.est.data** */
|
|
76
|
-
async exportExcel() {
|
|
77
|
-
let iFix = 1;
|
|
78
|
-
let workbook = new this.ExcelJS.Workbook();
|
|
79
|
-
workbook.creator = "Ema's big Es-Table";
|
|
80
|
-
workbook.created = new Date();
|
|
81
|
-
let sheet = workbook.addWorksheet('Data');
|
|
82
|
-
let header = sheet.getRow(1);
|
|
83
|
-
header.font = { bold: true };
|
|
84
|
-
this.est.headers = this.est.headers.sort((a, b) => a.order - b.order);
|
|
85
|
-
for (let i = 0; i < this.est.headers.length; i++) {
|
|
86
|
-
let h = this.est.headers[i];
|
|
87
|
-
header.getCell(i + iFix).value = h.label;
|
|
88
|
-
}
|
|
89
|
-
for (let i = 0; i < this.est.data.length; i++) {
|
|
90
|
-
let row = sheet.getRow(i + iFix + 1);
|
|
91
|
-
let item = this.est.data[i];
|
|
92
|
-
for (let i = 0; i < this.est.headers.length; i++) {
|
|
93
|
-
let h = this.est.headers[i];
|
|
94
|
-
let cell = row.getCell(i + 1);
|
|
95
|
-
let val = item[h.key];
|
|
96
|
-
if (!val) {
|
|
97
|
-
cell.value = "";
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
switch (h.type) {
|
|
101
|
-
case 'date':
|
|
102
|
-
// ExcelJS va di default in UTC quindi rischierebbe di tirare giù 2 ore ad ogni esportazione
|
|
103
|
-
// Bisogna aggiungere l'utc offset alla data attuale
|
|
104
|
-
let date = this.dateExts.getDateConvertion(val);
|
|
105
|
-
if (date) {
|
|
106
|
-
let correctedDate = date.add(date.utcOffset(), 'minute');
|
|
107
|
-
cell.value = correctedDate.toDate();
|
|
108
|
-
cell.numFmt = val.length > 10 ? 'dd/mm/yyyy h:m:s' : '';
|
|
109
|
-
}
|
|
110
|
-
break;
|
|
111
|
-
case 'number':
|
|
112
|
-
let converted = parseFloat(val.replace(',', '.'));
|
|
113
|
-
cell.value = isNaN(converted) ? "" : converted;
|
|
114
|
-
break;
|
|
115
|
-
default:
|
|
116
|
-
cell.value = val;
|
|
117
|
-
break;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
let buffer = await workbook.xlsx.writeBuffer();
|
|
122
|
-
let blob = new Blob([buffer], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;" });
|
|
123
|
-
let objectUrl = window.URL.createObjectURL(blob);
|
|
124
|
-
let fn = this.est.ExportFileName;
|
|
125
|
-
this.utiExts.fileDownload(objectUrl, fn.endsWith('.csv') ? fn.replace('.csv', '.xlsx') : fn.endsWith('.xlsx') ? fn : fn + ".xlsx");
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Metodo che effettivamente genera gli header e i dati per l'esportazione con **ngx-csv**
|
|
129
|
-
*
|
|
130
|
-
* @param {any[]} items Oggetti da esportare
|
|
131
|
-
*/
|
|
132
|
-
setupExport(items) {
|
|
133
|
-
let drcd = this.est.DynamicRowColumnsDefinition;
|
|
134
|
-
this.est.headers = drcd && drcd.length > 0 ?
|
|
135
|
-
this.expExts.setupForGenericExport(items, drcd.map(t => { return { label: t.Description, key: t.PropertyName, propKey: t.PropertyName, order: t.ColumnOrder, type: 'string' }; })) :
|
|
136
|
-
this.expExts.setupForExport(items, this.est.ExportOnlyVisibleColumns ? this.est.ColumnsList.filter(t => t.visible).map(t => t.id) : null);
|
|
137
|
-
this.est.data = items;
|
|
138
|
-
}
|
|
139
33
|
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0SGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29yZS9oYW5kbGVycy9FeHBvcnRIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLHVEQUF1RDtBQUN2RCxNQUFNLE9BQU8sYUFBYTtJQUt0Qix5QkFBeUI7SUFDekIsWUFBb0IsR0FBcUIsRUFBVSxPQUFzQixFQUFVLE9BQXVCLEVBQVUsT0FBdUIsRUFBVSxRQUFxQjtRQUF0SixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtJQUFJLENBQUM7SUFFL0s7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxNQUFlO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWM7WUFDeEIsT0FBTzs7WUFHUCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBVyxFQUFFLFNBQWtCLEtBQUssRUFBRSxFQUFFO2dCQUNuRSxJQUFJLE1BQU07b0JBQ04sT0FBTztnQkFFWCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO29CQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDO29CQUM5RSxPQUFPO2lCQUNWO2dCQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtvQkFDakIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2lCQUNwQjtxQkFDSSxJQUFJLE1BQU0sSUFBSSxNQUFN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aEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEwsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWJyZXJpZVxyXG5pbXBvcnQgeyBDc3ZIZWFkZXJzLCBEYXRlU2VydmljZSwgRXhwb3J0U2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG4vLyBDb21wb25lbnRpXHJcbmltcG9ydCB7IEVzVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9lcy10YWJsZS9lc190YWJsZS5jb21wb25lbnRcIlxyXG5cclxuLyoqXHJcbiAqIERpY2hpYXJhemlvbmUgZGVsbGEgdmFyaWFiaWxlIGdsb2JhbGUgZGF5anMuIEwnb25lcmUgZGkgXCJjcmVhcmxhXCIgw6ggYWZmaWRhdG8gYWxsJ2FwcGxpY2F6aW9uZSBjaGUgdXRpbGl6emEgcXVlc3RhIGxpYnJlcmlhLCBcclxuICogY2hlIGRvdnLDoCBpbXBvcnRhcmUgbG8gc2NyaXB0IGdsb2JhbGUgZGkgZGF5anMgbmVsbGEgQ0xJXHJcbiAqL1xyXG4gZGVjbGFyZSB2YXIgZGF5anM6IGFueTtcclxuXHJcbi8qKiBDbGFzc2UgY29udGVuZW50ZSBsYSBnZXN0aW9uZSBkZWxsZSBpbXBvcnRhemlvbmkgKi9cclxuZXhwb3J0IGNsYXNzIEV4cG9ydEhhbmRsZXIge1xyXG5cclxuICAgIC8qKiBDYWNoZSBkZWwgbW9kdWxvIHBlciBsJ2VzcG9ydGF6aW9uZSBFeGNlbCAqL1xyXG4gICAgcHJpdmF0ZSBFeGNlbEpTOiBhbnk7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlc3Q6IEVzVGFibGVDb21wb25lbnQsIHByaXZhdGUgZXhwRXh0czogRXhwb3J0U2VydmljZSwgcHJpdmF0ZSBtc2dFeHRzOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSB1dGlFeHRzOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBkYXRlRXh0czogRGF0ZVNlcnZpY2UpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgbCdlc3BvcnRhemlvbmUgZGVpIGRhdGlcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IEZvcm1hdG8gZGkgZXNwb3J0YXppb25lLiBMZXR0byBzb2xvIGluIG1vZGFsaXTDoCBSZXBvcnQgZGVsbGEgdGFiZWxsYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJ5RXhwb3J0KGZvcm1hdD86IHN0cmluZykge1xyXG4gICAgICAgIGlmICghdGhpcy5lc3QuRXhwb3J0RnVuY3Rpb24pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmVzdC5FeHBvcnRGdW5jdGlvbihhc3luYyAoZGF0YTogYW55W10sIGNhbmNlbDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nKHRoaXMuZXN0LmxjLmxvYyhcIkNhbm5vdCBleHBvcnQgYW4gZW1wdHkgZGF0YXNldFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBFeHBvcnQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ID09IFwiQ1NWXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cG9ydENTVigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09IFwiWExTWFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuRXhjZWxKUyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0RXhjZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FeGNlbEpTID0gYXdhaXQgaW1wb3J0KFwiZXhjZWxqc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBvcnRFeGNlbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFwiSW1wb3NzaWJpbGUgY2FyaWNhcmUgbGEgbGlicmVyaWEgcGVyIGwnZXNwb3J0YXppb25lIGluIEV4Y2VsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFwiRm9ybWF0byBkaSBlc3BvcnRhemlvbmUgbm9uIHJpY29ub3NjaXV0b1wiO1xyXG4gICAgICAgICAgICB9LCBmb3JtYXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBFZmZldHR1YSBsJ2VzcG9ydGF6aW9uZSBpbiBmaWxlIENTViwgdmEgYSBzb3N0aXR1aXJlIHF1ZWwgY29zbyBpbnV0aWxlIGRpIEBjdHJsL25neC1jc3YgKi9cclxuICAgIHByaXZhdGUgZXhwb3J0Q1NWKCkge1xyXG4gICAgICAgIHZhciBjc3ZEYXRhID0gdGhpcy5jb252ZXJ0VG9DU1YoKTtcclxuICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtjc3ZEYXRhXSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xyXG4gICAgICAgIHZhciBvYmplY3RVcmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICBsZXQgZm4gPSB0aGlzLmVzdC5FeHBvcnRGaWxlTmFtZTtcclxuICAgICAgICB0aGlzLnV0aUV4dHMuZmlsZURvd25sb2FkKG9iamVjdFVybCwgZm4uZW5kc1dpdGgoJy54bHN4JykgPyBmbi5yZXBsYWNlKCcueGxzeCcsICcuY3N2JykgOiBmbi5lbmRzV2l0aCgnLmNzdicpID8gZm4gOiBmbiArIFwiLmNzdlwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogR2VuZXJhemlvbmUgc3BlY2lmaWNhIGRlbCBDU1YgKi9cclxuICAgIHByaXZhdGUgY29udmVydFRvQ1NWKCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGNzdiA9ICcnLCByb3cgPSAnJywgc2VwID0gJzsnO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGggPSB0aGlzLmVzdC5oZWFkZXJzW2ldO1xyXG4gICAgICAgICAgICByb3cgKz0gYCR7cm93ICE9ICcnID8gc2VwIDogJyd9XCIke2gubGFiZWx9XCJgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjc3YgKz0gcm93ICsgJ1xcclxcbic7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lc3QuZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByb3cgPSAnJztcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLmVzdC5kYXRhW2ldO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSBpdGVtW3RoaXMuZXN0LmhlYWRlcnNbal0ua2V5XTtcclxuICAgICAgICAgICAgICAgIHJvdyArPSBgJHtyb3cgIT0gJycgPyBzZXAgOiAnJ31cIiR7dmFsfVwiYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjc3YgKz0gcm93ICsgJ1xcclxcbic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjc3Y7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEVmZmV0dHVhIGwnZXNwb3J0YXppb25lIGRlbCBmaWxlIEV4Y2VsIGJhc2FuZG9zaSBzdWwgbW9kdWxvICoqRXhjZWxKUyoqLCBzdWdsaSBoZWFkZXIgKip0aGlzLmVzdC5oZWFkZXJzKiogZSBzdWkgZGF0aSAqKnRoaXMuZXN0LmRhdGEqKiAqL1xyXG4gICAgcHJpdmF0ZSBhc3luYyBleHBvcnRFeGNlbCgpIHtcclxuICAgICAgICBsZXQgaUZpeCA9IDE7XHJcbiAgICAgICAgbGV0IHdvcmtib29rID0gbmV3IHRoaXMuRXhjZWxKUy5Xb3JrYm9vaygpO1xyXG4gICAgICAgIHdvcmtib29rLmNyZWF0b3IgPSBcIkVtYSdzIGJpZyBFcy1UYWJsZVwiO1xyXG4gICAgICAgIHdvcmtib29rLmNyZWF0ZWQgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICBsZXQgc2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoJ0RhdGEnKTtcclxuICAgICAgICBsZXQgaGVhZGVyID0gc2hlZXQuZ2V0Um93KDEpO1xyXG4gICAgICAgIGhlYWRlci5mb250ID0geyBib2xkOiB0cnVlIH07XHJcbiAgICAgICAgdGhpcy5lc3QuaGVhZGVycyA9IHRoaXMuZXN0LmhlYWRlcnMuc29ydCgoYTogQ3N2SGVhZGVycywgYjogQ3N2SGVhZGVycykgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGggPSB0aGlzLmVzdC5oZWFkZXJzW2ldO1xyXG4gICAgICAgICAgICBoZWFkZXIuZ2V0Q2VsbChpICsgaUZpeCkudmFsdWUgPSBoLmxhYmVsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVzdC5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCByb3cgPSBzaGVldC5nZXRSb3coaSArIGlGaXggKyAxKTtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLmVzdC5kYXRhW2ldO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBoID0gdGhpcy5lc3QuaGVhZGVyc1tpXTtcclxuICAgICAgICAgICAgICAgIGxldCBjZWxsID0gcm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IGl0ZW1baC5rZXldO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdmFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChoLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhjZWxKUyB2YSBkaSBkZWZhdWx0IGluIFVUQyBxdWluZGkgcmlzY2hpZXJlYmJlIGRpIHRpcmFyZSBnacO5IDIgb3JlIGFkIG9nbmkgZXNwb3J0YXppb25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJpc29nbmEgYWdnaXVuZ2VyZSBsJ3V0YyBvZmZzZXQgYWxsYSBkYXRhIGF0dHVhbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGUgPSB0aGlzLmRhdGVFeHRzLmdldERhdGVDb252ZXJ0aW9uKHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29ycmVjdGVkRGF0ZSA9IGRhdGUuYWRkKGRhdGUudXRjT2Zmc2V0KCksICdtaW51dGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSBjb3JyZWN0ZWREYXRlLnRvRGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5udW1GbXQgPSB2YWwubGVuZ3RoID4gMTAgPyAnZGQvbW0veXl5eSBoOm06cycgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udmVydGVkID0gcGFyc2VGbG9hdCh2YWwucmVwbGFjZSgnLCcsICcuJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gaXNOYU4oY29udmVydGVkKSA/IFwiXCIgOiBjb252ZXJ0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYnVmZmVyID0gYXdhaXQgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpO1xyXG4gICAgICAgIGxldCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHt0eXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O1wifSk7XHJcbiAgICAgICAgbGV0IG9iamVjdFVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgIGxldCBmbiA9IHRoaXMuZXN0LkV4cG9ydEZpbGVOYW1lO1xyXG4gICAgICAgIHRoaXMudXRpRXh0cy5maWxlRG93bmxvYWQob2JqZWN0VXJsLCBmbi5lbmRzV2l0aCgnLmNzdicpID8gZm4ucmVwbGFjZSgnLmNzdicsICcueGxzeCcpIDogZm4uZW5kc1dpdGgoJy54bHN4JykgPyBmbiA6IGZuICsgXCIueGxzeFwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgZWZmZXR0aXZhbWVudGUgZ2VuZXJhIGdsaSBoZWFkZXIgZSBpIGRhdGkgcGVyIGwnZXNwb3J0YXppb25lIGNvbiAqKm5neC1jc3YqKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7YW55W119IGl0ZW1zIE9nZ2V0dGkgZGEgZXNwb3J0YXJlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0dXBFeHBvcnQoaXRlbXM6IGFueVtdKSB7XHJcbiAgICAgICAgbGV0IGRyY2QgPSB0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb247XHJcblxyXG4gICAgICAgIHRoaXMuZXN0LmhlYWRlcnMgPSBkcmNkICYmIGRyY2QubGVuZ3RoID4gMCA/IFxyXG4gICAgICAgICAgICB0aGlzLmV4cEV4dHMuc2V0dXBGb3JHZW5lcmljRXhwb3J0KGl0ZW1zLCBkcmNkLm1hcCh0ID0+IHsgcmV0dXJuIHsgbGFiZWw6IHQuRGVzY3JpcHRpb24sIGtleTogdC5Qcm9wZXJ0eU5hbWUsIHByb3BLZXk6IHQuUHJvcGVydHlOYW1lLCBvcmRlcjogdC5Db2x1bW5PcmRlciwgdHlwZTogJ3N0cmluZycgfTsgfSkpIDogXHJcbiAgICAgICAgICAgIHRoaXMuZXhwRXh0cy5zZXR1cEZvckV4cG9ydChpdGVtcywgdGhpcy5lc3QuRXhwb3J0T25seVZpc2libGVDb2x1bW5zID8gdGhpcy5lc3QuQ29sdW1uc0xpc3QuZmlsdGVyKHQgPT4gdC52aXNpYmxlKS5tYXAodCA9PiB0LmlkKSA6IG51bGwpO1xyXG4gICAgICAgIHRoaXMuZXN0LmRhdGEgPSBpdGVtcztcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0SGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29yZS9oYW5kbGVycy9FeHBvcnRIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLHVEQUF1RDtBQUN2RCxNQUFNLE9BQU8sYUFBYTtJQUV0Qix5QkFBeUI7SUFDekIsWUFBb0IsR0FBcUIsRUFBVSxPQUFzQixFQUFVLE9BQXVCLEVBQVUsT0FBdUIsRUFBVSxRQUFxQjtRQUF0SixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtJQUFJLENBQUM7SUFFL0s7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxNQUF1QjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjO1lBQ3hCLE9BQU87O1lBR1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQVcsRUFBRSxTQUFrQixLQUFLLEVBQUUsRUFBRTtnQkFDbkUsSUFBSSxNQUFNO29CQUNOLE9BQU87Z0JBRVgsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztvQkFDOUUsT0FBTztpQkFDVjtnQkFFRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDO2dCQUNoRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFILElBQUksa0JBQWtCLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBbUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUU5TSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2xHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWJyZXJpZVxyXG5pbXBvcnQgeyBDc3ZIZWFkZXJzLCBEYXRlU2VydmljZSwgRXhwb3J0U2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG4vLyBDb21wb25lbnRpXHJcbmltcG9ydCB7IEVzVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9lcy10YWJsZS9lc190YWJsZS5jb21wb25lbnRcIlxyXG5cclxuLyoqXHJcbiAqIERpY2hpYXJhemlvbmUgZGVsbGEgdmFyaWFiaWxlIGdsb2JhbGUgZGF5anMuIEwnb25lcmUgZGkgXCJjcmVhcmxhXCIgw6ggYWZmaWRhdG8gYWxsJ2FwcGxpY2F6aW9uZSBjaGUgdXRpbGl6emEgcXVlc3RhIGxpYnJlcmlhLCBcclxuICogY2hlIGRvdnLDoCBpbXBvcnRhcmUgbG8gc2NyaXB0IGdsb2JhbGUgZGkgZGF5anMgbmVsbGEgQ0xJXHJcbiAqL1xyXG5kZWNsYXJlIHZhciBkYXlqczogYW55O1xyXG5cclxuLyoqIENsYXNzZSBjb250ZW5lbnRlIGxhIGdlc3Rpb25lIGRlbGxlIGltcG9ydGF6aW9uaSAqL1xyXG5leHBvcnQgY2xhc3MgRXhwb3J0SGFuZGxlciB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlc3Q6IEVzVGFibGVDb21wb25lbnQsIHByaXZhdGUgZXhwRXh0czogRXhwb3J0U2VydmljZSwgcHJpdmF0ZSBtc2dFeHRzOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSB1dGlFeHRzOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBkYXRlRXh0czogRGF0ZVNlcnZpY2UpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgbCdlc3BvcnRhemlvbmUgZGVpIGRhdGlcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IEZvcm1hdG8gZGkgZXNwb3J0YXppb25lLiBMZXR0byBzb2xvIGluIG1vZGFsaXTDoCBSZXBvcnQgZGVsbGEgdGFiZWxsYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJ5RXhwb3J0KGZvcm1hdD86ICdDU1YnIHwgJ1hMU1gnKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVzdC5FeHBvcnRGdW5jdGlvbilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuZXN0LkV4cG9ydEZ1bmN0aW9uKGFzeW5jIChkYXRhOiBhbnlbXSwgY2FuY2VsOiBib29sZWFuID0gZmFsc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjYW5jZWwpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVdhcm5pbmcodGhpcy5lc3QubGMubG9jKFwiQ2Fubm90IGV4cG9ydCBhbiBlbXB0eSBkYXRhc2V0XCIpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGRyY2QgPSB0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICBsZXQgY29sdW1uc0ZpbHRlciA9IHRoaXMuZXN0LkV4cG9ydE9ubHlWaXNpYmxlQ29sdW1ucyA/IHRoaXMuZXN0LkNvbHVtbnNMaXN0LmZpbHRlcih0ID0+IHQudmlzaWJsZSkubWFwKHQgPT4gdC5pZCkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNzdkhlYWRlcnNPdmVycmlkZSA9IGRyY2QgJiYgZHJjZC5sZW5ndGggPiAwID8gZHJjZC5tYXAodCA9PiB7IHJldHVybiA8Q3N2SGVhZGVycz57IGxhYmVsOiB0LkRlc2NyaXB0aW9uLCBrZXk6IHQuUHJvcGVydHlOYW1lLCBwcm9wS2V5OiB0LlByb3BlcnR5TmFtZSwgb3JkZXI6IHQuQ29sdW1uT3JkZXIsIHR5cGU6ICdzdHJpbmcnIH07IH0pIDogbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cEV4dHMuZXhwb3J0KGRhdGEsIGZvcm1hdCwgdGhpcy5lc3QuRXhwb3J0RmlsZU5hbWUsIGNvbHVtbnNGaWx0ZXIsIGNzdkhlYWRlcnNPdmVycmlkZSk7XHJcbiAgICAgICAgICAgIH0sIGZvcm1hdCk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -502,6 +502,8 @@ class EsTableLoc extends LocalizationService {
|
|
|
502
502
|
super.set("en->it", "Select Everything", ["Seleziona Tutto"]);
|
|
503
503
|
super.set("en->it", "Reset Selection", ["Resetta Selezione"]);
|
|
504
504
|
super.set("en->it", "No operations available", ["Nessuna operazione disponibile"]);
|
|
505
|
+
super.set("en->it", "Close", ["Chiudi"]);
|
|
506
|
+
super.set("en->it", "Confirm", ["Conferma"]);
|
|
505
507
|
super.set("en->it", "Values copied in the clipboard", ["Valori copiati nella clipboard"]);
|
|
506
508
|
super.set("en->it", "Size of copied data is different from the size of the selection", ["La dimensione dei dati copiati differisce dalla dimensione della selezione"]);
|
|
507
509
|
super.set("en->it", "Data for this table cannot be edited", ["I dati di questa tabella non possono essere modificati"]);
|
|
@@ -544,120 +546,12 @@ class ExportHandler {
|
|
|
544
546
|
this.msgExts.simpleWarning(this.est.lc.loc("Cannot export an empty dataset"));
|
|
545
547
|
return;
|
|
546
548
|
}
|
|
547
|
-
this.
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
else if (format == "XLSX") {
|
|
552
|
-
if (this.ExcelJS != null) {
|
|
553
|
-
this.exportExcel();
|
|
554
|
-
return;
|
|
555
|
-
}
|
|
556
|
-
try {
|
|
557
|
-
this.ExcelJS = yield import('exceljs');
|
|
558
|
-
this.exportExcel();
|
|
559
|
-
}
|
|
560
|
-
catch (_a) {
|
|
561
|
-
throw "Impossibile caricare la libreria per l'esportazione in Excel";
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
else
|
|
565
|
-
throw "Formato di esportazione non riconosciuto";
|
|
549
|
+
let drcd = this.est.DynamicRowColumnsDefinition;
|
|
550
|
+
let columnsFilter = this.est.ExportOnlyVisibleColumns ? this.est.ColumnsList.filter(t => t.visible).map(t => t.id) : null;
|
|
551
|
+
let csvHeadersOverride = drcd && drcd.length > 0 ? drcd.map(t => { return { label: t.Description, key: t.PropertyName, propKey: t.PropertyName, order: t.ColumnOrder, type: 'string' }; }) : null;
|
|
552
|
+
this.expExts.export(data, format, this.est.ExportFileName, columnsFilter, csvHeadersOverride);
|
|
566
553
|
}), format);
|
|
567
554
|
}
|
|
568
|
-
/** Effettua l'esportazione in file CSV, va a sostituire quel coso inutile di @ctrl/ngx-csv */
|
|
569
|
-
exportCSV() {
|
|
570
|
-
var csvData = this.convertToCSV();
|
|
571
|
-
var blob = new Blob([csvData], { type: 'text/csv' });
|
|
572
|
-
var objectUrl = window.URL.createObjectURL(blob);
|
|
573
|
-
let fn = this.est.ExportFileName;
|
|
574
|
-
this.utiExts.fileDownload(objectUrl, fn.endsWith('.xlsx') ? fn.replace('.xlsx', '.csv') : fn.endsWith('.csv') ? fn : fn + ".csv");
|
|
575
|
-
}
|
|
576
|
-
/** Generazione specifica del CSV */
|
|
577
|
-
convertToCSV() {
|
|
578
|
-
let csv = '', row = '', sep = ';';
|
|
579
|
-
for (let i = 0; i < this.est.headers.length; i++) {
|
|
580
|
-
let h = this.est.headers[i];
|
|
581
|
-
row += `${row != '' ? sep : ''}"${h.label}"`;
|
|
582
|
-
}
|
|
583
|
-
csv += row + '\r\n';
|
|
584
|
-
for (let i = 0; i < this.est.data.length; i++) {
|
|
585
|
-
row = '';
|
|
586
|
-
let item = this.est.data[i];
|
|
587
|
-
for (let j = 0; j < this.est.headers.length; j++) {
|
|
588
|
-
let val = item[this.est.headers[j].key];
|
|
589
|
-
row += `${row != '' ? sep : ''}"${val}"`;
|
|
590
|
-
}
|
|
591
|
-
csv += row + '\r\n';
|
|
592
|
-
}
|
|
593
|
-
return csv;
|
|
594
|
-
}
|
|
595
|
-
/** Effettua l'esportazione del file Excel basandosi sul modulo **ExcelJS**, sugli header **this.est.headers** e sui dati **this.est.data** */
|
|
596
|
-
exportExcel() {
|
|
597
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
598
|
-
let iFix = 1;
|
|
599
|
-
let workbook = new this.ExcelJS.Workbook();
|
|
600
|
-
workbook.creator = "Ema's big Es-Table";
|
|
601
|
-
workbook.created = new Date();
|
|
602
|
-
let sheet = workbook.addWorksheet('Data');
|
|
603
|
-
let header = sheet.getRow(1);
|
|
604
|
-
header.font = { bold: true };
|
|
605
|
-
this.est.headers = this.est.headers.sort((a, b) => a.order - b.order);
|
|
606
|
-
for (let i = 0; i < this.est.headers.length; i++) {
|
|
607
|
-
let h = this.est.headers[i];
|
|
608
|
-
header.getCell(i + iFix).value = h.label;
|
|
609
|
-
}
|
|
610
|
-
for (let i = 0; i < this.est.data.length; i++) {
|
|
611
|
-
let row = sheet.getRow(i + iFix + 1);
|
|
612
|
-
let item = this.est.data[i];
|
|
613
|
-
for (let i = 0; i < this.est.headers.length; i++) {
|
|
614
|
-
let h = this.est.headers[i];
|
|
615
|
-
let cell = row.getCell(i + 1);
|
|
616
|
-
let val = item[h.key];
|
|
617
|
-
if (!val) {
|
|
618
|
-
cell.value = "";
|
|
619
|
-
continue;
|
|
620
|
-
}
|
|
621
|
-
switch (h.type) {
|
|
622
|
-
case 'date':
|
|
623
|
-
// ExcelJS va di default in UTC quindi rischierebbe di tirare giù 2 ore ad ogni esportazione
|
|
624
|
-
// Bisogna aggiungere l'utc offset alla data attuale
|
|
625
|
-
let date = this.dateExts.getDateConvertion(val);
|
|
626
|
-
if (date) {
|
|
627
|
-
let correctedDate = date.add(date.utcOffset(), 'minute');
|
|
628
|
-
cell.value = correctedDate.toDate();
|
|
629
|
-
cell.numFmt = val.length > 10 ? 'dd/mm/yyyy h:m:s' : '';
|
|
630
|
-
}
|
|
631
|
-
break;
|
|
632
|
-
case 'number':
|
|
633
|
-
let converted = parseFloat(val.replace(',', '.'));
|
|
634
|
-
cell.value = isNaN(converted) ? "" : converted;
|
|
635
|
-
break;
|
|
636
|
-
default:
|
|
637
|
-
cell.value = val;
|
|
638
|
-
break;
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
}
|
|
642
|
-
let buffer = yield workbook.xlsx.writeBuffer();
|
|
643
|
-
let blob = new Blob([buffer], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;" });
|
|
644
|
-
let objectUrl = window.URL.createObjectURL(blob);
|
|
645
|
-
let fn = this.est.ExportFileName;
|
|
646
|
-
this.utiExts.fileDownload(objectUrl, fn.endsWith('.csv') ? fn.replace('.csv', '.xlsx') : fn.endsWith('.xlsx') ? fn : fn + ".xlsx");
|
|
647
|
-
});
|
|
648
|
-
}
|
|
649
|
-
/**
|
|
650
|
-
* Metodo che effettivamente genera gli header e i dati per l'esportazione con **ngx-csv**
|
|
651
|
-
*
|
|
652
|
-
* @param {any[]} items Oggetti da esportare
|
|
653
|
-
*/
|
|
654
|
-
setupExport(items) {
|
|
655
|
-
let drcd = this.est.DynamicRowColumnsDefinition;
|
|
656
|
-
this.est.headers = drcd && drcd.length > 0 ?
|
|
657
|
-
this.expExts.setupForGenericExport(items, drcd.map(t => { return { label: t.Description, key: t.PropertyName, propKey: t.PropertyName, order: t.ColumnOrder, type: 'string' }; })) :
|
|
658
|
-
this.expExts.setupForExport(items, this.est.ExportOnlyVisibleColumns ? this.est.ColumnsList.filter(t => t.visible).map(t => t.id) : null);
|
|
659
|
-
this.est.data = items;
|
|
660
|
-
}
|
|
661
555
|
}
|
|
662
556
|
|
|
663
557
|
/**
|