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