cmat 0.0.74 → 0.0.75
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.
|
@@ -299,6 +299,10 @@ class CmatDataExporterDirective {
|
|
|
299
299
|
}
|
|
300
300
|
// 如果允许日期转换且值为日期类型,则按dateFormat格式转换
|
|
301
301
|
else if (this.transformDate && (value instanceof Date || typeof value === 'string')) {
|
|
302
|
+
const datePattern = /^\d{4}[-/]\d{1,2}[-/]\d{1,2}/;
|
|
303
|
+
if (typeof value === 'string' && !datePattern.test(value)) {
|
|
304
|
+
return { ...acc, [column.code]: value };
|
|
305
|
+
}
|
|
302
306
|
try {
|
|
303
307
|
const dateValue = dayjs(value);
|
|
304
308
|
if (dateValue.isValid()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-directives-data-exporter.mjs","sources":["../../../projects/cmat/directives/data-exporter/options.ts","../../../projects/cmat/directives/data-exporter/mime.ts","../../../projects/cmat/directives/data-exporter/constants.ts","../../../projects/cmat/directives/data-exporter/services/file-util.ts","../../../projects/cmat/directives/data-exporter/services/exporters/file-exporter.ts","../../../projects/cmat/directives/data-exporter/services/exporters/worksheet-exporter.ts","../../../projects/cmat/directives/data-exporter/services/exporters/csv-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/json-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/txt-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/xls-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/xlsx-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/service-locator.service.ts","../../../projects/cmat/directives/data-exporter/data-exporter.directive.ts","../../../projects/cmat/directives/data-exporter/cmat-directives-data-exporter.ts"],"sourcesContent":["import { WritingOptions } from 'xlsx';\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nexport interface ExporterListInfo {\r\n code: string;\r\n label: string;\r\n}\r\n\r\nexport enum ExportType {\r\n XLS = 'xls',\r\n XLSX = 'xlsx',\r\n CSV = 'csv',\r\n TXT = 'txt',\r\n JSON = 'json'\r\n}\r\n\r\nexport interface Options {\r\n fileName?: string;\r\n}\r\n\r\nexport interface TxtOptions extends Options {\r\n delimiter?: string;\r\n}\r\n\r\nexport interface ExcelOptions extends Options, Omit<WritingOptions, 'bookType'> {\r\n columnWidths: number[];\r\n}\r\n","export class Mime {\r\n extension: string;\r\n contentTypeHeader: string;\r\n\r\n constructor(extension: string, contentTypeHeader: string) {\r\n this.extension = extension;\r\n this.contentTypeHeader = contentTypeHeader;\r\n }\r\n}\r\n","import { Mime } from './mime';\r\nimport { ExportType } from './options';\r\n\r\nexport const TYPE_ARRAY = 'array';\r\nexport const CHAR_SET_UTF = ';charset=utf-';\r\nexport const CHAR_SET_UTF_8 = CHAR_SET_UTF + '8';\r\nexport const CONTENT_TYPE_TEXT = ExportType.TXT + '/';\r\nexport const CONTENT_TYPE_APPLICATION = 'application/';\r\nexport const CONTENT_TYPE_EXCEL = CONTENT_TYPE_APPLICATION + 'octet-stream';\r\nexport const CONTENT_TYPE_JSON = CONTENT_TYPE_APPLICATION + 'json';\r\nexport const DOT = '.';\r\nexport const COMMA = ',';\r\nexport const EXTENSION_XLS = DOT + ExportType.XLS;\r\nexport const EXTENSION_XLSX = DOT + ExportType.XLSX;\r\nexport const EXTENSION_CSV = DOT + ExportType.CSV;\r\nexport const EXTENSION_JSON = DOT + ExportType.JSON;\r\nexport const EXTENSION_TEXT = DOT + ExportType.TXT;\r\nexport const MIME_EXCEL_XLS = new Mime(EXTENSION_XLS, CONTENT_TYPE_EXCEL + CHAR_SET_UTF_8);\r\nexport const MIME_EXCEL_XLSX = new Mime(EXTENSION_XLSX, CONTENT_TYPE_EXCEL + CHAR_SET_UTF_8);\r\nexport const MIME_JSON = new Mime(EXTENSION_JSON, CONTENT_TYPE_JSON + CHAR_SET_UTF_8);\r\nexport const MIME_TXT = new Mime(EXTENSION_TEXT, CONTENT_TYPE_TEXT + ExportType.TXT + CHAR_SET_UTF_8);\r\nexport const MIME_CSV = new Mime(EXTENSION_CSV, CONTENT_TYPE_TEXT + ExportType.CSV + CHAR_SET_UTF_8);\r\nexport const REF = '!ref';\r\nexport const XLS_REGEX = DOT + '*.' + ExportType.XLS + '$';\r\nexport const RETURN = '\\n';\r\nexport const TAB = '\\t';\r\nexport const XLSX_COLS = '!cols';\r\nexport const BOM = '\\uFEFF';\r\n","import * as FileSaver from 'file-saver-es';\r\nimport { DOT, XLS_REGEX } from '../constants';\r\nimport { Mime } from '../mime';\r\nimport { ExportType, Options } from '../options';\r\n\r\nexport class FileUtil {\r\n public static save(content: string, mime: Mime, options?: Options):void {\r\n const blob = new Blob([content], {type: mime.contentTypeHeader});\r\n let fileName = '附件';\r\n if (options?.fileName) {\r\n fileName = options.fileName;\r\n }\r\n FileSaver.saveAs(blob, fileName + mime.extension);\r\n }\r\n\r\n\r\n public static isXls(fileName: string): boolean {\r\n return fileName.toLowerCase().match(XLS_REGEX) != null;\r\n }\r\n\r\n public static identifyExportType(fileName?: string): ExportType {\r\n if (fileName && FileUtil.isXls(fileName)) {\r\n return ExportType.XLS;\r\n } else {\r\n return ExportType.XLSX;\r\n }\r\n }\r\n\r\n public static removeExtension(options?: Options):void {\r\n if (options)\r\n options.fileName = options.fileName?.split(DOT)[0];\r\n }\r\n}\r\n","import { Exporter } from './exporter';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\nimport { FileUtil } from '../file-util';\r\n\r\nexport abstract class FileExporter<T extends Options> implements Exporter<T> {\r\n public export(rows: any[], options?: T): void {\r\n if (!rows) {\r\n throw new Error('Empty json array is provided, rows parameter is mandatory!');\r\n }\r\n const mimeType = this.getMimeType();\r\n void this.createContent(rows, options).then((content) => {\r\n FileUtil.save(content, mimeType, options);\r\n });\r\n }\r\n\r\n public abstract createContent(rows: any[], options?: T): Promise<any>;\r\n public abstract getMimeType(): Mime;\r\n}\r\n","import { WorkSheet } from 'xlsx';\r\nimport { FileExporter } from './file-exporter';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\n\r\nexport abstract class WorksheetExporter<T extends Options> extends FileExporter<T> {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async createContent(rows: any[], options?: T): Promise<any> {\r\n const workSheet: WorkSheet = (await import('xlsx')).utils.json_to_sheet(rows, {\r\n skipHeader: true // we don't want to see object properties as our headers\r\n });\r\n return await this.workSheetToContent(workSheet, options);\r\n }\r\n public abstract workSheetToContent(workSheet: WorkSheet, options?: T): Promise<any>;\r\n public abstract override getMimeType(): Mime;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { WorksheetExporter } from './worksheet-exporter';\r\nimport { BOM, COMMA, MIME_CSV } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { TxtOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CsvExporterService extends WorksheetExporter<TxtOptions> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async workSheetToContent(worksheet: WorkSheet, options?: TxtOptions): Promise<any> {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const content = (await import('xlsx')).utils.sheet_to_csv(worksheet, { FS: options?.delimiter ?? COMMA });\r\n return BOM + content;\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_CSV;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FileExporter } from './file-exporter';\r\nimport { MIME_JSON } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JsonExporterService extends FileExporter<Options> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public async createContent(rows: any[], options?: Options): Promise<any> {\r\n return await new Promise((resolve) => {\r\n resolve(JSON.stringify(rows));\r\n });;\r\n }\r\n public getMimeType(): Mime {\r\n return MIME_JSON;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FileExporter } from './file-exporter';\r\nimport { MIME_TXT, RETURN, TAB } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { TxtOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TxtExporterService extends FileExporter<TxtOptions> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async createContent(rows: any[], options?: TxtOptions): Promise<any> {\r\n return await new Promise((resolve) => {\r\n let content = '';\r\n rows.forEach((element) => {\r\n content += Object.values(element).join(this._getDelimiter(options)) + RETURN;\r\n });\r\n\r\n resolve(JSON.stringify(content));\r\n });\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_TXT;\r\n }\r\n\r\n private _getDelimiter(options?: TxtOptions): string {\r\n if (options?.delimiter) {\r\n return options.delimiter;\r\n } else {\r\n return TAB;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { WorksheetExporter } from './worksheet-exporter';\r\nimport { MIME_EXCEL_XLS, TYPE_ARRAY, XLSX_COLS } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { ExcelOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XlsExporterService extends WorksheetExporter<ExcelOptions> {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async workSheetToContent(worksheet: WorkSheet, options: ExcelOptions = {} as ExcelOptions): Promise<any> {\r\n const { utils, write } = await import('xlsx');\r\n const workBook = utils.book_new();\r\n\r\n this._correctTypes(options);\r\n utils.book_append_sheet(workBook, worksheet, options.sheet);\r\n\r\n if (options.columnWidths) {\r\n worksheet[XLSX_COLS] = this._convertToWch(options.columnWidths);\r\n } else {\r\n const jsonTable = utils.sheet_to_json<string | number[]>(worksheet, {\r\n header: 1,\r\n raw: true,\r\n rawNumbers: true,\r\n });\r\n const maxRowSize = Math.max(...jsonTable.map(row => row.length));\r\n\r\n const wchArray = Array.from({ length: maxRowSize }).map((_, rowIndex) => {\r\n const row = Array.from({ length: jsonTable.length }).map(\r\n (_, i) => String(jsonTable[i][rowIndex] ?? '').length\r\n );\r\n\r\n return { wch: Math.max(...row)*3 > 40 ? 40 : Math.max(...row)*3 };\r\n });\r\n worksheet[XLSX_COLS] = wchArray;\r\n }\r\n\r\n return write(workBook, options);\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_EXCEL_XLS;\r\n }\r\n\r\n private _correctTypes(options: ExcelOptions): void {\r\n options.type ??= TYPE_ARRAY;\r\n (options as any).bookType = this.getMimeType().extension.replace('.', ''); // sheetjs requires bookingType for excel format\r\n }\r\n\r\n private _convertToWch(columnWidths: number[]): { wch: number }[] {\r\n return columnWidths.map(width => ({ wch: width }));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { XlsExporterService } from './xls-exporter.service';\r\nimport { MIME_EXCEL_XLSX } from '../../constants';\r\nimport { Mime } from '../../mime';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XlsxExporterService extends XlsExporterService {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public override getMimeType(): Mime {\r\n return MIME_EXCEL_XLSX;\r\n }\r\n}\r\n","import { Injectable, Injector, inject } from '@angular/core';\r\nimport { ExportType, Options } from '../options';\r\nimport { CsvExporterService } from './exporters/csv-exporter.service';\r\nimport { Exporter } from './exporters/exporter';\r\nimport { JsonExporterService } from './exporters/json-exporter.service';\r\nimport { TxtExporterService } from './exporters/txt-exporter.service';\r\nimport { XlsExporterService } from './exporters/xls-exporter.service';\r\nimport { XlsxExporterService } from './exporters/xlsx-exporter.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceLocatorService {\r\n private _injector = inject(Injector);\r\n\r\n public getService(exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json'): Exporter<Options> {\r\n switch (exportType) {\r\n case 'xls':\r\n case ExportType.XLS:\r\n return this._injector.get<XlsExporterService>(XlsExporterService);\r\n case 'xlsx':\r\n case ExportType.XLSX:\r\n return this._injector.get<XlsxExporterService>(XlsxExporterService);\r\n case 'json':\r\n case ExportType.JSON:\r\n return this._injector.get<JsonExporterService>(JsonExporterService);\r\n case 'txt':\r\n case ExportType.TXT:\r\n return this._injector.get<TxtExporterService>(TxtExporterService);\r\n case 'csv':\r\n case ExportType.CSV:\r\n return this._injector.get<CsvExporterService>(CsvExporterService);\r\n default:\r\n return this._injector.get<XlsxExporterService>(XlsxExporterService);\r\n }\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, inject } from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport { ExcelOptions, ExporterListInfo, ExportType, Options, TxtOptions } from './options';\r\nimport { Exporter } from './services/exporters/exporter';\r\nimport { ServiceLocatorService } from './services/service-locator.service';\r\n\r\n@Directive({\r\n selector: 'button[cmatDataExporter]'\r\n})\r\nexport class CmatDataExporterDirective implements OnChanges {\r\n @Input() dataSource: any[];\r\n @Input() exportColumns: ExporterListInfo[];\r\n @Input() options?: Options | ExcelOptions | TxtOptions;\r\n @Input() exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json';\r\n @Input() transformBoolean: boolean = true;\r\n @Input() transformDate: boolean = true;\r\n @Input() dateFormat: string = 'YYYY-MM-DD';\r\n \r\n private _serviceLocator = inject(ServiceLocatorService);\r\n private _data: any[];\r\n private _exporterService: Exporter<Options>;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.dataSource) {\r\n if (this.dataSource?.length > 0) {\r\n this._data = [];\r\n this._loadExporter(this.exportType);\r\n this._data = [\r\n // 首先添加一个包含列标题的对象\r\n this.exportColumns.map(column => ({ [column.code]: column.label }))\r\n .reduce((acc, curr) => ({ ...acc, ...curr }), {}) as Record<string, string>,\r\n // 然后添加用户数据对象,根据列配置提取相应的属性并进行转换\r\n ...this.dataSource.map(user =>\r\n this.exportColumns.reduce((acc, column) => {\r\n let value = user[column.code];\r\n \r\n // 如果允许布尔值转换且值为布尔类型,则转换为\"是\"、\"否\"\r\n if (this.transformBoolean && typeof value === 'boolean') {\r\n value = value ? '是' : '否';\r\n }\r\n // 如果允许日期转换且值为日期类型,则按dateFormat格式转换\r\n else if (this.transformDate && (value instanceof Date || typeof value === 'string')) {\r\n try {\r\n const dateValue = dayjs(value);\r\n if (dateValue.isValid()) {\r\n value = dateValue.format(this.dateFormat);\r\n }\r\n } catch {\r\n // 如果日期转换失败,保持原始值\r\n }\r\n }\r\n \r\n return { ...acc, [column.code]: value };\r\n }, {})\r\n )\r\n ] as (Record<string, string>)[];\r\n\r\n this._exporterService.export(this._data, this.options);\r\n }\r\n }\r\n }\r\n\r\n private _loadExporter(exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json'): void {\r\n this._exporterService = this._serviceLocator.getService(exportType);\r\n }\r\n\r\n}\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":"cmat-directives-data-exporter.mjs","sources":["../../../projects/cmat/directives/data-exporter/options.ts","../../../projects/cmat/directives/data-exporter/mime.ts","../../../projects/cmat/directives/data-exporter/constants.ts","../../../projects/cmat/directives/data-exporter/services/file-util.ts","../../../projects/cmat/directives/data-exporter/services/exporters/file-exporter.ts","../../../projects/cmat/directives/data-exporter/services/exporters/worksheet-exporter.ts","../../../projects/cmat/directives/data-exporter/services/exporters/csv-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/json-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/txt-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/xls-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/xlsx-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/service-locator.service.ts","../../../projects/cmat/directives/data-exporter/data-exporter.directive.ts","../../../projects/cmat/directives/data-exporter/cmat-directives-data-exporter.ts"],"sourcesContent":["import { WritingOptions } from 'xlsx';\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nexport interface ExporterListInfo {\r\n code: string;\r\n label: string;\r\n}\r\n\r\nexport enum ExportType {\r\n XLS = 'xls',\r\n XLSX = 'xlsx',\r\n CSV = 'csv',\r\n TXT = 'txt',\r\n JSON = 'json'\r\n}\r\n\r\nexport interface Options {\r\n fileName?: string;\r\n}\r\n\r\nexport interface TxtOptions extends Options {\r\n delimiter?: string;\r\n}\r\n\r\nexport interface ExcelOptions extends Options, Omit<WritingOptions, 'bookType'> {\r\n columnWidths: number[];\r\n}\r\n","export class Mime {\r\n extension: string;\r\n contentTypeHeader: string;\r\n\r\n constructor(extension: string, contentTypeHeader: string) {\r\n this.extension = extension;\r\n this.contentTypeHeader = contentTypeHeader;\r\n }\r\n}\r\n","import { Mime } from './mime';\r\nimport { ExportType } from './options';\r\n\r\nexport const TYPE_ARRAY = 'array';\r\nexport const CHAR_SET_UTF = ';charset=utf-';\r\nexport const CHAR_SET_UTF_8 = CHAR_SET_UTF + '8';\r\nexport const CONTENT_TYPE_TEXT = ExportType.TXT + '/';\r\nexport const CONTENT_TYPE_APPLICATION = 'application/';\r\nexport const CONTENT_TYPE_EXCEL = CONTENT_TYPE_APPLICATION + 'octet-stream';\r\nexport const CONTENT_TYPE_JSON = CONTENT_TYPE_APPLICATION + 'json';\r\nexport const DOT = '.';\r\nexport const COMMA = ',';\r\nexport const EXTENSION_XLS = DOT + ExportType.XLS;\r\nexport const EXTENSION_XLSX = DOT + ExportType.XLSX;\r\nexport const EXTENSION_CSV = DOT + ExportType.CSV;\r\nexport const EXTENSION_JSON = DOT + ExportType.JSON;\r\nexport const EXTENSION_TEXT = DOT + ExportType.TXT;\r\nexport const MIME_EXCEL_XLS = new Mime(EXTENSION_XLS, CONTENT_TYPE_EXCEL + CHAR_SET_UTF_8);\r\nexport const MIME_EXCEL_XLSX = new Mime(EXTENSION_XLSX, CONTENT_TYPE_EXCEL + CHAR_SET_UTF_8);\r\nexport const MIME_JSON = new Mime(EXTENSION_JSON, CONTENT_TYPE_JSON + CHAR_SET_UTF_8);\r\nexport const MIME_TXT = new Mime(EXTENSION_TEXT, CONTENT_TYPE_TEXT + ExportType.TXT + CHAR_SET_UTF_8);\r\nexport const MIME_CSV = new Mime(EXTENSION_CSV, CONTENT_TYPE_TEXT + ExportType.CSV + CHAR_SET_UTF_8);\r\nexport const REF = '!ref';\r\nexport const XLS_REGEX = DOT + '*.' + ExportType.XLS + '$';\r\nexport const RETURN = '\\n';\r\nexport const TAB = '\\t';\r\nexport const XLSX_COLS = '!cols';\r\nexport const BOM = '\\uFEFF';\r\n","import * as FileSaver from 'file-saver-es';\r\nimport { DOT, XLS_REGEX } from '../constants';\r\nimport { Mime } from '../mime';\r\nimport { ExportType, Options } from '../options';\r\n\r\nexport class FileUtil {\r\n public static save(content: string, mime: Mime, options?: Options):void {\r\n const blob = new Blob([content], {type: mime.contentTypeHeader});\r\n let fileName = '附件';\r\n if (options?.fileName) {\r\n fileName = options.fileName;\r\n }\r\n FileSaver.saveAs(blob, fileName + mime.extension);\r\n }\r\n\r\n\r\n public static isXls(fileName: string): boolean {\r\n return fileName.toLowerCase().match(XLS_REGEX) != null;\r\n }\r\n\r\n public static identifyExportType(fileName?: string): ExportType {\r\n if (fileName && FileUtil.isXls(fileName)) {\r\n return ExportType.XLS;\r\n } else {\r\n return ExportType.XLSX;\r\n }\r\n }\r\n\r\n public static removeExtension(options?: Options):void {\r\n if (options)\r\n options.fileName = options.fileName?.split(DOT)[0];\r\n }\r\n}\r\n","import { Exporter } from './exporter';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\nimport { FileUtil } from '../file-util';\r\n\r\nexport abstract class FileExporter<T extends Options> implements Exporter<T> {\r\n public export(rows: any[], options?: T): void {\r\n if (!rows) {\r\n throw new Error('Empty json array is provided, rows parameter is mandatory!');\r\n }\r\n const mimeType = this.getMimeType();\r\n void this.createContent(rows, options).then((content) => {\r\n FileUtil.save(content, mimeType, options);\r\n });\r\n }\r\n\r\n public abstract createContent(rows: any[], options?: T): Promise<any>;\r\n public abstract getMimeType(): Mime;\r\n}\r\n","import { WorkSheet } from 'xlsx';\r\nimport { FileExporter } from './file-exporter';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\n\r\nexport abstract class WorksheetExporter<T extends Options> extends FileExporter<T> {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async createContent(rows: any[], options?: T): Promise<any> {\r\n const workSheet: WorkSheet = (await import('xlsx')).utils.json_to_sheet(rows, {\r\n skipHeader: true // we don't want to see object properties as our headers\r\n });\r\n return await this.workSheetToContent(workSheet, options);\r\n }\r\n public abstract workSheetToContent(workSheet: WorkSheet, options?: T): Promise<any>;\r\n public abstract override getMimeType(): Mime;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { WorksheetExporter } from './worksheet-exporter';\r\nimport { BOM, COMMA, MIME_CSV } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { TxtOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CsvExporterService extends WorksheetExporter<TxtOptions> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async workSheetToContent(worksheet: WorkSheet, options?: TxtOptions): Promise<any> {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const content = (await import('xlsx')).utils.sheet_to_csv(worksheet, { FS: options?.delimiter ?? COMMA });\r\n return BOM + content;\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_CSV;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FileExporter } from './file-exporter';\r\nimport { MIME_JSON } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JsonExporterService extends FileExporter<Options> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public async createContent(rows: any[], options?: Options): Promise<any> {\r\n return await new Promise((resolve) => {\r\n resolve(JSON.stringify(rows));\r\n });;\r\n }\r\n public getMimeType(): Mime {\r\n return MIME_JSON;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FileExporter } from './file-exporter';\r\nimport { MIME_TXT, RETURN, TAB } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { TxtOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TxtExporterService extends FileExporter<TxtOptions> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async createContent(rows: any[], options?: TxtOptions): Promise<any> {\r\n return await new Promise((resolve) => {\r\n let content = '';\r\n rows.forEach((element) => {\r\n content += Object.values(element).join(this._getDelimiter(options)) + RETURN;\r\n });\r\n\r\n resolve(JSON.stringify(content));\r\n });\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_TXT;\r\n }\r\n\r\n private _getDelimiter(options?: TxtOptions): string {\r\n if (options?.delimiter) {\r\n return options.delimiter;\r\n } else {\r\n return TAB;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { WorksheetExporter } from './worksheet-exporter';\r\nimport { MIME_EXCEL_XLS, TYPE_ARRAY, XLSX_COLS } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { ExcelOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XlsExporterService extends WorksheetExporter<ExcelOptions> {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async workSheetToContent(worksheet: WorkSheet, options: ExcelOptions = {} as ExcelOptions): Promise<any> {\r\n const { utils, write } = await import('xlsx');\r\n const workBook = utils.book_new();\r\n\r\n this._correctTypes(options);\r\n utils.book_append_sheet(workBook, worksheet, options.sheet);\r\n\r\n if (options.columnWidths) {\r\n worksheet[XLSX_COLS] = this._convertToWch(options.columnWidths);\r\n } else {\r\n const jsonTable = utils.sheet_to_json<string | number[]>(worksheet, {\r\n header: 1,\r\n raw: true,\r\n rawNumbers: true,\r\n });\r\n const maxRowSize = Math.max(...jsonTable.map(row => row.length));\r\n\r\n const wchArray = Array.from({ length: maxRowSize }).map((_, rowIndex) => {\r\n const row = Array.from({ length: jsonTable.length }).map(\r\n (_, i) => String(jsonTable[i][rowIndex] ?? '').length\r\n );\r\n\r\n return { wch: Math.max(...row)*3 > 40 ? 40 : Math.max(...row)*3 };\r\n });\r\n worksheet[XLSX_COLS] = wchArray;\r\n }\r\n\r\n return write(workBook, options);\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_EXCEL_XLS;\r\n }\r\n\r\n private _correctTypes(options: ExcelOptions): void {\r\n options.type ??= TYPE_ARRAY;\r\n (options as any).bookType = this.getMimeType().extension.replace('.', ''); // sheetjs requires bookingType for excel format\r\n }\r\n\r\n private _convertToWch(columnWidths: number[]): { wch: number }[] {\r\n return columnWidths.map(width => ({ wch: width }));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { XlsExporterService } from './xls-exporter.service';\r\nimport { MIME_EXCEL_XLSX } from '../../constants';\r\nimport { Mime } from '../../mime';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XlsxExporterService extends XlsExporterService {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public override getMimeType(): Mime {\r\n return MIME_EXCEL_XLSX;\r\n }\r\n}\r\n","import { Injectable, Injector, inject } from '@angular/core';\r\nimport { ExportType, Options } from '../options';\r\nimport { CsvExporterService } from './exporters/csv-exporter.service';\r\nimport { Exporter } from './exporters/exporter';\r\nimport { JsonExporterService } from './exporters/json-exporter.service';\r\nimport { TxtExporterService } from './exporters/txt-exporter.service';\r\nimport { XlsExporterService } from './exporters/xls-exporter.service';\r\nimport { XlsxExporterService } from './exporters/xlsx-exporter.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceLocatorService {\r\n private _injector = inject(Injector);\r\n\r\n public getService(exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json'): Exporter<Options> {\r\n switch (exportType) {\r\n case 'xls':\r\n case ExportType.XLS:\r\n return this._injector.get<XlsExporterService>(XlsExporterService);\r\n case 'xlsx':\r\n case ExportType.XLSX:\r\n return this._injector.get<XlsxExporterService>(XlsxExporterService);\r\n case 'json':\r\n case ExportType.JSON:\r\n return this._injector.get<JsonExporterService>(JsonExporterService);\r\n case 'txt':\r\n case ExportType.TXT:\r\n return this._injector.get<TxtExporterService>(TxtExporterService);\r\n case 'csv':\r\n case ExportType.CSV:\r\n return this._injector.get<CsvExporterService>(CsvExporterService);\r\n default:\r\n return this._injector.get<XlsxExporterService>(XlsxExporterService);\r\n }\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, inject } from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport { ExcelOptions, ExporterListInfo, ExportType, Options, TxtOptions } from './options';\r\nimport { Exporter } from './services/exporters/exporter';\r\nimport { ServiceLocatorService } from './services/service-locator.service';\r\n\r\n@Directive({\r\n selector: 'button[cmatDataExporter]'\r\n})\r\nexport class CmatDataExporterDirective implements OnChanges {\r\n @Input() dataSource: any[];\r\n @Input() exportColumns: ExporterListInfo[];\r\n @Input() options?: Options | ExcelOptions | TxtOptions;\r\n @Input() exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json';\r\n @Input() transformBoolean: boolean = true;\r\n @Input() transformDate: boolean = true;\r\n @Input() dateFormat: string = 'YYYY-MM-DD';\r\n\r\n private _serviceLocator = inject(ServiceLocatorService);\r\n private _data: any[];\r\n private _exporterService: Exporter<Options>;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.dataSource) {\r\n if (this.dataSource?.length > 0) {\r\n this._data = [];\r\n this._loadExporter(this.exportType);\r\n this._data = [\r\n // 首先添加一个包含列标题的对象\r\n this.exportColumns.map(column => ({ [column.code]: column.label }))\r\n .reduce((acc, curr) => ({ ...acc, ...curr }), {}) as Record<string, string>,\r\n // 然后添加用户数据对象,根据列配置提取相应的属性并进行转换\r\n ...this.dataSource.map(user =>\r\n this.exportColumns.reduce((acc, column) => {\r\n let value = user[column.code];\r\n\r\n // 如果允许布尔值转换且值为布尔类型,则转换为\"是\"、\"否\"\r\n if (this.transformBoolean && typeof value === 'boolean') {\r\n value = value ? '是' : '否';\r\n }\r\n // 如果允许日期转换且值为日期类型,则按dateFormat格式转换\r\n else if (this.transformDate && (value instanceof Date || typeof value === 'string')) {\r\n const datePattern = /^\\d{4}[-/]\\d{1,2}[-/]\\d{1,2}/;\r\n \r\n if (typeof value === 'string' && !datePattern.test(value)) {\r\n return { ...acc, [column.code]: value };\r\n }\r\n\r\n try {\r\n const dateValue = dayjs(value);\r\n if (dateValue.isValid()) {\r\n value = dateValue.format(this.dateFormat);\r\n }\r\n } catch {\r\n // 如果日期转换失败,保持原始值\r\n }\r\n }\r\n\r\n return { ...acc, [column.code]: value };\r\n }, {})\r\n )\r\n ] as (Record<string, string>)[];\r\n\r\n this._exporterService.export(this._data, this.options);\r\n }\r\n }\r\n }\r\n\r\n private _loadExporter(exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json'): void {\r\n this._exporterService = this._serviceLocator.getService(exportType);\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|