@angel199/exporter 0.0.1 → 0.0.4

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.
@@ -1,6 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Injectable } from '@angular/core';
2
+ import { Component, inject, Injectable } from '@angular/core';
3
3
  import { MessageService } from 'primeng/api';
4
+ import jsPDF from 'jspdf';
5
+ import autoTable from 'jspdf-autotable';
4
6
  import * as FileSaver from 'file-saver';
5
7
 
6
8
  class Exporter {
@@ -14,7 +16,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
14
16
 
15
17
  class ExportService {
16
18
  // istanza diretta
17
- messagesService = new MessageService();
19
+ messagesService = inject(MessageService);
18
20
  // esempio metodo notifiche
19
21
  notify(message) {
20
22
  this.messagesService.add({ severity: 'info', summary: 'Export', detail: message });
@@ -60,8 +62,6 @@ class ExportService {
60
62
  });
61
63
  }
62
64
  async exportPdf(data, headers, fileName) {
63
- const { default: jsPDF } = await import('jspdf');
64
- const { default: autoTable } = await import('jspdf-autotable');
65
65
  const doc = new jsPDF();
66
66
  autoTable(doc, {
67
67
  head: [headers],
@@ -1 +1 @@
1
- {"version":3,"file":"angel199-exporter.mjs","sources":["../../../projects/exporter/src/lib/exporter.ts","../../../projects/exporter/src/lib/exporter.service.ts","../../../projects/exporter/src/public-api.ts","../../../projects/exporter/src/angel199-exporter.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-exporter',\r\n imports: [],\r\n template: ``,\r\n styles: ``,\r\n})\r\nexport class Exporter {\r\n\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { MessageService } from 'primeng/api'; // uso diretto della libreria\r\n\r\nimport jsPDF from 'jspdf';\r\nimport autoTable from 'jspdf-autotable';\r\nimport * as FileSaver from 'file-saver';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n // istanza diretta\r\n private messagesService = new MessageService();\r\n\r\n // esempio metodo notifiche\r\n private notify(message: string) {\r\n this.messagesService.add({ severity: 'info', summary: 'Export', detail: message });\r\n }\r\n\r\n exportDataTable(\r\n data: any[],\r\n allColumns: any[],\r\n format: 'PDF' | 'XLSX',\r\n fileName: string\r\n ) {\r\n\r\n const fieldsToKeep = allColumns.map(col => col.field);\r\n const headers = allColumns.map(col => col.header);\r\n\r\n const filteredArray = data.map(item => {\r\n const result: any = {};\r\n\r\n fieldsToKeep.forEach(field => {\r\n const column = allColumns.find(c => c.field === field);\r\n if (column && item[field] !== undefined) {\r\n result[column.header] = item[field];\r\n }\r\n });\r\n\r\n return result;\r\n });\r\n\r\n this.notify(\"Attendere, il report è in fase di caricamento.\");\r\n\r\n if (format === 'XLSX') {\r\n this.exportExcel(filteredArray, headers, fileName);\r\n } else {\r\n this.exportPdf(filteredArray, headers, fileName);\r\n }\r\n }\r\n\r\n private exportExcel(\r\n data: Record<string, any>[],\r\n headers: string[],\r\n fileName: string\r\n ) {\r\n import('xlsx').then(xlsx => {\r\n\r\n const worksheet = xlsx.utils.json_to_sheet(data, {\r\n header: headers\r\n });\r\n\r\n const workbook = {\r\n Sheets: { [fileName]: worksheet },\r\n SheetNames: [fileName]\r\n };\r\n\r\n const excelBuffer = xlsx.write(workbook, {\r\n bookType: 'xlsx',\r\n type: 'array'\r\n });\r\n\r\n const blob = new Blob([excelBuffer], {\r\n type: 'application/octet-stream'\r\n });\r\n\r\n FileSaver.saveAs(blob, `${fileName}.xlsx`);\r\n });\r\n }\r\n\r\n async exportPdf(data: any[], headers: string[], fileName: string) {\r\n\r\n const { default: jsPDF } = await import('jspdf');\r\n const { default: autoTable } = await import('jspdf-autotable');\r\n\r\n const doc = new jsPDF();\r\n\r\n autoTable(doc, {\r\n head: [headers],\r\n body: data.map(obj => headers.map(h => obj[h] ?? ''))\r\n });\r\n\r\n doc.save(`${fileName}.pdf`);\r\n}\r\n}\r\n\r\n","/*\r\n * Public API Surface of exporter\r\n */\r\n\r\nexport * from './lib/exporter';\r\nexport * from './lib/exporter.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angel199-exporter.mjs","sources":["../../../projects/exporter/src/lib/exporter.ts","../../../projects/exporter/src/lib/exporter.service.ts","../../../projects/exporter/src/public-api.ts","../../../projects/exporter/src/angel199-exporter.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-exporter',\r\n imports: [],\r\n template: ``,\r\n styles: ``,\r\n})\r\nexport class Exporter {\r\n\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { MessageService } from 'primeng/api'; // uso diretto della libreria\r\n\r\nimport jsPDF from 'jspdf';\r\nimport autoTable from 'jspdf-autotable';\r\nimport * as FileSaver from 'file-saver';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n // istanza diretta\r\n messagesService = inject(MessageService);\r\n\r\n // esempio metodo notifiche\r\n private notify(message: string) {\r\n this.messagesService.add({ severity: 'info', summary: 'Export', detail: message });\r\n }\r\n\r\n exportDataTable(\r\n data: any[],\r\n allColumns: any[],\r\n format: 'PDF' | 'XLSX',\r\n fileName: string\r\n ) {\r\n\r\n const fieldsToKeep = allColumns.map(col => col.field);\r\n const headers = allColumns.map(col => col.header);\r\n\r\n const filteredArray = data.map(item => {\r\n const result: any = {};\r\n\r\n fieldsToKeep.forEach(field => {\r\n const column = allColumns.find(c => c.field === field);\r\n if (column && item[field] !== undefined) {\r\n result[column.header] = item[field];\r\n }\r\n });\r\n\r\n return result;\r\n });\r\n\r\n this.notify(\"Attendere, il report è in fase di caricamento.\");\r\n\r\n if (format === 'XLSX') {\r\n this.exportExcel(filteredArray, headers, fileName);\r\n } else {\r\n this.exportPdf(filteredArray, headers, fileName);\r\n }\r\n }\r\n\r\n private exportExcel(\r\n data: Record<string, any>[],\r\n headers: string[],\r\n fileName: string\r\n ) {\r\n import('xlsx').then(xlsx => {\r\n\r\n const worksheet = xlsx.utils.json_to_sheet(data, {\r\n header: headers\r\n });\r\n\r\n const workbook = {\r\n Sheets: { [fileName]: worksheet },\r\n SheetNames: [fileName]\r\n };\r\n\r\n const excelBuffer = xlsx.write(workbook, {\r\n bookType: 'xlsx',\r\n type: 'array'\r\n });\r\n\r\n const blob = new Blob([excelBuffer], {\r\n type: 'application/octet-stream'\r\n });\r\n\r\n FileSaver.saveAs(blob, `${fileName}.xlsx`);\r\n });\r\n }\r\n\r\n async exportPdf(data: any[], headers: string[], fileName: string) {\r\n\r\n const doc = new jsPDF();\r\n\r\n autoTable(doc, {\r\n head: [headers],\r\n body: data.map(obj => headers.map(h => obj[h] ?? ''))\r\n });\r\n\r\n doc.save(`${fileName}.pdf`);\r\n}\r\n}\r\n\r\n","/*\r\n * Public API Surface of exporter\r\n */\r\n\r\nexport * from './lib/exporter';\r\nexport * from './lib/exporter.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAQa,QAAQ,CAAA;uGAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,wEAHT,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGD,QAAQ,EAAA,UAAA,EAAA,CAAA;kBANpB,SAAS;+BACE,cAAc,EAAA,OAAA,EACf,EAAE,EAAA,QAAA,EACD,CAAA,CAAE,EAAA;;;MCKD,aAAa,CAAA;;AAGxB,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;;AAGhC,IAAA,MAAM,CAAC,OAAe,EAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACpF;AAEA,IAAA,eAAe,CACb,IAAW,EACX,UAAiB,EACjB,MAAsB,EACtB,QAAgB,EAAA;AAGhB,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;AACrD,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;QAEjD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAG;YACpC,MAAM,MAAM,GAAQ,EAAE;AAEtB,YAAA,YAAY,CAAC,OAAO,CAAC,KAAK,IAAG;AAC3B,gBAAA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;gBACtD,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;oBACvC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;gBACrC;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,gDAAgD,CAAC;AAE7D,QAAA,IAAI,MAAM,KAAK,MAAM,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC;QACpD;aAAO;YACL,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC;QAClD;IACF;AAEQ,IAAA,WAAW,CACjB,IAA2B,EAC3B,OAAiB,EACjB,QAAgB,EAAA;QAEhB,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAG;YAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE;AAC/C,gBAAA,MAAM,EAAE;AACT,aAAA,CAAC;AAEF,YAAA,MAAM,QAAQ,GAAG;AACf,gBAAA,MAAM,EAAE,EAAE,CAAC,QAAQ,GAAG,SAAS,EAAE;gBACjC,UAAU,EAAE,CAAC,QAAQ;aACtB;AAED,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACvC,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC;YAEF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE;AACnC,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC;YAEF,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAA,KAAA,CAAO,CAAC;AAC5C,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,SAAS,CAAC,IAAW,EAAE,OAAiB,EAAE,QAAgB,EAAA;AAEhE,QAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE;QAEvB,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,EAAE,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACrD,SAAA,CAAC;AAEF,QAAA,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA,IAAA,CAAM,CAAC;IAC7B;uGAjFa,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACTD;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "name": "@angel199/exporter",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
+ "description": "PrimeNG table exporter (Excel & PDF) for Angular",
5
+ "author": "Angelo Castaldo",
6
+ "license": "MIT",
4
7
  "peerDependencies": {
5
8
  "@angular/common": ">=16.0.0 <22.0.0",
6
9
  "@angular/core": ">=16.0.0 <22.0.0",
@@ -1,4 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
+ import { MessageService } from 'primeng/api';
2
3
 
3
4
  declare class Exporter {
4
5
  static ɵfac: i0.ɵɵFactoryDeclaration<Exporter, never>;
@@ -6,7 +7,7 @@ declare class Exporter {
6
7
  }
7
8
 
8
9
  declare class ExportService {
9
- private messagesService;
10
+ messagesService: MessageService;
10
11
  private notify;
11
12
  exportDataTable(data: any[], allColumns: any[], format: 'PDF' | 'XLSX', fileName: string): void;
12
13
  private exportExcel;