@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
|
@@ -495,6 +495,8 @@ class EsTableLoc extends LocalizationService {
|
|
|
495
495
|
super.set("en->it", "Select Everything", ["Seleziona Tutto"]);
|
|
496
496
|
super.set("en->it", "Reset Selection", ["Resetta Selezione"]);
|
|
497
497
|
super.set("en->it", "No operations available", ["Nessuna operazione disponibile"]);
|
|
498
|
+
super.set("en->it", "Close", ["Chiudi"]);
|
|
499
|
+
super.set("en->it", "Confirm", ["Conferma"]);
|
|
498
500
|
super.set("en->it", "Values copied in the clipboard", ["Valori copiati nella clipboard"]);
|
|
499
501
|
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"]);
|
|
500
502
|
super.set("en->it", "Data for this table cannot be edited", ["I dati di questa tabella non possono essere modificati"]);
|
|
@@ -537,118 +539,12 @@ class ExportHandler {
|
|
|
537
539
|
this.msgExts.simpleWarning(this.est.lc.loc("Cannot export an empty dataset"));
|
|
538
540
|
return;
|
|
539
541
|
}
|
|
540
|
-
this.
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
else if (format == "XLSX") {
|
|
545
|
-
if (this.ExcelJS != null) {
|
|
546
|
-
this.exportExcel();
|
|
547
|
-
return;
|
|
548
|
-
}
|
|
549
|
-
try {
|
|
550
|
-
this.ExcelJS = await import('exceljs');
|
|
551
|
-
this.exportExcel();
|
|
552
|
-
}
|
|
553
|
-
catch {
|
|
554
|
-
throw "Impossibile caricare la libreria per l'esportazione in Excel";
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
else
|
|
558
|
-
throw "Formato di esportazione non riconosciuto";
|
|
542
|
+
let drcd = this.est.DynamicRowColumnsDefinition;
|
|
543
|
+
let columnsFilter = this.est.ExportOnlyVisibleColumns ? this.est.ColumnsList.filter(t => t.visible).map(t => t.id) : null;
|
|
544
|
+
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;
|
|
545
|
+
this.expExts.export(data, format, this.est.ExportFileName, columnsFilter, csvHeadersOverride);
|
|
559
546
|
}, format);
|
|
560
547
|
}
|
|
561
|
-
/** Effettua l'esportazione in file CSV, va a sostituire quel coso inutile di @ctrl/ngx-csv */
|
|
562
|
-
exportCSV() {
|
|
563
|
-
var csvData = this.convertToCSV();
|
|
564
|
-
var blob = new Blob([csvData], { type: 'text/csv' });
|
|
565
|
-
var objectUrl = window.URL.createObjectURL(blob);
|
|
566
|
-
let fn = this.est.ExportFileName;
|
|
567
|
-
this.utiExts.fileDownload(objectUrl, fn.endsWith('.xlsx') ? fn.replace('.xlsx', '.csv') : fn.endsWith('.csv') ? fn : fn + ".csv");
|
|
568
|
-
}
|
|
569
|
-
/** Generazione specifica del CSV */
|
|
570
|
-
convertToCSV() {
|
|
571
|
-
let csv = '', row = '', sep = ';';
|
|
572
|
-
for (let i = 0; i < this.est.headers.length; i++) {
|
|
573
|
-
let h = this.est.headers[i];
|
|
574
|
-
row += `${row != '' ? sep : ''}"${h.label}"`;
|
|
575
|
-
}
|
|
576
|
-
csv += row + '\r\n';
|
|
577
|
-
for (let i = 0; i < this.est.data.length; i++) {
|
|
578
|
-
row = '';
|
|
579
|
-
let item = this.est.data[i];
|
|
580
|
-
for (let j = 0; j < this.est.headers.length; j++) {
|
|
581
|
-
let val = item[this.est.headers[j].key];
|
|
582
|
-
row += `${row != '' ? sep : ''}"${val}"`;
|
|
583
|
-
}
|
|
584
|
-
csv += row + '\r\n';
|
|
585
|
-
}
|
|
586
|
-
return csv;
|
|
587
|
-
}
|
|
588
|
-
/** Effettua l'esportazione del file Excel basandosi sul modulo **ExcelJS**, sugli header **this.est.headers** e sui dati **this.est.data** */
|
|
589
|
-
async exportExcel() {
|
|
590
|
-
let iFix = 1;
|
|
591
|
-
let workbook = new this.ExcelJS.Workbook();
|
|
592
|
-
workbook.creator = "Ema's big Es-Table";
|
|
593
|
-
workbook.created = new Date();
|
|
594
|
-
let sheet = workbook.addWorksheet('Data');
|
|
595
|
-
let header = sheet.getRow(1);
|
|
596
|
-
header.font = { bold: true };
|
|
597
|
-
this.est.headers = this.est.headers.sort((a, b) => a.order - b.order);
|
|
598
|
-
for (let i = 0; i < this.est.headers.length; i++) {
|
|
599
|
-
let h = this.est.headers[i];
|
|
600
|
-
header.getCell(i + iFix).value = h.label;
|
|
601
|
-
}
|
|
602
|
-
for (let i = 0; i < this.est.data.length; i++) {
|
|
603
|
-
let row = sheet.getRow(i + iFix + 1);
|
|
604
|
-
let item = this.est.data[i];
|
|
605
|
-
for (let i = 0; i < this.est.headers.length; i++) {
|
|
606
|
-
let h = this.est.headers[i];
|
|
607
|
-
let cell = row.getCell(i + 1);
|
|
608
|
-
let val = item[h.key];
|
|
609
|
-
if (!val) {
|
|
610
|
-
cell.value = "";
|
|
611
|
-
continue;
|
|
612
|
-
}
|
|
613
|
-
switch (h.type) {
|
|
614
|
-
case 'date':
|
|
615
|
-
// ExcelJS va di default in UTC quindi rischierebbe di tirare giù 2 ore ad ogni esportazione
|
|
616
|
-
// Bisogna aggiungere l'utc offset alla data attuale
|
|
617
|
-
let date = this.dateExts.getDateConvertion(val);
|
|
618
|
-
if (date) {
|
|
619
|
-
let correctedDate = date.add(date.utcOffset(), 'minute');
|
|
620
|
-
cell.value = correctedDate.toDate();
|
|
621
|
-
cell.numFmt = val.length > 10 ? 'dd/mm/yyyy h:m:s' : '';
|
|
622
|
-
}
|
|
623
|
-
break;
|
|
624
|
-
case 'number':
|
|
625
|
-
let converted = parseFloat(val.replace(',', '.'));
|
|
626
|
-
cell.value = isNaN(converted) ? "" : converted;
|
|
627
|
-
break;
|
|
628
|
-
default:
|
|
629
|
-
cell.value = val;
|
|
630
|
-
break;
|
|
631
|
-
}
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
let buffer = await workbook.xlsx.writeBuffer();
|
|
635
|
-
let blob = new Blob([buffer], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;" });
|
|
636
|
-
let objectUrl = window.URL.createObjectURL(blob);
|
|
637
|
-
let fn = this.est.ExportFileName;
|
|
638
|
-
this.utiExts.fileDownload(objectUrl, fn.endsWith('.csv') ? fn.replace('.csv', '.xlsx') : fn.endsWith('.xlsx') ? fn : fn + ".xlsx");
|
|
639
|
-
}
|
|
640
|
-
/**
|
|
641
|
-
* Metodo che effettivamente genera gli header e i dati per l'esportazione con **ngx-csv**
|
|
642
|
-
*
|
|
643
|
-
* @param {any[]} items Oggetti da esportare
|
|
644
|
-
*/
|
|
645
|
-
setupExport(items) {
|
|
646
|
-
let drcd = this.est.DynamicRowColumnsDefinition;
|
|
647
|
-
this.est.headers = drcd && drcd.length > 0 ?
|
|
648
|
-
this.expExts.setupForGenericExport(items, drcd.map(t => { return { label: t.Description, key: t.PropertyName, propKey: t.PropertyName, order: t.ColumnOrder, type: 'string' }; })) :
|
|
649
|
-
this.expExts.setupForExport(items, this.est.ExportOnlyVisibleColumns ? this.est.ColumnsList.filter(t => t.visible).map(t => t.id) : null);
|
|
650
|
-
this.est.data = items;
|
|
651
|
-
}
|
|
652
548
|
}
|
|
653
549
|
|
|
654
550
|
/**
|