@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.
@@ -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.setupExport(data);
541
- if (format == "CSV") {
542
- this.exportCSV();
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
  /**