@sachin9822/reports-lib 0.0.72 → 0.0.74
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/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.mjs +122 -216
- package/esm2020/lib/shared/export.service.mjs +107 -0
- package/fesm2015/sachin9822-reports-lib.mjs +222 -210
- package/fesm2015/sachin9822-reports-lib.mjs.map +1 -1
- package/fesm2020/sachin9822-reports-lib.mjs +222 -213
- package/fesm2020/sachin9822-reports-lib.mjs.map +1 -1
- package/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.d.ts +6 -5
- package/lib/shared/export.service.d.ts +18 -0
- package/package.json +1 -1
@@ -0,0 +1,107 @@
|
|
1
|
+
import { Injectable } from '@angular/core';
|
2
|
+
import 'jspdf-autotable';
|
3
|
+
import * as FileSaver from 'file-saver';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
export class ExportService {
|
6
|
+
constructor() { }
|
7
|
+
exportToPdf(headers, rows, doc, startY, fileName) {
|
8
|
+
const columnStyles = {};
|
9
|
+
headers.forEach((_, i) => {
|
10
|
+
columnStyles[i] = { cellWidth: 'auto' };
|
11
|
+
});
|
12
|
+
doc.autoTable({
|
13
|
+
head: [headers],
|
14
|
+
body: rows,
|
15
|
+
startY: startY,
|
16
|
+
theme: 'grid',
|
17
|
+
headStyles: {
|
18
|
+
fillColor: [220, 220, 220],
|
19
|
+
textColor: 0,
|
20
|
+
fontStyle: 'bold',
|
21
|
+
fontSize: 9,
|
22
|
+
halign: 'center',
|
23
|
+
},
|
24
|
+
bodyStyles: {
|
25
|
+
fontSize: 8,
|
26
|
+
fillColor: [255, 255, 255],
|
27
|
+
textColor: [0, 0, 0],
|
28
|
+
},
|
29
|
+
styles: {
|
30
|
+
cellPadding: 2,
|
31
|
+
overflow: 'linebreak',
|
32
|
+
minCellHeight: 6,
|
33
|
+
},
|
34
|
+
columnStyles: columnStyles,
|
35
|
+
});
|
36
|
+
doc.save(fileName);
|
37
|
+
}
|
38
|
+
exportToExcel(headers, rows, worksheet, workbook, fileName) {
|
39
|
+
// Add header row
|
40
|
+
const headerRow = worksheet.addRow(headers);
|
41
|
+
headerRow.font = { bold: true };
|
42
|
+
headerRow.fill = {
|
43
|
+
type: 'pattern',
|
44
|
+
pattern: 'solid',
|
45
|
+
fgColor: { argb: 'D9D9D9' }
|
46
|
+
};
|
47
|
+
headerRow.alignment = { vertical: 'middle', horizontal: 'center' };
|
48
|
+
headerRow.border = {
|
49
|
+
top: { style: 'thin' }, bottom: { style: 'thin' },
|
50
|
+
left: { style: 'thin' }, right: { style: 'thin' }
|
51
|
+
};
|
52
|
+
const dataStartRow = worksheet.lastRow.number + 1;
|
53
|
+
// Add data rows
|
54
|
+
rows.forEach(rowData => {
|
55
|
+
const dataRow = worksheet.addRow(rowData);
|
56
|
+
dataRow.border = {
|
57
|
+
top: { style: 'thin' }, bottom: { style: 'thin' },
|
58
|
+
left: { style: 'thin' }, right: { style: 'thin' }
|
59
|
+
};
|
60
|
+
});
|
61
|
+
const totalColumns = headers.length;
|
62
|
+
// Auto-width for each column
|
63
|
+
for (let i = 1; i <= totalColumns; i++) {
|
64
|
+
let maxLength = 5;
|
65
|
+
const headerVal = headerRow.getCell(i).value?.toString() ?? '';
|
66
|
+
maxLength = Math.max(maxLength, headerVal.length);
|
67
|
+
for (let rowNum = dataStartRow; rowNum <= worksheet.lastRow.number; rowNum++) {
|
68
|
+
const cell = worksheet.getRow(rowNum).getCell(i);
|
69
|
+
const val = cell.value ? cell.value.toString() : '';
|
70
|
+
maxLength = Math.max(maxLength, val.length);
|
71
|
+
}
|
72
|
+
worksheet.getColumn(i).width = maxLength + 2;
|
73
|
+
}
|
74
|
+
// Export as Excel file
|
75
|
+
workbook.xlsx.writeBuffer().then(buffer => {
|
76
|
+
const blob = new Blob([buffer], {
|
77
|
+
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
78
|
+
});
|
79
|
+
FileSaver.saveAs(blob, fileName);
|
80
|
+
});
|
81
|
+
}
|
82
|
+
exportToCsv(headers, rows, metadata = [], fileName) {
|
83
|
+
// Combine metadata + blank line + headers + data
|
84
|
+
const csvContent = [...metadata, [], headers, ...rows]
|
85
|
+
.map(e => e.join(','))
|
86
|
+
.join('\n');
|
87
|
+
this.downloadFile(csvContent, fileName, 'text/csv');
|
88
|
+
}
|
89
|
+
downloadFile(data, filename, type) {
|
90
|
+
const blob = new Blob([data], { type });
|
91
|
+
const link = document.createElement('a');
|
92
|
+
link.href = URL.createObjectURL(blob);
|
93
|
+
link.setAttribute('download', filename);
|
94
|
+
document.body.appendChild(link);
|
95
|
+
link.click();
|
96
|
+
document.body.removeChild(link);
|
97
|
+
}
|
98
|
+
}
|
99
|
+
ExportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
100
|
+
ExportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportService, providedIn: 'root' });
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportService, decorators: [{
|
102
|
+
type: Injectable,
|
103
|
+
args: [{
|
104
|
+
providedIn: 'root'
|
105
|
+
}]
|
106
|
+
}], ctorParameters: function () { return []; } });
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBvcnRzLWxpYi9zcmMvbGliL3NoYXJlZC9leHBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8saUJBQWlCLENBQUM7QUFFekIsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7O0FBWXhDLE1BQU0sT0FBTyxhQUFhO0lBRXhCLGdCQUFnQixDQUFDO0lBS2pCLFdBQVcsQ0FBQyxPQUFpQixFQUFFLElBQWEsRUFBRSxHQUFVLEVBQUUsTUFBYyxFQUFFLFFBQWdCO1FBQ3hGLE1BQU0sWUFBWSxHQUEyQixFQUFFLENBQUM7UUFDaEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2QixZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxHQUFHLENBQUMsU0FBUyxDQUFDO1lBQ1osSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDO1lBQ2YsSUFBSSxFQUFFLElBQUk7WUFDVixNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsVUFBVSxFQUFFO2dCQUNWLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUMxQixTQUFTLEVBQUUsQ0FBQztnQkFDWixTQUFTLEVBQUUsTUFBTTtnQkFDakIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxFQUFFLFFBQVE7YUFDakI7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7Z0JBQzFC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LENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OzBHQWxJVSxhQUFhOzhHQUFiLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGpzUERGIGZyb20gJ2pzcGRmJztcbmltcG9ydCAnanNwZGYtYXV0b3RhYmxlJztcbmltcG9ydCAqIGFzIEV4Y2VsSlMgZnJvbSAnZXhjZWxqcyc7XG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XG5cblxuZGVjbGFyZSBtb2R1bGUgJ2pzcGRmJyB7XG4gIGludGVyZmFjZSBqc1BERiB7XG4gICAgYXV0b1RhYmxlOiAob3B0aW9uczogYW55KSA9PiBqc1BERjtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFeHBvcnRTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG5cbiAgXG5cbiAgZXhwb3J0VG9QZGYoaGVhZGVyczogc3RyaW5nW10sIHJvd3M6IGFueVtdW10sIGRvYzoganNQREYsIHN0YXJ0WTogbnVtYmVyLCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY29sdW1uU3R5bGVzOiB7IFtrZXk6IG51bWJlcl06IGFueSB9ID0ge307XG4gICAgaGVhZGVycy5mb3JFYWNoKChfLCBpKSA9PiB7XG4gICAgICBjb2x1bW5TdHlsZXNbaV0gPSB7IGNlbGxXaWR0aDogJ2F1dG8nIH07XG4gICAgfSk7XG5cbiAgICBkb2MuYXV0b1RhYmxlKHtcbiAgICAgIGhlYWQ6IFtoZWFkZXJzXSxcbiAgICAgIGJvZHk6IHJvd3MsXG4gICAgICBzdGFydFk6IHN0YXJ0WSxcbiAgICAgIHRoZW1lOiAnZ3JpZCcsXG4gICAgICBoZWFkU3R5bGVzOiB7XG4gICAgICAgIGZpbGxDb2xvcjogWzIyMCwgMjIwLCAyMjBdLFxuICAgICAgICB0ZXh0Q29sb3I6IDAsXG4gICAgICAgIGZvbnRTdHlsZTogJ2JvbGQnLFxuICAgICAgICBmb250U2l6ZTogOSxcbiAgICAgICAgaGFsaWduOiAnY2VudGVyJyxcbiAgICAgIH0sXG4gICAgICBib2R5U3R5bGVzOiB7XG4gICAgICAgIGZvbnRTaXplOiA4LFxuICAgICAgICBmaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1XSxcbiAgICAgICAgdGV4dENvbG9yOiBbMCwgMCwgMF0sXG4gICAgICB9LFxuICAgICAgc3R5bGVzOiB7XG4gICAgICAgIGNlbGxQYWRkaW5nOiAyLFxuICAgICAgICBvdmVyZmxvdzogJ2xpbmVicmVhaycsXG4gICAgICAgIG1pbkNlbGxIZWlnaHQ6IDYsXG4gICAgICB9LFxuICAgICAgY29sdW1uU3R5bGVzOiBjb2x1bW5TdHlsZXMsXG4gICAgfSk7XG5cbiAgICBkb2Muc2F2ZShmaWxlTmFtZSk7XG4gIH1cblxuXG5cblxuXG4gIGV4cG9ydFRvRXhjZWwoXG4gICAgaGVhZGVyczogc3RyaW5nW10sXG4gICAgcm93czogYW55W11bXSxcbiAgICB3b3Jrc2hlZXQ6IEV4Y2VsSlMuV29ya3NoZWV0LFxuICAgIHdvcmtib29rOiBFeGNlbEpTLldvcmtib29rLFxuICAgIGZpbGVOYW1lOiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgLy8gQWRkIGhlYWRlciByb3dcbiAgICBjb25zdCBoZWFkZXJSb3cgPSB3b3Jrc2hlZXQuYWRkUm93KGhlYWRlcnMpO1xuICAgIGhlYWRlclJvdy5mb250ID0geyBib2xkOiB0cnVlIH07XG4gICAgaGVhZGVyUm93LmZpbGwgPSB7XG4gICAgICB0eXBlOiAncGF0dGVybicsXG4gICAgICBwYXR0ZXJuOiAnc29saWQnLFxuICAgICAgZmdDb2xvcjogeyBhcmdiOiAnRDlEOUQ5JyB9XG4gICAgfTtcbiAgICBoZWFkZXJSb3cuYWxpZ25tZW50ID0geyB2ZXJ0aWNhbDogJ21pZGRsZScsIGhvcml6b250YWw6ICdjZW50ZXInIH07XG4gICAgaGVhZGVyUm93LmJvcmRlciA9IHtcbiAgICAgIHRvcDogeyBzdHlsZTogJ3RoaW4nIH0sIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sXG4gICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSwgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9XG4gICAgfTtcblxuICAgIGNvbnN0IGRhdGFTdGFydFJvdyA9IHdvcmtzaGVldC5sYXN0Um93IS5udW1iZXIgKyAxO1xuXG4gICAgLy8gQWRkIGRhdGEgcm93c1xuICAgIHJvd3MuZm9yRWFjaChyb3dEYXRhID0+IHtcbiAgICAgIGNvbnN0IGRhdGFSb3cgPSB3b3Jrc2hlZXQuYWRkUm93KHJvd0RhdGEpO1xuICAgICAgZGF0YVJvdy5ib3JkZXIgPSB7XG4gICAgICAgIHRvcDogeyBzdHlsZTogJ3RoaW4nIH0sIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sXG4gICAgICAgIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9LCByaWdodDogeyBzdHlsZTogJ3RoaW4nIH1cbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b3RhbENvbHVtbnMgPSBoZWFkZXJzLmxlbmd0aDtcblxuICAgIC8vIEF1dG8td2lkdGggZm9yIGVhY2ggY29sdW1uXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdG90YWxDb2x1bW5zOyBpKyspIHtcbiAgICAgIGxldCBtYXhMZW5ndGggPSA1O1xuICAgICAgY29uc3QgaGVhZGVyVmFsID0gaGVhZGVyUm93LmdldENlbGwoaSkudmFsdWU/LnRvU3RyaW5nKCkgPz8gJyc7XG4gICAgICBtYXhMZW5ndGggPSBNYXRoLm1heChtYXhMZW5ndGgsIGhlYWRlclZhbC5sZW5ndGgpO1xuXG4gICAgICBmb3IgKGxldCByb3dOdW0gPSBkYXRhU3RhcnRSb3c7IHJvd051bSA8PSB3b3Jrc2hlZXQubGFzdFJvdyEubnVtYmVyOyByb3dOdW0rKykge1xuICAgICAgICBjb25zdCBjZWxsID0gd29ya3NoZWV0LmdldFJvdyhyb3dOdW0pLmdldENlbGwoaSk7XG4gICAgICAgIGNvbnN0IHZhbCA9IGNlbGwudmFsdWUgPyBjZWxsLnZhbHVlLnRvU3RyaW5nKCkgOiAnJztcbiAgICAgICAgbWF4TGVuZ3RoID0gTWF0aC5tYXgobWF4TGVuZ3RoLCB2YWwubGVuZ3RoKTtcbiAgICAgIH1cblxuICAgICAgd29ya3NoZWV0LmdldENvbHVtbihpKS53aWR0aCA9IG1heExlbmd0aCArIDI7XG4gICAgfVxuXG4gICAgLy8gRXhwb3J0IGFzIEV4Y2VsIGZpbGVcbiAgICB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCkudGhlbihidWZmZXIgPT4ge1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCdcbiAgICAgIH0pO1xuICAgICAgRmlsZVNhdmVyLnNhdmVBcyhibG9iLCBmaWxlTmFtZSk7XG4gICAgfSk7XG4gIH1cblxuXG5cblxuXG5cbiAgZXhwb3J0VG9Dc3YoXG4gICAgaGVhZGVyczogc3RyaW5nW10sXG4gICAgcm93czogc3RyaW5nW11bXSxcbiAgICBtZXRhZGF0YTogc3RyaW5nW11bXSA9IFtdLFxuICAgIGZpbGVOYW1lOiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgLy8gQ29tYmluZSBtZXRhZGF0YSArIGJsYW5rIGxpbmUgKyBoZWFkZXJzICsgZGF0YVxuICAgIGNvbnN0IGNzdkNvbnRlbnQgPSBbLi4ubWV0YWRhdGEsIFtdLCBoZWFkZXJzLCAuLi5yb3dzXVxuICAgICAgLm1hcChlID0+IGUuam9pbignLCcpKVxuICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgdGhpcy5kb3dubG9hZEZpbGUoY3N2Q29udGVudCwgZmlsZU5hbWUsICd0ZXh0L2NzdicpO1xuICB9XG5cbiAgcHJpdmF0ZSBkb3dubG9hZEZpbGUoZGF0YTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGFdLCB7IHR5cGUgfSk7XG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVuYW1lKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICB9XG5cblxuXG5cbn1cbiJdfQ==
|