UNPKG

med-table

Version:
40 lines 6.53 kB
import * as XLSX from 'xlsx-js-style'; import { RowBuilder } from './RowBuilder'; import { WorkSheetSettings } from './WorkSheetSettings'; import { CellConfigsFactory } from '../CellConfigsFactory'; import { TableHeaderBuilder } from './TableHeaderBuilder'; export class SheetsGenerator { constructor(data, config) { this.data = data; this.rowBuilder = new RowBuilder(); this.settings = new WorkSheetSettings(); const filteredColumns = this.hidePrivateFields(config); this.headerBuilder = new TableHeaderBuilder(this.settings, filteredColumns); this.dataRowConfig = new CellConfigsFactory().build(filteredColumns); } generate(fileName = 'document') { const wb = XLSX.utils.book_new(); const ws = XLSX.utils.aoa_to_sheet([ this.headerBuilder.getHeaderRows(), this.createTableData(), ].flat()); ws['!merges'] = this.settings.merges; XLSX.utils.book_append_sheet(wb, ws); XLSX.writeFile(wb, `${fileName}.xlsx`); } hidePrivateFields(list) { return list.filter(({ hideExport }) => !hideExport).map(column => { if (column.children) { return { ...column, children: this.hidePrivateFields(column.children), }; } return column; }); } createTableData() { return this.data.map(row => this.rowBuilder.createTableRow(this.dataRowConfig, row)); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hlZXRzR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkLXRhYmxlL3NyYy9saWIvc2VydmljZXMvU2hlZXRzR2VuZXJhdG9yL1NoZWV0c0dlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUcsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzNELE9BQU8sRUFBdUIsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU0vRSxNQUFNLE9BQU8sZUFBZTtJQU0xQixZQUFvQixJQUFvQixFQUFFLE1BQThCO1FBQXBELFNBQUksR0FBSixJQUFJLENBQWdCO1FBSnZCLGVBQVUsR0FBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRS9CLGFBQVEsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFHbEQsTUFBTSxlQUFlLEdBQTJCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELFFBQVEsQ0FBQyxXQUFtQixVQUFVO1FBQ3BDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGVBQWUsRUFBRTtTQUN2QixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFFVixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFFckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxJQUE0QjtRQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ25CLE9BQU87b0JBQ0wsR0FBRyxNQUFNO29CQUNULFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztpQkFDbEQsQ0FBQzthQUNIO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeC1qcy1zdHlsZSc7XG5pbXBvcnQgeyAgUm93QnVpbGRlciB9IGZyb20gJy4vUm93QnVpbGRlcic7XG5pbXBvcnQgeyBXb3JrU2hlZXRTZXR0aW5ncyB9IGZyb20gJy4vV29ya1NoZWV0U2V0dGluZ3MnO1xuaW1wb3J0IHsgQ2VsbENvbmZpZ3NGYWN0b3J5IH0gZnJvbSAnLi4vQ2VsbENvbmZpZ3NGYWN0b3J5JztcbmltcG9ydCB7IENlbGxEYXRhQ29uZmlnTG9jYWwgfSBmcm9tICcuLi8uLi90eXBlcy9DZWxsRGF0YUNvbmZpZ0xvY2FsJztcbmltcG9ydCB7IE1lZFRhYmxlQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMvTWVkVGFibGVDb2x1bW5Db25maWcnO1xuaW1wb3J0IHsgSVRhYmxlSGVhZGVyQnVpbGRlciwgVGFibGVIZWFkZXJCdWlsZGVyIH0gZnJvbSAnLi9UYWJsZUhlYWRlckJ1aWxkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTaGVldHNHZW5lcmF0b3Ige1xuICBnZW5lcmF0ZShmaWxlTmFtZT86IHN0cmluZyk6IHZvaWRcbn1cblxuZXhwb3J0IGNsYXNzIFNoZWV0c0dlbmVyYXRvcjxSb3dWYWx1ZVR5cGUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiBpbXBsZW1lbnRzIElTaGVldHNHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlckJ1aWxkZXI6IElUYWJsZUhlYWRlckJ1aWxkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm93QnVpbGRlciA9ICBuZXcgUm93QnVpbGRlcigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFSb3dDb25maWc6IENlbGxEYXRhQ29uZmlnTG9jYWxbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5ncyA9IG5ldyBXb3JrU2hlZXRTZXR0aW5ncygpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YTogUm93VmFsdWVUeXBlW10sIGNvbmZpZzogTWVkVGFibGVDb2x1bW5Db25maWdbXSkge1xuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1uczogTWVkVGFibGVDb2x1bW5Db25maWdbXSA9IHRoaXMuaGlkZVByaXZhdGVGaWVsZHMoY29uZmlnKTtcblxuICAgIHRoaXMuaGVhZGVyQnVpbGRlciA9IG5ldyBUYWJsZUhlYWRlckJ1aWxkZXIodGhpcy5zZXR0aW5ncywgZmlsdGVyZWRDb2x1bW5zKTtcbiAgICB0aGlzLmRhdGFSb3dDb25maWcgPSBuZXcgQ2VsbENvbmZpZ3NGYWN0b3J5KCkuYnVpbGQoZmlsdGVyZWRDb2x1bW5zKTtcbiAgfVxuXG4gIGdlbmVyYXRlKGZpbGVOYW1lOiBzdHJpbmcgPSAnZG9jdW1lbnQnKTogdm9pZCB7XG4gICAgY29uc3Qgd2IgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XG4gICAgY29uc3Qgd3MgPSBYTFNYLnV0aWxzLmFvYV90b19zaGVldChbXG4gICAgICB0aGlzLmhlYWRlckJ1aWxkZXIuZ2V0SGVhZGVyUm93cygpLFxuICAgICAgdGhpcy5jcmVhdGVUYWJsZURhdGEoKSxcbiAgICBdLmZsYXQoKSk7XG5cbiAgICB3c1snIW1lcmdlcyddID0gdGhpcy5zZXR0aW5ncy5tZXJnZXM7XG5cbiAgICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KHdiLCB3cyk7XG4gICAgWExTWC53cml0ZUZpbGUod2IsIGAke2ZpbGVOYW1lfS54bHN4YCk7XG4gIH1cblxuICBwcml2YXRlIGhpZGVQcml2YXRlRmllbGRzKGxpc3Q6IE1lZFRhYmxlQ29sdW1uQ29uZmlnW10pOiBNZWRUYWJsZUNvbHVtbkNvbmZpZ1tdIHtcbiAgICByZXR1cm4gbGlzdC5maWx0ZXIoKHsgaGlkZUV4cG9ydCB9KSA9PiAhaGlkZUV4cG9ydCkubWFwKGNvbHVtbiA9PiB7XG4gICAgICBpZiAoY29sdW1uLmNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgIGNoaWxkcmVuOiB0aGlzLmhpZGVQcml2YXRlRmllbGRzKGNvbHVtbi5jaGlsZHJlbiksXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRhYmxlRGF0YSgpOiBYTFNYLkNlbGxPYmplY3RbXVtdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLm1hcChyb3cgPT4gdGhpcy5yb3dCdWlsZGVyLmNyZWF0ZVRhYmxlUm93KHRoaXMuZGF0YVJvd0NvbmZpZywgcm93KSk7XG4gIH1cbn1cbiJdfQ==