limitng 0.21.81 → 0.21.83
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitng-blob-response-handler.mjs","sources":["../../src/app/components/blob-response-handler/models/excelRaporuSonuc.ts","../../src/app/components/blob-response-handler/models/jsonToExcelParser.ts","../../src/app/components/blob-response-handler/blob-response-handler.service.ts","../../src/app/components/blob-response-handler/limitng-blob-response-handler.ts"],"sourcesContent":["import { VariableType } from 'limitng/api/models/fourDConstants';\nimport { XLHAlign, XLVAlign } from 'limitng/api/models/xl/xlConstants';\n\r\nexport type ExcelHucreDegeri = boolean | Date | number | string | null | undefined;\r\n\r\nexport class ExcelRaporuSonuc {\r\n book: IExcelRaporuBook = {\r\n author: 'MedPlan',\r\n activeSheetNo: 1\r\n };\r\n\r\n logo?: IExcelRaporuLogo;\r\n\r\n defaultFont: IExcelRaporuDefaultFont = {\r\n name: 'Calibri',\r\n size: 11\r\n };\r\n\r\n currentTableStyle = '';\r\n currentTable?: number;\r\n dosyaAdi?: string;\r\n sifirlariBasmaSayi = false;\r\n sifirlariBasmaTarih = false;\r\n\r\n // Eski format: üst bilgiler, notlar ve tablolar üst seviyede gelir\r\n ustBilgiler?: IExcelRaporuUstBilgiSatiri[];\r\n ustBilgi?: IExcelRaporuUstBilgiAyari;\r\n not?: IExcelRaporuNotAyari;\r\n notlar?: string[];\r\n tables?: IExcelRaporuTable[];\r\n\r\n // Yeni format: her sheet kendi tablolarını, üst bilgilerini ve notlarını taşır\r\n sheets: IExcelRaporuSheet[] = [];\r\n\r\n window: IExcelRaporuWindow = {\r\n displayGridLines: false\r\n };\r\n}\r\n\r\ninterface IExcelRaporuFont {\r\n name?: string;\r\n size?: number;\r\n color?: string;\r\n style?: number;\r\n}\r\n\r\ninterface IExcelRaporuDefaultFont {\r\n name: string;\r\n size: number;\r\n}\r\n\r\ninterface IExcelRaporuLogo {\r\n genislik?: number;\r\n yukseklik?: number;\r\n ustMarjin?: number;\r\n solMarjin?: number;\r\n ebatPixelmi?: boolean;\r\n ebat?: string;\r\n konum?: string;\r\n}\r\n\r\ninterface IExcelRaporuBook {\r\n author: string;\r\n activeSheetNo: number;\r\n subject?: string;\r\n comments?: string;\r\n}\r\n\r\ninterface IExcelRaporuWindow {\r\n displayGridLines: boolean;\r\n}\r\n\r\ninterface IExcelRaporuUstBilgiSatiri {\r\n rowNo?: number;\r\n ustBilgi: string;\r\n font?: IExcelRaporuFont;\r\n}\r\n\r\ninterface IExcelRaporuUstBilgiAyari {\r\n font?: IExcelRaporuFont;\r\n columnFontColors?: string[];\r\n columnFontStyles?: string[];\r\n}\r\n\r\ninterface IExcelRaporuNotAyari {\r\n font?: IExcelRaporuFont;\r\n}\r\n\r\ninterface IExcelRaporuBorder {\r\n type: string;\r\n lineStyle: string;\r\n weight: string;\r\n color: string;\r\n}\r\n\r\ninterface IExcelRaporuInterior {\r\n color: string;\r\n}\r\n\r\ninterface IExcelRaporuTableBand {\r\n basilacak?: boolean;\r\n satirSayisi?: number;\r\n ustBosluk?: number;\r\n font?: IExcelRaporuFont;\r\n interior?: IExcelRaporuInterior;\r\n border?: IExcelRaporuBorder;\r\n}\r\n\r\ninterface IExcelRaporuTableData {\r\n font?: IExcelRaporuFont;\r\n interior?: IExcelRaporuInterior;\r\n border?: IExcelRaporuBorder;\r\n}\r\n\r\ninterface IExcelRaporuColumnGroup {\r\n groupEnd: string;\r\n groupName: string;\r\n groupStart: string;\r\n}\r\n\r\ninterface IExcelRaporuTableColumnHeader {\r\n title: string;\r\n horizontalAlignment?: XLHAlign;\r\n verticalAlignment?: XLVAlign;\r\n}\r\n\r\ninterface IExcelRaporuTableColumnFooter {\r\n isFunction?: boolean;\r\n function?: number;\r\n title?: string;\r\n horizontalAlignment?: XLHAlign;\r\n verticalAlignment?: XLVAlign;\r\n}\r\n\r\ninterface IExcelRaporuTableColumn {\n property: string;\n arrayType: VariableType;\n header: IExcelRaporuTableColumnHeader;\r\n footer?: IExcelRaporuTableColumnFooter;\r\n horizontalAlignment?: XLHAlign;\r\n verticalAlignment?: XLVAlign;\r\n format?: number;\r\n width?: number;\r\n columnNo?: number;\r\n htmlKoduGelebilir?: boolean;\r\n}\r\n\r\ninterface IExcelRaporuSatirRenkBilgisi {\r\n color: string;\r\n rowNo: number;\r\n}\r\n\r\ninterface IExcelRaporuSatirYuksekligi {\r\n height: number;\r\n rowNo: number;\r\n}\r\n\r\ninterface IExcelRaporuKolonRenkBilgisi {\r\n color: string;\r\n columnNo: number;\r\n}\r\n\r\ninterface IExcelRaporuTable {\r\n columns: IExcelRaporuTableColumn[];\r\n columnGroup?: IExcelRaporuColumnGroup[];\r\n header?: IExcelRaporuTableBand;\r\n data?: IExcelRaporuTableData;\r\n footer?: IExcelRaporuTableBand;\r\n tableNo?: number;\r\n collection: Record<string, ExcelHucreDegeri>[];\r\n sol?: number;\r\n ust?: number;\r\n veriKaynagi?: string;\r\n sheetName?: string;\r\n hiddenRows?: number[];\r\n sort?: number[];\r\n rows?: string[];\r\n autoFit?: boolean;\r\n columnFontNames?: string[];\r\n columnFontSizes?: number[];\r\n columnFontColors?: string[];\r\n columnFontStyles?: number[];\r\n columnInteriorColors?: Array<string | IExcelRaporuKolonRenkBilgisi>;\r\n columnHeaderFontNames?: string[];\r\n columnHeaderFontSizes?: number[];\r\n columnHeaderFontColors?: string[];\r\n columnHeaderFontStyles?: number[];\r\n columnHeaderInteriorColors?: string[];\r\n columnFooterFontNames?: string[];\r\n columnFooterFontSizes?: number[];\r\n columnFooterFontColors?: string[];\r\n columnFooterFontStyles?: number[];\r\n columnFooterInteriorColors?: string[];\r\n rowFontNames?: string[];\r\n rowFontSizes?: number[];\r\n rowFontColors?: IExcelRaporuSatirRenkBilgisi[];\r\n rowFontStyles?: number[];\r\n rowInteriorColors?: IExcelRaporuSatirRenkBilgisi[];\r\n rowHeights?: IExcelRaporuSatirYuksekligi[];\r\n rowFormats?: string[];\r\n rowHorizontalAlignments?: XLHAlign[];\r\n rowVerticalAlignments?: XLVAlign[];\r\n cellFontNames?: string[];\r\n cellFontSizes?: number[];\r\n cellFontColors?: string[];\r\n cellFontStyles?: number[];\r\n cellInteriorColors?: string[];\r\n cellFormats?: string[];\r\n cellHorizontalAlignments?: XLHAlign[];\r\n cellVerticalAlignments?: XLVAlign[];\r\n rangeFontNames?: string[];\r\n rangeFontSizes?: number[];\r\n rangeFontColors?: string[];\r\n rangeFontStyles?: number[];\r\n rangeInteriorColors?: string[];\r\n rangeFormats?: string[];\r\n rangeHorizontalAlignments?: XLHAlign[];\r\n rangeVerticalAlignments?: XLVAlign[];\r\n}\r\n\r\ninterface IExcelRaporuPageSetup {\r\n orientation?: number;\r\n leftMargin?: number;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n rightMargin?: number;\r\n headerMargin?: number;\r\n footerMargin?: number;\r\n centerHorizontally?: boolean;\r\n centerVertically?: boolean;\r\n centerHeader?: string;\r\n leftHeader?: string;\r\n rightHeader?: string;\r\n centerFooter?: string;\r\n leftFooter?: string;\r\n rightFooter?: string;\r\n fitToPagesTall?: number;\r\n fitToPagesWide?: number;\r\n fitToPagesTAut?: boolean;\r\n fitToPagesWAut?: boolean;\r\n zoom?: boolean | number;\r\n printArea?: string;\r\n printAreaVar?: string;\r\n}\r\n\r\ninterface IExcelRaporuSheet {\r\n sheetNo?: number;\r\n sheetName?: string;\r\n zoom?: number;\r\n tables?: IExcelRaporuTable[];\r\n ustBilgi?: IExcelRaporuUstBilgiAyari;\r\n ustBilgiler?: IExcelRaporuUstBilgiSatiri[];\r\n notlar?: string[];\r\n not?: IExcelRaporuNotAyari;\r\n pageSetup?: IExcelRaporuPageSetup;\r\n}\r\n","import ExcelJS from 'exceljs';\r\nimport saveAs from 'file-saver';\r\nimport { FontStyle, NumberFormatlar, VariableType } from 'limitng/api/models/fourDConstants';\nimport { XLHAlign, XLVAlign } from 'limitng/api/models/xl/xlConstants';\r\nimport { ExcelRaporuSonuc } from './excelRaporuSonuc';\r\n\r\ntype TExcelTable = NonNullable<ExcelRaporuSonuc['tables']>[number];\r\ntype TExcelBook = ExcelRaporuSonuc['book'];\r\ntype TExcelTableColumn = TExcelTable['columns'][number];\ntype TExcelTableColumnInput = Omit<TExcelTableColumn, 'arrayType'> & Partial<Pick<TExcelTableColumn, 'arrayType'>>;\ntype TExcelTableRow = TExcelTable['collection'][number];\r\ntype TExcelSheet = ExcelRaporuSonuc['sheets'][number];\r\ntype TExcelPageSetup = NonNullable<TExcelSheet['pageSetup']>;\r\ntype TExcelUstBilgi = NonNullable<ExcelRaporuSonuc['ustBilgiler']>[number];\r\ntype TDefaultFont = ExcelRaporuSonuc['defaultFont'];\r\n\r\ninterface IExcelFont {\r\n color?: string;\r\n name?: string;\r\n size?: number;\r\n style?: number;\r\n}\r\n\r\ninterface ISheetGrup {\r\n sheetName: string;\r\n sheetNo?: number;\r\n tables: TExcelTable[];\r\n}\r\n\r\ninterface IHazirHucreDegeri {\r\n deger: ExcelJS.CellValue;\r\n fontColorArgb?: string;\r\n}\r\n\r\nexport interface IJsonToExcelSheetOptions {\r\n pageSetup?: TExcelSheet['pageSetup'];\r\n zoom?: number;\r\n}\r\n\r\nexport interface IJsonToExcelTableOptions {\r\n autoFit?: TExcelTable['autoFit'];\r\n data?: TExcelTable['data'];\r\n footer?: TExcelTable['footer'];\r\n header?: TExcelTable['header'];\r\n sol?: TExcelTable['sol'];\r\n ust?: TExcelTable['ust'];\r\n}\r\n\r\nexport class JsonToExcelTableBuilder<TRow extends TExcelTableRow = TExcelTableRow> {\r\n constructor(private readonly table: TExcelTable) {}\r\n\r\n addColumn(column: TExcelTableColumnInput): this {\n this.table.columns.push({\n arrayType: VariableType.text,\n ...column\n });\n return this;\n }\n\r\n setRows(rows: TRow[]): this {\r\n this.table.collection = rows;\r\n return this;\r\n }\r\n\r\n setStartColumn(sol: number): this {\r\n this.table.sol = sol;\r\n return this;\r\n }\r\n\r\n setStartRow(ust: number): this {\r\n this.table.ust = ust;\r\n return this;\r\n }\r\n\r\n getColumnSayisi(): number {\r\n return this.table.columns.length;\r\n }\r\n}\r\n\r\nexport class JsonToExcelSheetBuilder {\r\n constructor(private readonly sheet: TExcelSheet) {}\r\n\r\n addTable<TRow extends TExcelTableRow = TExcelTableRow>(\r\n rows: TRow[],\r\n options: IJsonToExcelTableOptions = {}\r\n ): JsonToExcelTableBuilder<TRow> {\r\n const table: TExcelTable = {\r\n collection: rows,\r\n columns: [],\r\n ...(options.autoFit !== undefined && { autoFit: options.autoFit }),\r\n ...(options.data && { data: options.data }),\r\n ...(options.footer && { footer: options.footer }),\r\n ...(options.header && { header: options.header }),\r\n ...(options.sol !== undefined && { sol: options.sol }),\r\n ...(options.ust !== undefined && { ust: options.ust })\r\n };\r\n\r\n this.sheet.tables ??= [];\r\n this.sheet.tables.push(table);\r\n\r\n return new JsonToExcelTableBuilder<TRow>(table);\r\n }\r\n\r\n addUstBilgi(ustBilgi: string, font?: TExcelUstBilgi['font']): this {\r\n this.sheet.ustBilgiler ??= [];\r\n this.sheet.ustBilgiler.push(JsonToExcelParser.ustBilgiEkle(ustBilgi, font));\r\n return this;\r\n }\r\n\r\n getUstBilgiSayisi(): number {\r\n return this.sheet.ustBilgiler?.length ?? 0;\r\n }\r\n\r\n getSheetNo(): number | undefined {\r\n return this.sheet.sheetNo;\r\n }\r\n\r\n setSheetName(sheetName: string): this {\r\n this.sheet.sheetName = sheetName;\r\n return this;\r\n }\r\n\r\n setZoom(zoom: number): this {\r\n this.sheet.zoom = zoom;\r\n return this;\r\n }\r\n}\r\n\r\nexport class JsonToExcelReportBuilder {\r\n private readonly sonuc = new ExcelRaporuSonuc();\r\n\r\n addSheet(sheetName: string, options: IJsonToExcelSheetOptions = {}): JsonToExcelSheetBuilder {\r\n const sheet: TExcelSheet = {\r\n sheetName,\r\n sheetNo: this.sonuc.sheets.length + 1,\r\n ...(options.pageSetup && { pageSetup: options.pageSetup }),\r\n ...(options.zoom !== undefined && { zoom: options.zoom })\r\n };\r\n\r\n this.sonuc.sheets.push(sheet);\r\n\r\n return new JsonToExcelSheetBuilder(sheet);\r\n }\r\n\r\n build(): ExcelRaporuSonuc {\r\n return this.sonuc;\r\n }\r\n\r\n setAuthor(author: string): this {\r\n this.sonuc.book.author = author;\r\n return this;\r\n }\r\n\r\n setCurrentTableStyle(currentTableStyle: string): this {\r\n this.sonuc.currentTableStyle = currentTableStyle;\r\n return this;\r\n }\r\n\r\n setSubject(subject: string): this {\r\n this.sonuc.book.subject = subject;\r\n return this;\r\n }\r\n}\r\n\r\nexport class JsonToExcelParser {\r\n static async indir(sonuc: ExcelRaporuSonuc, dosyaAdi: string): Promise<void> {\r\n const blob = await this.blobOlustur(sonuc);\r\n const normalizeDosyaAdi = this.dosyaAdiDuzenle(dosyaAdi);\r\n saveAs(blob, `${normalizeDosyaAdi}.xlsx`);\r\n }\r\n\r\n static async blobOlustur(sonuc: ExcelRaporuSonuc): Promise<Blob> {\r\n const workbook = this.workbookOlustur(sonuc);\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n\r\n return new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n }\r\n\r\n static standartPageSetupOlustur(): TExcelPageSetup {\r\n return {\r\n bottomMargin: 1,\r\n centerHorizontally: true,\r\n centerVertically: true,\r\n fitToPagesTall: 1,\r\n fitToPagesWide: 1,\r\n leftMargin: 1,\r\n orientation: 2,\r\n rightMargin: 1,\r\n topMargin: 1\r\n };\r\n }\r\n\r\n static ustBilgiEkle(ustBilgi: string, font?: TExcelUstBilgi['font']): TExcelUstBilgi {\r\n return font ? { font, ustBilgi } : { ustBilgi };\r\n }\r\n\r\n static raporOlustur(): JsonToExcelReportBuilder {\r\n return new JsonToExcelReportBuilder();\r\n }\r\n\r\n private static workbookOlustur(sonuc: ExcelRaporuSonuc): ExcelJS.Workbook {\r\n const workbook = new ExcelJS.Workbook();\r\n workbook.created = new Date();\r\n workbook.calcProperties.fullCalcOnLoad = true;\r\n\r\n const gridLinesGorunur = sonuc.window.displayGridLines;\r\n\r\n if (this.yeniYapiMi(sonuc)) {\r\n workbook.creator = sonuc.book.author || 'MedPlan';\r\n workbook.subject = '';\r\n workbook.description = '';\r\n this.yeniFormatSheetsYaz(workbook, sonuc, gridLinesGorunur);\r\n } else {\r\n workbook.creator = sonuc.book.author || 'MedPlan';\r\n workbook.subject = this.konuVer(sonuc.book, sonuc.ustBilgiler?.[0]?.ustBilgi);\r\n workbook.description = sonuc.book.comments || '';\r\n this.eskiFormatSheetsYaz(workbook, sonuc, gridLinesGorunur);\r\n }\r\n\r\n this.aktifSayfayiAyarla(workbook, sonuc.book.activeSheetNo, workbook.worksheets.length);\r\n\r\n return workbook;\r\n }\r\n\r\n private static yeniYapiMi(sonuc: ExcelRaporuSonuc): boolean {\r\n const ilkSheet = sonuc.sheets[0] as unknown as { tables?: unknown };\r\n if (Array.isArray(ilkSheet?.tables)) {\r\n return true;\r\n }\r\n\r\n const runtimeSonuc = sonuc as unknown as { tables?: unknown };\r\n\r\n return !Array.isArray(runtimeSonuc.tables);\r\n }\r\n\r\n private static yeniFormatSheetsYaz(workbook: ExcelJS.Workbook, sonuc: ExcelRaporuSonuc, gridLinesGorunur: boolean): void {\r\n for (let index = 0; index < sonuc.sheets.length; index++) {\r\n const sheet = sonuc.sheets[index]!;\r\n const sheetAdi = this.sayfaAdiDuzenle(sheet.sheetName || 'Rapor', index + 1);\r\n const worksheet = workbook.addWorksheet(sheetAdi);\r\n const zoomScale = sheet.zoom && sheet.zoom > 0 ? sheet.zoom : undefined;\r\n worksheet.views = [{ showGridLines: gridLinesGorunur, ...(zoomScale !== undefined && { zoomScale }) }];\r\n this.sayfaDuzeniniBelirle(worksheet, sheet);\r\n\r\n const ustBilgiler = sheet.ustBilgiler ?? [];\r\n this.yeniFormatUstBilgileriYaz(worksheet, ustBilgiler, sonuc.defaultFont);\r\n\r\n let sonSatir = ustBilgiler.length + 1;\r\n for (const table of sheet.tables ?? []) {\r\n sonSatir = Math.max(sonSatir, this.tabloyuYaz(worksheet, sonuc, table));\r\n }\r\n\r\n if (sheet.notlar?.length) {\r\n this.notlariYazList(worksheet, sheet.notlar, sheet.not?.font, sonSatir + 2, sonuc.defaultFont);\r\n }\r\n }\r\n\r\n if (sonuc.sheets.length === 0) {\r\n const worksheet = workbook.addWorksheet('Rapor');\r\n worksheet.views = [{ showGridLines: gridLinesGorunur }];\r\n }\r\n }\r\n\r\n private static eskiFormatSheetsYaz(workbook: ExcelJS.Workbook, sonuc: ExcelRaporuSonuc, gridLinesGorunur: boolean): void {\r\n const tablesBySheet = this.sheetBazliTablolar(sonuc);\r\n const ustBilgiler = sonuc.ustBilgiler ?? [];\r\n const notlar = sonuc.notlar ?? [];\r\n\r\n for (const sheetGrup of tablesBySheet) {\r\n const worksheet = workbook.addWorksheet(sheetGrup.sheetName);\r\n worksheet.views = [{ showGridLines: gridLinesGorunur }];\r\n\r\n this.ustBilgileriYaz(worksheet, ustBilgiler, sonuc.defaultFont);\r\n\r\n let sonSatir = 1;\r\n for (const table of sheetGrup.tables) {\r\n sonSatir = Math.max(sonSatir, this.tabloyuYaz(worksheet, sonuc, table));\r\n }\r\n\r\n this.notlariYazList(worksheet, notlar, sonuc.not?.font, sonSatir + 2, sonuc.defaultFont);\r\n }\r\n\r\n if (tablesBySheet.length === 0) {\r\n const worksheet = workbook.addWorksheet(this.bosRaporSheetAdiniVer(sonuc));\r\n worksheet.views = [{ showGridLines: gridLinesGorunur }];\r\n this.ustBilgileriYaz(worksheet, ustBilgiler, sonuc.defaultFont);\r\n this.notlariYazList(worksheet, notlar, sonuc.not?.font, ustBilgiler.length + 2, sonuc.defaultFont);\r\n }\r\n }\r\n\r\n private static sheetBazliTablolar(sonuc: ExcelRaporuSonuc): ISheetGrup[] {\r\n const grouped = new Map<string, ISheetGrup>();\r\n\r\n for (const table of sonuc.tables ?? []) {\r\n const sheetNo = this.tableSheetNoVer(table);\r\n const sheetKey = this.sheetKeyVer(table, sheetNo, grouped.size + 1);\r\n const existing = grouped.get(sheetKey);\r\n\r\n if (existing) {\r\n existing.tables.push(table);\r\n continue;\r\n }\r\n\r\n grouped.set(sheetKey, {\r\n sheetName: this.sheetAdiniBelirle(sonuc, table, grouped.size + 1, sheetNo),\r\n ...(sheetNo !== undefined && { sheetNo }),\r\n tables: [table]\r\n });\r\n }\r\n\r\n return Array.from(grouped.values()).sort((a, b) => this.sheetGrupSirasiVer(a) - this.sheetGrupSirasiVer(b));\r\n }\r\n\r\n private static tableSheetNoVer(table: TExcelTable): number | undefined {\r\n const runtimeTable = table as TExcelTable & { sheetNo?: number };\r\n\r\n return runtimeTable.sheetNo;\r\n }\r\n\r\n private static sheetKeyVer(table: TExcelTable, sheetNo: number | undefined, index: number): string {\r\n if (sheetNo !== undefined) {\r\n return `sheet-no-${sheetNo}`;\r\n }\r\n\r\n const eskiSheetName = table.sheetName?.trim();\r\n if (eskiSheetName) {\r\n return `sheet-name-${eskiSheetName}`;\r\n }\r\n\r\n return `sheet-index-${index}`;\r\n }\r\n\r\n private static sheetAdiniBelirle(\r\n sonuc: ExcelRaporuSonuc,\r\n table: TExcelTable,\r\n index: number,\r\n sheetNo: number | undefined\r\n ): string {\r\n const jsonSheet = this.jsonSheetBul(sonuc.sheets, sheetNo, index);\r\n if (jsonSheet?.sheetName?.trim()) {\r\n return this.sayfaAdiDuzenle(jsonSheet.sheetName, index);\r\n }\r\n\r\n return this.sayfaAdiDuzenle(table.sheetName || 'Rapor', index);\r\n }\r\n\r\n private static jsonSheetBul(\r\n sheets: TExcelSheet[],\r\n sheetNo: number | undefined,\r\n index: number\r\n ): TExcelSheet | undefined {\r\n if (sheetNo !== undefined) {\r\n return sheets.find(sheet => sheet.sheetNo === sheetNo);\r\n }\r\n\r\n return sheets.find(sheet => sheet.sheetNo === index) ?? sheets[index - 1];\r\n }\r\n\r\n private static konuVer(book: TExcelBook, ilkUstBilgi: string | undefined): string {\r\n return book.subject || ilkUstBilgi || 'Rapor';\r\n }\r\n\r\n private static bosRaporSheetAdiniVer(sonuc: ExcelRaporuSonuc): string {\r\n const ilkSheetAdi = sonuc.sheets[0]?.sheetName;\r\n\r\n return this.sayfaAdiDuzenle(ilkSheetAdi || 'Rapor', 1);\r\n }\r\n\r\n private static aktifSayfayiAyarla(workbook: ExcelJS.Workbook, activeSheetNo: number, toplamSheetSayisi: number) {\r\n const aktifTab = this.aktifTabNoVer(activeSheetNo, toplamSheetSayisi);\r\n if (aktifTab === undefined) {\r\n return;\r\n }\r\n\r\n workbook.views = [{\r\n activeTab: aktifTab,\r\n firstSheet: aktifTab,\r\n height: 20000,\r\n visibility: 'visible',\r\n width: 20000,\r\n x: 0,\r\n y: 0\r\n }];\r\n }\r\n\r\n private static aktifTabNoVer(activeSheetNo: number, toplamSheetSayisi: number): number | undefined {\r\n if (toplamSheetSayisi <= 0) {\r\n return undefined;\r\n }\r\n\r\n const aktifSheetNo = Number.isFinite(activeSheetNo) && activeSheetNo > 0 ? activeSheetNo : 1;\r\n\r\n return Math.min(aktifSheetNo - 1, toplamSheetSayisi - 1);\r\n }\r\n\r\n private static sheetGrupSirasiVer(sheetGrup: ISheetGrup): number {\r\n return sheetGrup.sheetNo ?? Number.MAX_SAFE_INTEGER;\r\n }\r\n\r\n private static yeniFormatUstBilgileriYaz(\r\n worksheet: ExcelJS.Worksheet,\r\n ustBilgiler: TExcelUstBilgi[],\r\n defaultFont: TDefaultFont\r\n ): void {\r\n for (let index = 0; index < ustBilgiler.length; index++) {\r\n const ustBilgi = ustBilgiler[index]!;\r\n const hucre = worksheet.getCell(index + 1, 1);\r\n hucre.value = ustBilgi.ustBilgi;\r\n this.hucreFontunuUygula(hucre, ustBilgi.font, defaultFont);\r\n hucre.alignment = { horizontal: 'left', vertical: 'middle', wrapText: false };\r\n }\r\n }\r\n\r\n private static ustBilgileriYaz(\r\n worksheet: ExcelJS.Worksheet,\r\n ustBilgiler: TExcelUstBilgi[],\r\n defaultFont: TDefaultFont\r\n ): void {\r\n for (const ustBilgi of ustBilgiler) {\r\n const hucre = worksheet.getCell(ustBilgi.rowNo ?? 1, 1);\r\n hucre.value = ustBilgi.ustBilgi;\r\n this.hucreFontunuUygula(hucre, ustBilgi.font, defaultFont);\r\n hucre.alignment = { horizontal: 'left', vertical: 'middle', wrapText: false };\r\n }\r\n }\r\n\r\n private static notlariYazList(\r\n worksheet: ExcelJS.Worksheet,\r\n notlar: string[],\r\n notFont: IExcelFont | undefined,\r\n baslangicSatiri: number,\r\n defaultFont: TDefaultFont\r\n ): void {\r\n let satirNo = baslangicSatiri;\r\n for (const not of notlar) {\r\n const cell = worksheet.getCell(satirNo, 1);\r\n cell.value = not;\r\n this.hucreFontunuUygula(cell, notFont, defaultFont);\r\n cell.alignment = { vertical: 'middle', wrapText: true };\r\n satirNo++;\r\n }\r\n }\r\n\r\n private static sayfaDuzeniniBelirle(worksheet: ExcelJS.Worksheet, sheet: TExcelSheet): void {\r\n const { pageSetup } = sheet;\r\n if (!pageSetup) {\r\n return;\r\n }\r\n\r\n if (pageSetup.orientation === 2) {\r\n worksheet.pageSetup.orientation = 'landscape';\r\n } else if (pageSetup.orientation === 1) {\r\n worksheet.pageSetup.orientation = 'portrait';\r\n }\r\n\r\n const hasMargin =\r\n pageSetup.leftMargin !== undefined ||\r\n pageSetup.rightMargin !== undefined ||\r\n pageSetup.topMargin !== undefined ||\r\n pageSetup.bottomMargin !== undefined ||\r\n pageSetup.headerMargin !== undefined ||\r\n pageSetup.footerMargin !== undefined;\r\n\r\n if (hasMargin) {\r\n worksheet.pageSetup.margins = {\r\n left: pageSetup.leftMargin ?? 0.7,\r\n right: pageSetup.rightMargin ?? 0.7,\r\n top: pageSetup.topMargin ?? 0.75,\r\n bottom: pageSetup.bottomMargin ?? 0.75,\r\n header: pageSetup.headerMargin ?? 0.3,\r\n footer: pageSetup.footerMargin ?? 0.3\r\n };\r\n }\r\n\r\n if (pageSetup.centerHorizontally !== undefined) {\r\n worksheet.pageSetup.horizontalCentered = pageSetup.centerHorizontally;\r\n }\r\n if (pageSetup.centerVertically !== undefined) {\r\n worksheet.pageSetup.verticalCentered = pageSetup.centerVertically;\r\n }\r\n\r\n const fitTall = pageSetup.fitToPagesTall;\r\n const fitWide = pageSetup.fitToPagesWide;\r\n if (fitTall !== undefined || fitWide !== undefined || pageSetup.fitToPagesTAut || pageSetup.fitToPagesWAut) {\r\n worksheet.pageSetup.fitToPage = true;\r\n worksheet.pageSetup.fitToHeight = pageSetup.fitToPagesTAut ? 0 : (fitTall ?? 1);\r\n worksheet.pageSetup.fitToWidth = pageSetup.fitToPagesWAut ? 0 : (fitWide ?? 1);\r\n }\r\n\r\n if (typeof pageSetup.zoom === 'number' && pageSetup.zoom > 0) {\r\n worksheet.pageSetup.scale = pageSetup.zoom;\r\n }\r\n\r\n if (pageSetup.printArea) {\r\n worksheet.pageSetup.printArea = pageSetup.printArea;\r\n }\r\n\r\n const pageHeader = this.baslikAltbilgiMetniOlustur(pageSetup.leftHeader, pageSetup.centerHeader, pageSetup.rightHeader);\r\n const pageFooter = this.baslikAltbilgiMetniOlustur(pageSetup.leftFooter, pageSetup.centerFooter, pageSetup.rightFooter);\r\n if (pageHeader) {\r\n worksheet.headerFooter.oddHeader = pageHeader;\r\n }\r\n if (pageFooter) {\r\n worksheet.headerFooter.oddFooter = pageFooter;\r\n }\r\n }\r\n\r\n private static baslikAltbilgiMetniOlustur(sol?: string, orta?: string, sag?: string): string | undefined {\r\n const parcalar: string[] = [];\r\n if (sol) {\r\n parcalar.push(`&L${sol}`);\r\n }\r\n if (orta) {\r\n parcalar.push(`&C${orta}`);\r\n }\r\n if (sag) {\r\n parcalar.push(`&R${sag}`);\r\n }\r\n return parcalar.length ? parcalar.join('') : undefined;\r\n }\r\n\r\n private static tabloyuYaz(worksheet: ExcelJS.Worksheet, sonuc: ExcelRaporuSonuc, table: TExcelTable): number {\r\n if (!table.columns.length) {\r\n return table.ust ?? 1;\r\n }\r\n\r\n const startRow = Math.max(1, table.ust ?? 1);\r\n const startCol = Math.max(1, table.sol ?? 1);\r\n const gecerliTableStyle = this.gecerliTableStyleVer(sonuc.currentTableStyle);\r\n const headerTitlelari = table.columns.map(column => this.baslikMetniniHazirla(column.header.title || ''));\r\n const gorunenBaslikMetinleri = headerTitlelari.map(title => title.replaceAll('\\n', ' '));\r\n const tabloKolonAdlari = this.benzersizKolonAdlariOlustur(gorunenBaslikMetinleri);\r\n\r\n const headerFont = table.header?.font;\r\n const uygulanacakHeaderFont = headerFont?.color ? headerFont : {\r\n ...headerFont,\r\n color: 'FFFFFFFF'\r\n };\r\n const dataFont = table.data?.font;\r\n const hiddenRowSet = new Set(table.hiddenRows ?? []);\r\n\r\n const formulCeller: Array<{\r\n colIndex: number;\r\n column: TExcelTableColumn;\r\n formula: ExcelJS.CellFormulaValue;\r\n rowIndex: number;\r\n }> = [];\r\n const hucreFontRenkleri: Array<Array<string | undefined>> = [];\r\n const satirlar = table.collection.map((rowData, rowIndex) =>\r\n table.columns.map((column, colIndex) => {\r\n const hazirHucre = this.hucreDegeriniHazirla(rowData, column, sonuc.sifirlariBasmaSayi);\r\n hucreFontRenkleri[rowIndex] ??= [];\r\n hucreFontRenkleri[rowIndex]![colIndex] = hazirHucre.fontColorArgb;\r\n\r\n if (hazirHucre.deger !== null && typeof hazirHucre.deger === 'object' && 'formula' in hazirHucre.deger) {\r\n formulCeller.push({ rowIndex, colIndex, column, formula: hazirHucre.deger as ExcelJS.CellFormulaValue });\r\n return '' as ExcelJS.CellValue;\r\n }\r\n return hazirHucre.deger;\r\n })\r\n );\r\n\r\n this.kolonGrubuYaz(worksheet, startRow, startCol, table);\r\n\r\n const tableStyle = this.tableStyleDonustur(gecerliTableStyle);\r\n worksheet.addTable({\r\n name: this.tabloAdiOlustur(worksheet.name, startRow, startCol),\r\n ref: worksheet.getCell(startRow, startCol).address,\r\n headerRow: true,\r\n totalsRow: false,\r\n ...(tableStyle && { style: tableStyle }),\r\n columns: tabloKolonAdlari.map(ad => ({ name: ad, filterButton: true })),\r\n rows: satirlar\r\n });\r\n\r\n this.kolonGenislikleriniUygula(worksheet, startCol, table.columns, satirlar);\r\n\r\n const headerRow = worksheet.getRow(startRow);\r\n for (let colIndex = 0; colIndex < table.columns.length; colIndex++) {\r\n const column = table.columns[colIndex]!;\r\n const cell = headerRow.getCell(startCol + colIndex);\r\n cell.alignment = {\r\n horizontal: this.yatayHizaDonustur(column.header.horizontalAlignment),\r\n vertical: 'bottom',\r\n wrapText: false\r\n };\r\n this.hucreFontunuUygula(cell, uygulanacakHeaderFont, sonuc.defaultFont);\r\n }\r\n\r\n for (let rowIndex = 0; rowIndex < table.collection.length; rowIndex++) {\r\n const wsRow = worksheet.getRow(startRow + 1 + rowIndex);\r\n const satir1Bazli = rowIndex + 1;\r\n\r\n if (hiddenRowSet.has(satir1Bazli)) {\r\n wsRow.hidden = true;\r\n }\r\n\r\n const rowHeight = table.rowHeights?.find(rh => rh.rowNo === satir1Bazli);\r\n if (rowHeight?.height) {\r\n wsRow.height = rowHeight.height;\r\n }\r\n\r\n for (let colIndex = 0; colIndex < table.columns.length; colIndex++) {\r\n const column = table.columns[colIndex]!;\r\n const cell = wsRow.getCell(startCol + colIndex);\r\n const hucreDegeri = satirlar[rowIndex]![colIndex]!;\r\n cell.value = hucreDegeri;\r\n this.hucreFontunuUygula(cell, dataFont, sonuc.defaultFont);\r\n const hucreFontRengi = hucreFontRenkleri[rowIndex]?.[colIndex];\r\n if (hucreFontRengi) {\r\n cell.font = { ...(cell.font ?? {}), color: { argb: hucreFontRengi } };\r\n }\r\n const numFmt = this.numberFormatDonustur(column.format);\r\n if (numFmt) {\r\n cell.numFmt = numFmt;\r\n } else if (hucreDegeri instanceof Date) {\r\n cell.numFmt = this.varsayilanTarihFormatiniVer();\r\n }\r\n cell.alignment = {\r\n horizontal: this.hucreYatayHizasiniBelirle(hucreDegeri, column),\r\n vertical: this.dikeyHizaDonustur(column.verticalAlignment),\r\n wrapText: false\r\n };\r\n\r\n // Sütun rengi\r\n const colFontColor = table.columnFontColors?.[colIndex];\r\n if (colFontColor) {\r\n const argb = this.argbDonustur(colFontColor);\r\n if (argb) {\r\n cell.font = { ...(cell.font ?? {}), color: { argb } };\r\n }\r\n }\r\n const colIntColor = this.kolonRenginiBul(table.columnInteriorColors, colIndex);\r\n if (colIntColor) {\r\n const argb = this.argbDonustur(colIntColor);\r\n if (argb) {\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb } };\r\n }\r\n }\r\n\r\n // Satır rengi (sütun rengini ezer)\r\n const rowFontColor = table.rowFontColors?.find(rc => rc.rowNo === satir1Bazli);\r\n if (rowFontColor) {\r\n const argb = this.argbDonustur(rowFontColor.color);\r\n if (argb) {\r\n cell.font = { ...(cell.font ?? {}), color: { argb } };\r\n }\r\n }\r\n const rowIntColor = table.rowInteriorColors?.find(rc => rc.rowNo === satir1Bazli);\r\n if (rowIntColor) {\r\n const argb = this.argbDonustur(rowIntColor.color);\r\n if (argb) {\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb } };\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (const { rowIndex, colIndex, column, formula } of formulCeller) {\r\n const cell = worksheet.getRow(startRow + 1 + rowIndex).getCell(startCol + colIndex);\r\n cell.value = formula;\r\n cell.alignment = {\r\n ...(cell.alignment ?? {}),\r\n horizontal: this.hucreYatayHizasiniBelirle(formula, column)\r\n };\r\n }\r\n\r\n let sonSatir = startRow + table.collection.length;\r\n\r\n // Footer satırları\r\n const footer = table.footer;\r\n if (footer?.basilacak) {\r\n const ustBosluk = footer.ustBosluk ?? 0;\r\n const satirSayisi = footer.satirSayisi ?? 1;\r\n const footerBasSatir = sonSatir + 1 + ustBosluk;\r\n\r\n for (let fi = 0; fi < satirSayisi; fi++) {\r\n const footerRow = worksheet.getRow(footerBasSatir + fi);\r\n for (let colIndex = 0; colIndex < table.columns.length; colIndex++) {\r\n const column = table.columns[colIndex]!;\r\n const cell = footerRow.getCell(startCol + colIndex);\r\n this.hucreFontunuUygula(cell, footer.font, sonuc.defaultFont);\r\n\r\n const colFooter = column.footer;\r\n if (colFooter?.isFunction) {\r\n const footerFormula = this.footerFormulunuOlustur(column, colIndex, startRow, startCol, table.collection.length);\r\n if (footerFormula) {\r\n cell.value = { formula: footerFormula };\r\n const numFmt = this.numberFormatDonustur(column.format);\r\n if (numFmt) {\r\n cell.numFmt = numFmt;\r\n }\r\n }\r\n } else if (colFooter?.title) {\r\n cell.value = colFooter.title;\r\n }\r\n cell.alignment = {\r\n horizontal: colFooter?.isFunction\r\n ? this.hucreYatayHizasiniBelirle(cell.value, column)\r\n : this.yatayHizaDonustur(colFooter?.horizontalAlignment),\r\n vertical: 'middle',\r\n wrapText: false\r\n };\r\n }\r\n }\r\n\r\n sonSatir = footerBasSatir + satirSayisi - 1;\r\n }\r\n\r\n return sonSatir;\r\n }\r\n\r\n private static kolonGenislikleriniUygula(\r\n worksheet: ExcelJS.Worksheet,\r\n startCol: number,\r\n columns: TExcelTableColumn[],\r\n satirlar: ExcelJS.CellValue[][]\r\n ): void {\r\n const filtreButonuBoslukPayi = 1.25;\r\n const veriSagBoslukPayi = 1;\r\n\r\n for (let index = 0; index < columns.length; index++) {\r\n const worksheetColumn = worksheet.getColumn(startCol + index);\r\n const baslikUzunlugu = this.metinUzunlugu(this.baslikMetniniHazirla(columns[index]!.header.title));\r\n const veriUzunlugu = satirlar.reduce((max, satir) => Math.max(max, this.hucreMetinUzunlugu(satir[index]!)), 0);\r\n const tasarimGenisligi = (columns[index]!.width ?? 0) > 0 ? Math.round(columns[index]!.width! / 7) : 0;\r\n worksheetColumn.width = Math.max(\r\n 10,\r\n tasarimGenisligi,\r\n baslikUzunlugu + 2 + filtreButonuBoslukPayi,\r\n veriUzunlugu + 2 + veriSagBoslukPayi\r\n );\r\n }\r\n }\r\n\r\n private static baslikMetniniHazirla(metin: string): string {\r\n return metin\r\n .replaceAll('\\r\\n', ' ')\r\n .replaceAll('\\r', ' ')\r\n .replaceAll('\\n', ' ')\r\n .trim();\r\n }\r\n\r\n private static hucreMetinUzunlugu(deger: ExcelJS.CellValue): number {\r\n if (deger === null || deger === undefined) {\r\n return 0;\r\n }\r\n\r\n if (typeof deger === 'string') {\r\n return this.metinUzunlugu(deger);\r\n }\r\n\r\n if (typeof deger === 'number' || typeof deger === 'boolean') {\r\n return String(deger).length;\r\n }\r\n\r\n if (deger instanceof Date) {\r\n return '14.05.2026 09:13:29'.length;\r\n }\r\n\r\n if (typeof deger === 'object' && 'formula' in deger) {\r\n return this.metinUzunlugu(String(deger.formula));\r\n }\r\n\r\n return this.metinUzunlugu(String(deger));\r\n }\r\n\r\n private static hucreYatayHizasiniBelirle(\r\n deger: ExcelJS.CellValue,\r\n column: TExcelTableColumn\r\n ): ExcelJS.Alignment['horizontal'] {\r\n if (typeof deger === 'number') {\r\n return 'right';\r\n }\r\n\r\n if (typeof deger === 'object' && deger !== null && 'formula' in deger && this.sayisalFormatMi(column.format)) {\r\n return 'right';\r\n }\r\n\r\n return this.yatayHizaDonustur(column.horizontalAlignment);\r\n }\r\n\r\n private static sayisalFormatMi(format: number | undefined): boolean {\r\n switch (format) {\r\n case NumberFormatlar.long:\r\n case NumberFormatlar.real:\r\n case NumberFormatlar.yuzde_BirHane:\r\n case 2:\r\n case 5:\r\n case 7:\r\n case 11:\r\n case 12:\r\n case 28:\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private static metinUzunlugu(metin: string): number {\r\n return metin\r\n .replaceAll('\\r', '')\r\n .split('\\n')\r\n .reduce((max, parca) => Math.max(max, parca.trim().length), 0);\r\n }\r\n\r\n private static kolonGrubuYaz(\r\n worksheet: ExcelJS.Worksheet,\r\n startRow: number,\r\n startCol: number,\r\n table: TExcelTable\r\n ): void {\r\n const columnGroups = table.columnGroup;\r\n if (!columnGroups?.length || startRow <= 1) {\r\n return;\r\n }\r\n\r\n const grupSatiri = startRow - 1;\r\n for (const columnGroup of columnGroups) {\r\n const baslangicIndex = table.columns.findIndex(column => column.property === columnGroup.groupStart);\r\n const bitisIndex = table.columns.findIndex(column => column.property === columnGroup.groupEnd);\r\n const baslangicKolonu = baslangicIndex >= 0 ? startCol + baslangicIndex : undefined;\r\n const bitisKolonu = bitisIndex >= 0 ? startCol + bitisIndex : undefined;\r\n if (!baslangicKolonu || !bitisKolonu || bitisKolonu < baslangicKolonu) {\r\n continue;\r\n }\r\n\r\n worksheet.mergeCells(grupSatiri, baslangicKolonu, grupSatiri, bitisKolonu);\r\n\r\n const grupHucre = worksheet.getCell(grupSatiri, baslangicKolonu);\r\n grupHucre.value = columnGroup.groupName;\r\n grupHucre.alignment = { horizontal: 'center', vertical: 'middle' };\r\n grupHucre.font = { bold: true, size: 11, color: { argb: 'FFF79646' } };\r\n grupHucre.fill = {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: { argb: 'FFFFFFFF' }\r\n };\r\n\r\n for (let col = baslangicKolonu; col <= bitisKolonu; col++) {\r\n const hucre = worksheet.getCell(grupSatiri, col);\r\n hucre.border = {\r\n ...hucre.border,\r\n top: { style: 'medium', color: { argb: 'FFF79646' } },\r\n ...(col === baslangicKolonu ? { left: { style: 'medium', color: { argb: 'FFF79646' } } } : (hucre.border?.left ? { left: hucre.border.left } : {})),\r\n ...(col === bitisKolonu ? { right: { style: 'medium', color: { argb: 'FFF79646' } } } : (hucre.border?.right ? { right: hucre.border.right } : {}))\r\n };\r\n }\r\n }\r\n }\r\n\r\n private static hucreDegeriniHazirla(\r\n row: TExcelTableRow,\r\n column: TExcelTableColumn,\r\n sifirlariBasmaSayi: boolean\r\n ): IHazirHucreDegeri {\r\n const value = row[column.property];\r\n\r\n if ((typeof value === 'string') && value.startsWith('=')) {\r\n return { deger: { formula: this.excelFormuluneDonustur(value) } };\r\n }\r\n\r\n if ((typeof value === 'number') && sifirlariBasmaSayi && (value === 0)) {\r\n return { deger: '' };\r\n }\r\n\r\n if (value === null || value === undefined) {\r\n return { deger: '' };\r\n }\r\n\r\n const htmlHucre = (column.htmlKoduGelebilir === true) && typeof value === 'string' ? this.htmlHucreIceriginiHazirla(value) : undefined;\r\n const normallesenDeger = htmlHucre?.deger ?? value;\r\n\r\n if ((typeof normallesenDeger === 'string') && normallesenDeger.startsWith('=')) {\r\n return this.hazirHucreDegeriOlustur(\r\n { formula: this.excelFormuluneDonustur(normallesenDeger) },\r\n htmlHucre?.fontColorArgb\r\n );\r\n }\r\n\r\n if ((typeof value === 'string') && (typeof normallesenDeger === 'string')) {\r\n const tarihDegeri = this.tarihStringiniDateeDonustur(normallesenDeger);\r\n if (tarihDegeri) {\r\n return this.hazirHucreDegeriOlustur(tarihDegeri, htmlHucre?.fontColorArgb);\r\n }\r\n }\r\n\r\n if (normallesenDeger instanceof Date) {\r\n return this.hazirHucreDegeriOlustur(\r\n this.excelIcinTarihiNormalizeEt(normallesenDeger),\r\n htmlHucre?.fontColorArgb\r\n );\r\n }\r\n\r\n if (typeof normallesenDeger === 'boolean') {\r\n return this.hazirHucreDegeriOlustur(normallesenDeger ? '+' : '', htmlHucre?.fontColorArgb);\r\n }\r\n\r\n if ((typeof normallesenDeger === 'number') || (typeof normallesenDeger === 'string')) {\r\n return this.hazirHucreDegeriOlustur(normallesenDeger, htmlHucre?.fontColorArgb);\r\n }\r\n\r\n return this.hazirHucreDegeriOlustur(String(normallesenDeger), htmlHucre?.fontColorArgb);\r\n }\r\n\r\n private static hazirHucreDegeriOlustur(deger: ExcelJS.CellValue, fontColorArgb?: string): IHazirHucreDegeri {\r\n return {\r\n deger,\r\n ...(fontColorArgb ? { fontColorArgb } : {})\r\n };\r\n }\r\n\r\n private static htmlHucreIceriginiHazirla(value: string): { deger: string; fontColorArgb?: string } | undefined {\r\n if (!/[<>]/.test(value)) {\r\n return undefined;\r\n }\r\n\r\n const deger = value\r\n .replaceAll(/<br\\s*\\/?>/gi, '\\n')\r\n .replaceAll(/<\\/p\\s*>/gi, '\\n')\r\n .replaceAll(/<p\\b[^>]*>/gi, '')\r\n .replaceAll(/<\\/div\\s*>/gi, '\\n')\r\n .replaceAll(/<div\\b[^>]*>/gi, '')\r\n .replaceAll(/<[^>]+>/g, '')\r\n .replaceAll(/ /gi, ' ')\r\n .trim();\r\n\r\n const colorValue = this.htmlFontRenginiBul(value);\r\n const fontColorArgb = this.argbDonustur(colorValue);\r\n\r\n if ((deger === value) && !fontColorArgb) {\r\n return undefined;\r\n }\r\n\r\n return { deger, ...(fontColorArgb && { fontColorArgb }) };\r\n }\r\n\r\n private static htmlFontRenginiBul(value: string): string | undefined {\r\n const fontColorMatch = /<font\\b[^>]*\\bcolor\\s*=\\s*[\"']?([^\"' >]+)[\"']?[^>]*>/i.exec(value);\r\n if (fontColorMatch?.[1]) {\r\n return fontColorMatch[1].trim();\r\n }\r\n\r\n const styleColorMatch = /<(?:font|span)\\b[^>]*\\bstyle\\s*=\\s*[\"'][^\"']*\\bcolor\\s*:\\s*([^;\"']+)/i.exec(value);\r\n if (styleColorMatch?.[1]) {\r\n return styleColorMatch[1].trim();\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static tarihStringiniDateeDonustur(value: string): Date | undefined {\r\n const trimmedValue = value.trim();\r\n const isoDateMatch = /^(\\d{4})-(\\d{2})-(\\d{2})(?:$|[T\\s])/.exec(trimmedValue);\r\n\r\n if (!isoDateMatch) {\r\n return undefined;\r\n }\r\n\r\n const year = Number(isoDateMatch[1]);\r\n const month = Number(isoDateMatch[2]);\r\n const day = Number(isoDateMatch[3]);\r\n\r\n if (!Number.isInteger(year) || !Number.isInteger(month) || !Number.isInteger(day)) {\r\n return undefined;\r\n }\r\n\r\n const date = new Date(year, month - 1, day);\r\n if (date.getFullYear() !== year || date.getMonth() !== (month - 1) || date.getDate() !== day) {\r\n return undefined;\r\n }\r\n\r\n return new Date(Date.UTC(year, month - 1, day, 12, 0, 0, 0));\r\n }\r\n\r\n private static excelIcinTarihiNormalizeEt(value: Date): Date {\r\n if (value.getHours() !== 0 || value.getMinutes() !== 0 || value.getSeconds() !== 0 || value.getMilliseconds() !== 0) {\r\n return value;\r\n }\r\n\r\n return new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate(), 12, 0, 0, 0));\r\n }\r\n\r\n private static varsayilanTarihFormatiniVer(): string {\r\n return 'dd.mm.yyyy';\r\n }\r\n\r\n private static benzersizKolonAdlariOlustur(adlar: string[]): string[] {\r\n const sayaclar = new Map<string, number>();\r\n return adlar.map(ad => {\r\n const temelAd = ad || ' ';\r\n const sayi = sayaclar.get(temelAd) ?? 0;\r\n sayaclar.set(temelAd, sayi + 1);\r\n return sayi === 0 ? temelAd : `${temelAd}_${sayi}`;\r\n });\r\n }\r\n\r\n private static hucreFontunuUygula(\r\n cell: ExcelJS.Cell,\r\n font: IExcelFont | undefined,\r\n defaultFont?: TDefaultFont\r\n ): void {\r\n const style = font?.style ?? 0;\r\n const excelFont: Partial<ExcelJS.Font> = {};\r\n\r\n const fontName = font?.name || defaultFont?.name;\r\n if (fontName) {\r\n excelFont.name = fontName;\r\n }\r\n\r\n const fontSize = (font?.size && font.size > 0) ? font.size : defaultFont?.size;\r\n if (fontSize && fontSize > 0) {\r\n excelFont.size = fontSize;\r\n }\r\n\r\n if (font?.color) {\r\n const color = this.argbDonustur(font.color);\r\n if (color) {\r\n excelFont.color = { argb: color };\r\n }\r\n }\r\n\r\n excelFont.bold = Boolean(style & FontStyle.bold);\r\n excelFont.italic = Boolean(style & FontStyle.italic);\r\n excelFont.underline = Boolean(style & FontStyle.underline);\r\n\r\n cell.font = excelFont;\r\n }\r\n\r\n private static gecerliTableStyleVer(tableStyle: string | undefined): string | undefined {\r\n if (!tableStyle) {\r\n return undefined;\r\n }\r\n\r\n const style = tableStyle.trim();\r\n if (/^TableStyleLight([1-9]|1\\d|2[0-1])$/.test(style)) {\r\n return style;\r\n }\r\n if (/^TableStyleMedium([1-9]|1\\d|2[0-1])$/.test(style)) {\r\n return style;\r\n }\r\n if (/^TableStyleDark([1-9]|10|11)$/.test(style)) {\r\n return style;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static tableStyleDonustur(theme: string | undefined): ExcelJS.TableStyleProperties | undefined {\r\n if (!theme) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n theme: theme as NonNullable<ExcelJS.TableStyleProperties['theme']>,\r\n showRowStripes: true\r\n };\r\n }\r\n\r\n private static tabloAdiOlustur(sheetName: string, startRow: number, startCol: number): string {\r\n const temizSheetName = sheetName.replaceAll(/[^A-Za-z0-9]/g, '_');\r\n return `T_${temizSheetName}_R${startRow}C${startCol}`;\r\n }\r\n\r\n private static yatayHizaDonustur(value: XLHAlign | undefined): ExcelJS.Alignment['horizontal'] {\r\n switch (value) {\r\n case XLHAlign.xlHAlignCenter: return 'center';\r\n case XLHAlign.xlHAlignCenterAcrossSelection: return 'centerContinuous';\r\n case XLHAlign.xlHAlignDistributed: return 'distributed';\r\n case XLHAlign.xlHAlignFill: return 'fill';\r\n case XLHAlign.xlHAlignGeneral: return 'left';\r\n case XLHAlign.xlHAlignJustify: return 'justify';\r\n case XLHAlign.xlHAlignLeft: return 'left';\r\n case XLHAlign.xlHAlignRight: return 'right';\r\n default: return 'left';\r\n }\r\n }\r\n\r\n private static dikeyHizaDonustur(value: XLVAlign | undefined): ExcelJS.Alignment['vertical'] {\r\n switch (value) {\r\n case XLVAlign.xlVAlignTop: return 'top';\r\n case XLVAlign.xlVAlignBottom: return 'bottom';\r\n case XLVAlign.xlVAlignDistributed: return 'distributed';\r\n case XLVAlign.xlVAlignJustify: return 'justify';\r\n default: return 'middle';\r\n }\r\n }\r\n\r\n private static argbDonustur(color: string | undefined): string | undefined {\r\n if (!color) {\r\n return undefined;\r\n }\r\n\r\n const cssColor = color.trim().toLowerCase();\r\n const rgbMatch = cssColor.match(/^rgb\\s*\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/i);\r\n if (rgbMatch) {\r\n const rgbDegerleri = rgbMatch.slice(1).map(value => Number(value));\r\n if (rgbDegerleri.every(value => Number.isInteger(value) && value >= 0 && value <= 255)) {\r\n return `FF${rgbDegerleri.map(value => value.toString(16).padStart(2, '0')).join('').toUpperCase()}`;\r\n }\r\n }\r\n\r\n const namedColors: Record<string, string> = {\r\n black: 'FF000000',\r\n blue: 'FF0000FF',\r\n cyan: 'FF00FFFF',\r\n gray: 'FF808080',\r\n green: 'FF008000',\r\n grey: 'FF808080',\r\n magenta: 'FFFF00FF',\r\n orange: 'FFFFA500',\r\n purple: 'FF800080',\r\n red: 'FFFF0000',\r\n white: 'FFFFFFFF',\r\n yellow: 'FFFFFF00'\r\n };\r\n if (namedColors[cssColor]) {\r\n return namedColors[cssColor];\r\n }\r\n\r\n const hexColor = cssColor.replace('#', '');\r\n if (/^[0-9a-f]{6}$/i.test(hexColor)) {\r\n return `FF${hexColor.toUpperCase()}`;\r\n }\r\n\r\n if (/^[0-9A-Fa-f]{8}$/.test(color)) {\r\n return color.toUpperCase();\r\n }\r\n\r\n const numericColor = Number(color);\r\n if (!Number.isFinite(numericColor)) {\r\n return undefined;\r\n }\r\n\r\n const r = numericColor & 255;\r\n const g = (numericColor >> 8) & 255;\r\n const b = (numericColor >> 16) & 255;\r\n\r\n return `FF${[r, g, b].map(value => value.toString(16).padStart(2, '0')).join('').toUpperCase()}`;\r\n }\r\n\r\n private static kolonRenginiBul(\r\n kolonRenkleri: TExcelTable['columnInteriorColors'] | undefined,\r\n colIndex: number\r\n ): string | undefined {\r\n const kolonRengi = kolonRenkleri?.[colIndex];\r\n if (typeof kolonRengi === 'string') {\r\n return kolonRengi;\r\n }\r\n\r\n const kolonNo = colIndex + 1;\r\n for (const kolon of kolonRenkleri ?? []) {\r\n if (typeof kolon === 'object' && kolon.columnNo === kolonNo) {\r\n return kolon.color;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static excelFormuluneDonustur(formul: string): string {\r\n const ceviriler: Record<string, string> = {\r\n 'TOPLA': 'SUM',\r\n 'EĞER': 'IF',\r\n 'VE': 'AND',\r\n 'VEYA': 'OR',\r\n 'YUVARLA': 'ROUND',\r\n 'EĞERSAY': 'COUNTIF',\r\n 'ETOPLA': 'SUMIF',\r\n 'ORTALAMA': 'AVERAGE',\r\n 'MİN': 'MIN',\r\n 'MAK': 'MAX'\r\n };\r\n\r\n let sonuc = formul.slice(1).replaceAll(';', ',');\r\n\r\n for (const [kaynak, hedef] of Object.entries(ceviriler)) {\r\n const pattern = new RegExp(`\\\\b${kaynak}\\\\b`, 'g');\r\n sonuc = sonuc.replace(pattern, hedef);\r\n }\r\n\r\n return sonuc;\r\n }\r\n\r\n private static footerFormulunuOlustur(\r\n column: TExcelTableColumn,\r\n colIndex: number,\r\n startRow: number,\r\n startCol: number,\r\n veriSatirSayisi: number\r\n ): string | undefined {\r\n if (!veriSatirSayisi) {\r\n return undefined;\r\n }\r\n\r\n const fonksiyon = String(column.footer?.function ?? '').trim().toUpperCase();\r\n if (!fonksiyon) {\r\n return undefined;\r\n }\r\n\r\n const kolonHarf = worksheetColumnName(startCol + colIndex);\r\n const ilkVeriSatiri = startRow + 1;\r\n const sonVeriSatiri = startRow + veriSatirSayisi;\r\n const aralik = `${kolonHarf}${ilkVeriSatiri}:${kolonHarf}${sonVeriSatiri}`;\r\n\r\n if (fonksiyon === 'SUBTOTAL') {\r\n return `SUBTOTAL(9,${aralik})`;\r\n }\r\n\r\n const desteklenenFonksiyonlar = ['SUM', 'AVERAGE', 'COUNT', 'COUNTA', 'MAX', 'MIN'];\r\n if (desteklenenFonksiyonlar.includes(fonksiyon)) {\r\n return `${fonksiyon}(${aralik})`;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static sayfaAdiDuzenle(sheetName: string, index: number): string {\r\n const temizAd = sheetName\r\n .replaceAll(/[\\\\/*?:[\\]]/g, ' ')\r\n .trim()\r\n .slice(0, 31);\r\n\r\n if (temizAd) {\r\n return temizAd;\r\n }\r\n\r\n return `Sheet${index}`;\r\n }\r\n\r\n private static dosyaAdiDuzenle(dosyaAdi: string): string {\r\n const temizAd = dosyaAdi\r\n .replaceAll(/[<>:\"/\\\\|?*]/g, ' ')\r\n .trim()\r\n .replaceAll(/\\s+/g, ' ');\r\n\r\n if (temizAd) {\r\n return temizAd;\r\n }\r\n\r\n return 'Rapor';\r\n }\r\n\r\n private static numberFormatDonustur(format: number | undefined): string | undefined {\r\n switch (format) {\r\n case NumberFormatlar.long:\r\n case 2:\r\n case 5:\r\n case 11:\r\n return '#,##0';\r\n\r\n case NumberFormatlar.real:\r\n case 7:\r\n case 12:\r\n return '#,##0.00';\r\n\r\n case 8:\r\n return 'hh:mm';\r\n\r\n case NumberFormatlar.tarih:\r\n return 'dd.mm.yyyy';\r\n\r\n case NumberFormatlar.tarih_yyyymmdd_tireli:\r\n return 'yyyy-mm-dd';\r\n\r\n case NumberFormatlar.tarih_AAAAYYYY:\r\n return 'mmmm yyyy';\r\n\r\n case NumberFormatlar.tarih_GGAAAAYYYY:\r\n return 'dd mmmm yyyy';\r\n\r\n case NumberFormatlar.tarih_YYYYMMDD:\r\n return 'yyyy/mm/dd';\r\n\r\n case NumberFormatlar.tarih_LongDate:\r\n return 'dd mmmm yyyy dddd';\r\n\r\n case NumberFormatlar.tarih_ga:\r\n return 'd.m;@';\r\n\r\n case NumberFormatlar.tarih_ggaa:\r\n return 'dd.mm';\r\n\r\n case NumberFormatlar.tarih_gaaaa:\r\n return 'd.mmmm';\r\n\r\n case NumberFormatlar.tarih_ggaaa:\r\n return 'dd.mmm';\r\n\r\n case NumberFormatlar.tarih_ggaaaa:\r\n return 'dd.mmmm';\r\n\r\n case NumberFormatlar.yuzde_BirHane:\r\n return '0.0%';\r\n\r\n case NumberFormatlar.genel:\r\n return 'General';\r\n\r\n case NumberFormatlar.metin:\r\n return '@';\r\n\r\n case NumberFormatlar.imp:\r\n return '#,##0 \"imp\"';\r\n\r\n case NumberFormatlar.clicks:\r\n return '#,##0 \"Clicks\"';\r\n\r\n case NumberFormatlar.gun:\r\n return '#,##0 \"Gün\"';\r\n\r\n case NumberFormatlar.view:\r\n return '#,##0 \"View\"';\r\n\r\n case NumberFormatlar.session:\r\n return '#,##0 \"Session\"';\r\n\r\n case NumberFormatlar.kisi:\r\n return '#,##0 \"Kişi\"';\r\n\r\n case NumberFormatlar.okunma:\r\n return '#,##0 \"Okunma\"';\r\n\r\n case NumberFormatlar.dinlenme:\r\n return '#,##0 \"Dinlenme\"';\r\n\r\n case NumberFormatlar.lead:\r\n return '#,##0 \"Lead\"';\r\n\r\n case NumberFormatlar.gizli:\r\n return ';;;';\r\n\r\n case 28:\r\n return '#,##0.00 \"₺\"';\r\n\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\nfunction worksheetColumnName(columnNumber: number): string {\r\n let kalan = columnNumber;\r\n let sonuc = '';\r\n\r\n while (kalan > 0) {\r\n const mod = (kalan - 1) % 26;\r\n sonuc = String.fromCharCode(65 + mod) + sonuc;\r\n kalan = Math.floor((kalan - 1) / 26);\r\n }\r\n\r\n return sonuc;\r\n}\r\n","import { HttpResponse } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\n\r\nimport saveAs from 'file-saver';\r\n\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { GlobalFunctions } from 'limitng/api';\r\nimport { ToastMessageOptions } from 'primeng/api';\r\nimport { ExcelRaporuSonuc } from './models/excelRaporuSonuc';\r\nimport { JsonToExcelParser } from './models/jsonToExcelParser';\r\n\r\ninterface JsonExcelResponseOptions<T extends ExcelRaporuSonuc> {\r\n createResult: () => T;\r\n errorLogMessage: string;\r\n fileName?: string;\r\n getFileName?: (result: T) => string;\r\n successDetail?: string;\r\n successDetailKey?: string;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class BlobResponseHandlerService {\r\n private readonly translateService = inject(TranslateService);\r\n\r\n handleReportResponse(\r\n response: HttpResponse<Blob>,\r\n successDetailKey: string,\r\n htmlTitle = 'Rapor Sonucu'\r\n ): ToastMessageOptions | null {\r\n const body = response.body;\r\n\r\n if (!body) {\r\n return null;\r\n }\r\n\r\n const contentDisposition = response.headers.get('content-disposition');\r\n const contentType = response.headers.get('Content-Type') ?? body.type;\r\n\r\n if (contentDisposition) {\r\n return this.handleDownload(body, contentDisposition, contentType, successDetailKey);\r\n }\r\n\r\n this.handleViewHtml(body, htmlTitle);\r\n return null;\r\n }\r\n\r\n downloadResponse(response: HttpResponse<Blob | string>): boolean {\r\n const body = response.body;\r\n\r\n if (!body) {\r\n return false;\r\n }\r\n\r\n const contentDisposition = response.headers.get('content-disposition');\r\n\r\n if (!contentDisposition) {\r\n return false;\r\n }\r\n\r\n const contentType = response.headers.get('Content-Type') ?? (body instanceof Blob ? body.type : 'application/octet-stream');\r\n\r\n this.downloadBlob(body, contentDisposition, contentType);\r\n return true;\r\n }\r\n\r\n viewHtmlBody(body: Blob | null, htmlTitle = 'Rapor Sonucu'): void {\r\n if (!body) {\r\n return;\r\n }\r\n\r\n this.handleViewHtml(body, htmlTitle);\r\n }\r\n\r\n async handleJsonExcelResponse<T extends ExcelRaporuSonuc>(\r\n body: Blob | null,\r\n options: JsonExcelResponseOptions<T>\r\n ): Promise<ToastMessageOptions | null> {\r\n if (!body) {\r\n return null;\r\n }\r\n\r\n try {\r\n const jsonStr = await body.text();\r\n const result = Object.assign(options.createResult(), JSON.parse(jsonStr) as T);\r\n const fileName = options.getFileName?.(result) ?? options.fileName;\r\n\r\n if (!fileName) {\r\n return null;\r\n }\r\n\r\n await JsonToExcelParser.indir(result, fileName);\r\n\r\n return {\r\n severity: 'success',\r\n summary: this.translateService.instant('genel.bilgi'),\r\n detail: options.successDetail ?? this.translateService.instant(options.successDetailKey ?? '')\r\n };\r\n } catch (error) {\r\n console.error(options.errorLogMessage, error);\r\n return null;\r\n }\r\n }\r\n\r\n private handleDownload(body: BlobPart, contentDisposition: string, contentType: string, successDetailKey: string): ToastMessageOptions {\r\n this.downloadBlob(body, contentDisposition, contentType);\r\n\r\n return {\r\n severity: 'success',\r\n summary: this.translateService.instant('genel.bilgi'),\r\n detail: this.translateService.instant(successDetailKey)\r\n };\r\n }\r\n\r\n private downloadBlob(body: BlobPart, contentDisposition: string, contentType: string): void {\r\n const decodedContentDisposition = contentDisposition.replaceAll(\r\n /\\\\u([0-9A-Fa-f]{4})/g,\r\n (_, code: string) => String.fromCodePoint(Number.parseInt(code, 16))\r\n );\r\n const filename = GlobalFunctions.getFilenameFromContentDisposition(decodedContentDisposition);\r\n const blob = new Blob([body], { type: contentType });\r\n\r\n saveAs(blob, filename);\r\n }\r\n\r\n private handleViewHtml(body: Blob, htmlTitle: string): void {\r\n body.text().then((html: string) => {\r\n const wnd = window.open('', '_blank');\r\n\r\n if (!wnd) {\r\n return;\r\n }\r\n\r\n wnd.document.title = htmlTitle;\r\n\r\n const iframe = wnd.document.createElement('iframe');\r\n iframe.style.width = '100%';\r\n iframe.style.height = '100%';\r\n iframe.style.border = 'none';\r\n iframe.setAttribute('srcdoc', html);\r\n\r\n wnd.document.body.style.margin = '0';\r\n wnd.document.body.style.padding = '0';\r\n wnd.document.body.appendChild(iframe);\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":"limitng-blob-response-handler.mjs","sources":["../../src/app/components/blob-response-handler/models/excelRaporuSonuc.ts","../../src/app/components/blob-response-handler/models/jsonToExcelParser.ts","../../src/app/components/blob-response-handler/blob-response-handler.service.ts","../../src/app/components/blob-response-handler/limitng-blob-response-handler.ts"],"sourcesContent":["import { VariableType } from 'limitng/api/models/fourDConstants';\r\nimport { XLHAlign, XLVAlign } from 'limitng/api/models/xl/xlConstants';\r\n\r\nexport type ExcelHucreDegeri = boolean | Date | number | string | null | undefined;\r\n\r\nexport class ExcelRaporuSonuc {\r\n book: IExcelRaporuBook = {\r\n author: 'MedPlan',\r\n activeSheetNo: 1\r\n };\r\n\r\n logo?: IExcelRaporuLogo;\r\n\r\n defaultFont: IExcelRaporuDefaultFont = {\r\n name: 'Calibri',\r\n size: 11\r\n };\r\n\r\n currentTableStyle = '';\r\n currentTable?: number;\r\n dosyaAdi?: string;\r\n sifirlariBasmaSayi = false;\r\n sifirlariBasmaTarih = false;\r\n\r\n // Eski format: üst bilgiler, notlar ve tablolar üst seviyede gelir\r\n ustBilgiler?: IExcelRaporuUstBilgiSatiri[];\r\n ustBilgi?: IExcelRaporuUstBilgiAyari;\r\n not?: IExcelRaporuNotAyari;\r\n notlar?: string[];\r\n tables?: IExcelRaporuTable[];\r\n\r\n // Yeni format: her sheet kendi tablolarını, üst bilgilerini ve notlarını taşır\r\n sheets: IExcelRaporuSheet[] = [];\r\n\r\n window: IExcelRaporuWindow = {\r\n displayGridLines: false\r\n };\r\n}\r\n\r\ninterface IExcelRaporuFont {\r\n name?: string;\r\n size?: number;\r\n color?: string;\r\n style?: number;\r\n}\r\n\r\ninterface IExcelRaporuDefaultFont {\r\n name: string;\r\n size: number;\r\n}\r\n\r\ninterface IExcelRaporuLogo {\r\n genislik?: number;\r\n yukseklik?: number;\r\n ustMarjin?: number;\r\n solMarjin?: number;\r\n ebatPixelmi?: boolean;\r\n ebat?: string;\r\n konum?: string;\r\n}\r\n\r\ninterface IExcelRaporuBook {\r\n author: string;\r\n activeSheetNo: number;\r\n subject?: string;\r\n comments?: string;\r\n}\r\n\r\ninterface IExcelRaporuWindow {\r\n displayGridLines: boolean;\r\n}\r\n\r\ninterface IExcelRaporuUstBilgiSatiri {\r\n rowNo?: number;\r\n ustBilgi: string;\r\n font?: IExcelRaporuFont;\r\n}\r\n\r\ninterface IExcelRaporuUstBilgiAyari {\r\n font?: IExcelRaporuFont;\r\n columnFontColors?: string[];\r\n columnFontStyles?: string[];\r\n}\r\n\r\ninterface IExcelRaporuNotAyari {\r\n font?: IExcelRaporuFont;\r\n}\r\n\r\ninterface IExcelRaporuBorder {\r\n type: string;\r\n lineStyle: string;\r\n weight: string;\r\n color: string;\r\n}\r\n\r\ninterface IExcelRaporuInterior {\r\n color: string;\r\n}\r\n\r\ninterface IExcelRaporuTableBand {\r\n basilacak?: boolean;\r\n satirSayisi?: number;\r\n ustBosluk?: number;\r\n font?: IExcelRaporuFont;\r\n interior?: IExcelRaporuInterior;\r\n border?: IExcelRaporuBorder;\r\n}\r\n\r\ninterface IExcelRaporuTableData {\r\n font?: IExcelRaporuFont;\r\n interior?: IExcelRaporuInterior;\r\n border?: IExcelRaporuBorder;\r\n}\r\n\r\ninterface IExcelRaporuColumnGroup {\r\n groupEnd: string;\r\n groupName: string;\r\n groupStart: string;\r\n}\r\n\r\ninterface IExcelRaporuTableColumnHeader {\r\n title: string;\r\n horizontalAlignment?: XLHAlign;\r\n verticalAlignment?: XLVAlign;\r\n}\r\n\r\ninterface IExcelRaporuTableColumnFooter {\r\n isFunction?: boolean;\r\n function?: number;\r\n title?: string;\r\n horizontalAlignment?: XLHAlign;\r\n verticalAlignment?: XLVAlign;\r\n}\r\n\r\nexport interface IExcelRaporuTableColumn {\r\n property: string;\r\n arrayType?: VariableType;\r\n header: IExcelRaporuTableColumnHeader;\r\n footer?: IExcelRaporuTableColumnFooter;\r\n horizontalAlignment?: XLHAlign;\r\n verticalAlignment?: XLVAlign;\r\n format?: number;\r\n width?: number;\r\n columnNo?: number;\r\n htmlKoduGelebilir?: boolean;\r\n}\r\n\r\ninterface IExcelRaporuSatirRenkBilgisi {\r\n color: string;\r\n rowNo: number;\r\n}\r\n\r\ninterface IExcelRaporuSatirYuksekligi {\r\n height: number;\r\n rowNo: number;\r\n}\r\n\r\ninterface IExcelRaporuKolonRenkBilgisi {\r\n color: string;\r\n columnNo: number;\r\n}\r\n\r\ninterface IExcelRaporuTable {\r\n columns: IExcelRaporuTableColumn[];\r\n columnGroup?: IExcelRaporuColumnGroup[];\r\n header?: IExcelRaporuTableBand;\r\n data?: IExcelRaporuTableData;\r\n footer?: IExcelRaporuTableBand;\r\n tableNo?: number;\r\n collection: Record<string, ExcelHucreDegeri>[];\r\n sol?: number;\r\n ust?: number;\r\n veriKaynagi?: string;\r\n sheetName?: string;\r\n hiddenRows?: number[];\r\n sort?: number[];\r\n rows?: string[];\r\n autoFit?: boolean;\r\n columnFontNames?: string[];\r\n columnFontSizes?: number[];\r\n columnFontColors?: string[];\r\n columnFontStyles?: number[];\r\n columnInteriorColors?: Array<string | IExcelRaporuKolonRenkBilgisi>;\r\n columnHeaderFontNames?: string[];\r\n columnHeaderFontSizes?: number[];\r\n columnHeaderFontColors?: string[];\r\n columnHeaderFontStyles?: number[];\r\n columnHeaderInteriorColors?: string[];\r\n columnFooterFontNames?: string[];\r\n columnFooterFontSizes?: number[];\r\n columnFooterFontColors?: string[];\r\n columnFooterFontStyles?: number[];\r\n columnFooterInteriorColors?: string[];\r\n rowFontNames?: string[];\r\n rowFontSizes?: number[];\r\n rowFontColors?: IExcelRaporuSatirRenkBilgisi[];\r\n rowFontStyles?: number[];\r\n rowInteriorColors?: IExcelRaporuSatirRenkBilgisi[];\r\n rowHeights?: IExcelRaporuSatirYuksekligi[];\r\n rowFormats?: string[];\r\n rowHorizontalAlignments?: XLHAlign[];\r\n rowVerticalAlignments?: XLVAlign[];\r\n cellFontNames?: string[];\r\n cellFontSizes?: number[];\r\n cellFontColors?: string[];\r\n cellFontStyles?: number[];\r\n cellInteriorColors?: string[];\r\n cellFormats?: string[];\r\n cellHorizontalAlignments?: XLHAlign[];\r\n cellVerticalAlignments?: XLVAlign[];\r\n rangeFontNames?: string[];\r\n rangeFontSizes?: number[];\r\n rangeFontColors?: string[];\r\n rangeFontStyles?: number[];\r\n rangeInteriorColors?: string[];\r\n rangeFormats?: string[];\r\n rangeHorizontalAlignments?: XLHAlign[];\r\n rangeVerticalAlignments?: XLVAlign[];\r\n}\r\n\r\ninterface IExcelRaporuPageSetup {\r\n orientation?: number;\r\n leftMargin?: number;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n rightMargin?: number;\r\n headerMargin?: number;\r\n footerMargin?: number;\r\n centerHorizontally?: boolean;\r\n centerVertically?: boolean;\r\n centerHeader?: string;\r\n leftHeader?: string;\r\n rightHeader?: string;\r\n centerFooter?: string;\r\n leftFooter?: string;\r\n rightFooter?: string;\r\n fitToPagesTall?: number;\r\n fitToPagesWide?: number;\r\n fitToPagesTAut?: boolean;\r\n fitToPagesWAut?: boolean;\r\n zoom?: boolean | number;\r\n printArea?: string;\r\n printAreaVar?: string;\r\n}\r\n\r\ninterface IExcelRaporuSheet {\r\n sheetNo?: number;\r\n sheetName?: string;\r\n zoom?: number;\r\n tables?: IExcelRaporuTable[];\r\n ustBilgi?: IExcelRaporuUstBilgiAyari;\r\n ustBilgiler?: IExcelRaporuUstBilgiSatiri[];\r\n notlar?: string[];\r\n not?: IExcelRaporuNotAyari;\r\n pageSetup?: IExcelRaporuPageSetup;\r\n}\r\n","import ExcelJS from 'exceljs';\r\nimport saveAs from 'file-saver';\r\nimport { FontStyle, NumberFormatlar, VariableType } from 'limitng/api/models/fourDConstants';\nimport { XLHAlign, XLVAlign } from 'limitng/api/models/xl/xlConstants';\r\nimport { ExcelRaporuSonuc } from './excelRaporuSonuc';\r\n\r\ntype TExcelTable = NonNullable<ExcelRaporuSonuc['tables']>[number];\r\ntype TExcelBook = ExcelRaporuSonuc['book'];\r\ntype TExcelTableColumn = TExcelTable['columns'][number];\ntype TExcelTableColumnInput = Omit<TExcelTableColumn, 'arrayType'> & Partial<Pick<TExcelTableColumn, 'arrayType'>>;\ntype TExcelTableRow = TExcelTable['collection'][number];\r\ntype TExcelSheet = ExcelRaporuSonuc['sheets'][number];\r\ntype TExcelPageSetup = NonNullable<TExcelSheet['pageSetup']>;\r\ntype TExcelUstBilgi = NonNullable<ExcelRaporuSonuc['ustBilgiler']>[number];\r\ntype TDefaultFont = ExcelRaporuSonuc['defaultFont'];\r\n\r\ninterface IExcelFont {\r\n color?: string;\r\n name?: string;\r\n size?: number;\r\n style?: number;\r\n}\r\n\r\ninterface ISheetGrup {\r\n sheetName: string;\r\n sheetNo?: number;\r\n tables: TExcelTable[];\r\n}\r\n\r\ninterface IHazirHucreDegeri {\r\n deger: ExcelJS.CellValue;\r\n fontColorArgb?: string;\r\n}\r\n\r\nexport interface IJsonToExcelSheetOptions {\r\n pageSetup?: TExcelSheet['pageSetup'];\r\n zoom?: number;\r\n}\r\n\r\nexport interface IJsonToExcelTableOptions {\r\n autoFit?: TExcelTable['autoFit'];\r\n data?: TExcelTable['data'];\r\n footer?: TExcelTable['footer'];\r\n header?: TExcelTable['header'];\r\n sol?: TExcelTable['sol'];\r\n ust?: TExcelTable['ust'];\r\n}\r\n\r\nexport class JsonToExcelTableBuilder<TRow extends TExcelTableRow = TExcelTableRow> {\r\n constructor(private readonly table: TExcelTable) {}\r\n\r\n addColumn(column: TExcelTableColumnInput): this {\n this.table.columns.push({\n arrayType: VariableType.text,\n ...column\n });\n return this;\n }\n\r\n setRows(rows: TRow[]): this {\r\n this.table.collection = rows;\r\n return this;\r\n }\r\n\r\n setStartColumn(sol: number): this {\r\n this.table.sol = sol;\r\n return this;\r\n }\r\n\r\n setStartRow(ust: number): this {\r\n this.table.ust = ust;\r\n return this;\r\n }\r\n\r\n getColumnSayisi(): number {\r\n return this.table.columns.length;\r\n }\r\n}\r\n\r\nexport class JsonToExcelSheetBuilder {\r\n constructor(private readonly sheet: TExcelSheet) {}\r\n\r\n addTable<TRow extends TExcelTableRow = TExcelTableRow>(\r\n rows: TRow[],\r\n options: IJsonToExcelTableOptions = {}\r\n ): JsonToExcelTableBuilder<TRow> {\r\n const table: TExcelTable = {\r\n collection: rows,\r\n columns: [],\r\n ...(options.autoFit !== undefined && { autoFit: options.autoFit }),\r\n ...(options.data && { data: options.data }),\r\n ...(options.footer && { footer: options.footer }),\r\n ...(options.header && { header: options.header }),\r\n ...(options.sol !== undefined && { sol: options.sol }),\r\n ...(options.ust !== undefined && { ust: options.ust })\r\n };\r\n\r\n this.sheet.tables ??= [];\r\n this.sheet.tables.push(table);\r\n\r\n return new JsonToExcelTableBuilder<TRow>(table);\r\n }\r\n\r\n addUstBilgi(ustBilgi: string, font?: TExcelUstBilgi['font']): this {\r\n this.sheet.ustBilgiler ??= [];\r\n this.sheet.ustBilgiler.push(JsonToExcelParser.ustBilgiEkle(ustBilgi, font));\r\n return this;\r\n }\r\n\r\n getUstBilgiSayisi(): number {\r\n return this.sheet.ustBilgiler?.length ?? 0;\r\n }\r\n\r\n getSheetNo(): number | undefined {\r\n return this.sheet.sheetNo;\r\n }\r\n\r\n setSheetName(sheetName: string): this {\r\n this.sheet.sheetName = sheetName;\r\n return this;\r\n }\r\n\r\n setZoom(zoom: number): this {\r\n this.sheet.zoom = zoom;\r\n return this;\r\n }\r\n}\r\n\r\nexport class JsonToExcelReportBuilder {\r\n private readonly sonuc = new ExcelRaporuSonuc();\r\n\r\n addSheet(sheetName: string, options: IJsonToExcelSheetOptions = {}): JsonToExcelSheetBuilder {\r\n const sheet: TExcelSheet = {\r\n sheetName,\r\n sheetNo: this.sonuc.sheets.length + 1,\r\n ...(options.pageSetup && { pageSetup: options.pageSetup }),\r\n ...(options.zoom !== undefined && { zoom: options.zoom })\r\n };\r\n\r\n this.sonuc.sheets.push(sheet);\r\n\r\n return new JsonToExcelSheetBuilder(sheet);\r\n }\r\n\r\n build(): ExcelRaporuSonuc {\r\n return this.sonuc;\r\n }\r\n\r\n setAuthor(author: string): this {\r\n this.sonuc.book.author = author;\r\n return this;\r\n }\r\n\r\n setCurrentTableStyle(currentTableStyle: string): this {\r\n this.sonuc.currentTableStyle = currentTableStyle;\r\n return this;\r\n }\r\n\r\n setSubject(subject: string): this {\r\n this.sonuc.book.subject = subject;\r\n return this;\r\n }\r\n}\r\n\r\nexport class JsonToExcelParser {\r\n static async indir(sonuc: ExcelRaporuSonuc, dosyaAdi: string): Promise<void> {\r\n const blob = await this.blobOlustur(sonuc);\r\n const normalizeDosyaAdi = this.dosyaAdiDuzenle(dosyaAdi);\r\n saveAs(blob, `${normalizeDosyaAdi}.xlsx`);\r\n }\r\n\r\n static async blobOlustur(sonuc: ExcelRaporuSonuc): Promise<Blob> {\r\n const workbook = this.workbookOlustur(sonuc);\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n\r\n return new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n }\r\n\r\n static standartPageSetupOlustur(): TExcelPageSetup {\r\n return {\r\n bottomMargin: 1,\r\n centerHorizontally: true,\r\n centerVertically: true,\r\n fitToPagesTall: 1,\r\n fitToPagesWide: 1,\r\n leftMargin: 1,\r\n orientation: 2,\r\n rightMargin: 1,\r\n topMargin: 1\r\n };\r\n }\r\n\r\n static ustBilgiEkle(ustBilgi: string, font?: TExcelUstBilgi['font']): TExcelUstBilgi {\r\n return font ? { font, ustBilgi } : { ustBilgi };\r\n }\r\n\r\n static raporOlustur(): JsonToExcelReportBuilder {\r\n return new JsonToExcelReportBuilder();\r\n }\r\n\r\n private static workbookOlustur(sonuc: ExcelRaporuSonuc): ExcelJS.Workbook {\r\n const workbook = new ExcelJS.Workbook();\r\n workbook.created = new Date();\r\n workbook.calcProperties.fullCalcOnLoad = true;\r\n\r\n const gridLinesGorunur = sonuc.window.displayGridLines;\r\n\r\n if (this.yeniYapiMi(sonuc)) {\r\n workbook.creator = sonuc.book.author || 'MedPlan';\r\n workbook.subject = '';\r\n workbook.description = '';\r\n this.yeniFormatSheetsYaz(workbook, sonuc, gridLinesGorunur);\r\n } else {\r\n workbook.creator = sonuc.book.author || 'MedPlan';\r\n workbook.subject = this.konuVer(sonuc.book, sonuc.ustBilgiler?.[0]?.ustBilgi);\r\n workbook.description = sonuc.book.comments || '';\r\n this.eskiFormatSheetsYaz(workbook, sonuc, gridLinesGorunur);\r\n }\r\n\r\n this.aktifSayfayiAyarla(workbook, sonuc.book.activeSheetNo, workbook.worksheets.length);\r\n\r\n return workbook;\r\n }\r\n\r\n private static yeniYapiMi(sonuc: ExcelRaporuSonuc): boolean {\r\n const ilkSheet = sonuc.sheets[0] as unknown as { tables?: unknown };\r\n if (Array.isArray(ilkSheet?.tables)) {\r\n return true;\r\n }\r\n\r\n const runtimeSonuc = sonuc as unknown as { tables?: unknown };\r\n\r\n return !Array.isArray(runtimeSonuc.tables);\r\n }\r\n\r\n private static yeniFormatSheetsYaz(workbook: ExcelJS.Workbook, sonuc: ExcelRaporuSonuc, gridLinesGorunur: boolean): void {\r\n for (let index = 0; index < sonuc.sheets.length; index++) {\r\n const sheet = sonuc.sheets[index]!;\r\n const sheetAdi = this.sayfaAdiDuzenle(sheet.sheetName || 'Rapor', index + 1);\r\n const worksheet = workbook.addWorksheet(sheetAdi);\r\n const zoomScale = sheet.zoom && sheet.zoom > 0 ? sheet.zoom : undefined;\r\n worksheet.views = [{ showGridLines: gridLinesGorunur, ...(zoomScale !== undefined && { zoomScale }) }];\r\n this.sayfaDuzeniniBelirle(worksheet, sheet);\r\n\r\n const ustBilgiler = sheet.ustBilgiler ?? [];\r\n this.yeniFormatUstBilgileriYaz(worksheet, ustBilgiler, sonuc.defaultFont);\r\n\r\n let sonSatir = ustBilgiler.length + 1;\r\n for (const table of sheet.tables ?? []) {\r\n sonSatir = Math.max(sonSatir, this.tabloyuYaz(worksheet, sonuc, table));\r\n }\r\n\r\n if (sheet.notlar?.length) {\r\n this.notlariYazList(worksheet, sheet.notlar, sheet.not?.font, sonSatir + 2, sonuc.defaultFont);\r\n }\r\n }\r\n\r\n if (sonuc.sheets.length === 0) {\r\n const worksheet = workbook.addWorksheet('Rapor');\r\n worksheet.views = [{ showGridLines: gridLinesGorunur }];\r\n }\r\n }\r\n\r\n private static eskiFormatSheetsYaz(workbook: ExcelJS.Workbook, sonuc: ExcelRaporuSonuc, gridLinesGorunur: boolean): void {\r\n const tablesBySheet = this.sheetBazliTablolar(sonuc);\r\n const ustBilgiler = sonuc.ustBilgiler ?? [];\r\n const notlar = sonuc.notlar ?? [];\r\n\r\n for (const sheetGrup of tablesBySheet) {\r\n const worksheet = workbook.addWorksheet(sheetGrup.sheetName);\r\n worksheet.views = [{ showGridLines: gridLinesGorunur }];\r\n\r\n this.ustBilgileriYaz(worksheet, ustBilgiler, sonuc.defaultFont);\r\n\r\n let sonSatir = 1;\r\n for (const table of sheetGrup.tables) {\r\n sonSatir = Math.max(sonSatir, this.tabloyuYaz(worksheet, sonuc, table));\r\n }\r\n\r\n this.notlariYazList(worksheet, notlar, sonuc.not?.font, sonSatir + 2, sonuc.defaultFont);\r\n }\r\n\r\n if (tablesBySheet.length === 0) {\r\n const worksheet = workbook.addWorksheet(this.bosRaporSheetAdiniVer(sonuc));\r\n worksheet.views = [{ showGridLines: gridLinesGorunur }];\r\n this.ustBilgileriYaz(worksheet, ustBilgiler, sonuc.defaultFont);\r\n this.notlariYazList(worksheet, notlar, sonuc.not?.font, ustBilgiler.length + 2, sonuc.defaultFont);\r\n }\r\n }\r\n\r\n private static sheetBazliTablolar(sonuc: ExcelRaporuSonuc): ISheetGrup[] {\r\n const grouped = new Map<string, ISheetGrup>();\r\n\r\n for (const table of sonuc.tables ?? []) {\r\n const sheetNo = this.tableSheetNoVer(table);\r\n const sheetKey = this.sheetKeyVer(table, sheetNo, grouped.size + 1);\r\n const existing = grouped.get(sheetKey);\r\n\r\n if (existing) {\r\n existing.tables.push(table);\r\n continue;\r\n }\r\n\r\n grouped.set(sheetKey, {\r\n sheetName: this.sheetAdiniBelirle(sonuc, table, grouped.size + 1, sheetNo),\r\n ...(sheetNo !== undefined && { sheetNo }),\r\n tables: [table]\r\n });\r\n }\r\n\r\n return Array.from(grouped.values()).sort((a, b) => this.sheetGrupSirasiVer(a) - this.sheetGrupSirasiVer(b));\r\n }\r\n\r\n private static tableSheetNoVer(table: TExcelTable): number | undefined {\r\n const runtimeTable = table as TExcelTable & { sheetNo?: number };\r\n\r\n return runtimeTable.sheetNo;\r\n }\r\n\r\n private static sheetKeyVer(table: TExcelTable, sheetNo: number | undefined, index: number): string {\r\n if (sheetNo !== undefined) {\r\n return `sheet-no-${sheetNo}`;\r\n }\r\n\r\n const eskiSheetName = table.sheetName?.trim();\r\n if (eskiSheetName) {\r\n return `sheet-name-${eskiSheetName}`;\r\n }\r\n\r\n return `sheet-index-${index}`;\r\n }\r\n\r\n private static sheetAdiniBelirle(\r\n sonuc: ExcelRaporuSonuc,\r\n table: TExcelTable,\r\n index: number,\r\n sheetNo: number | undefined\r\n ): string {\r\n const jsonSheet = this.jsonSheetBul(sonuc.sheets, sheetNo, index);\r\n if (jsonSheet?.sheetName?.trim()) {\r\n return this.sayfaAdiDuzenle(jsonSheet.sheetName, index);\r\n }\r\n\r\n return this.sayfaAdiDuzenle(table.sheetName || 'Rapor', index);\r\n }\r\n\r\n private static jsonSheetBul(\r\n sheets: TExcelSheet[],\r\n sheetNo: number | undefined,\r\n index: number\r\n ): TExcelSheet | undefined {\r\n if (sheetNo !== undefined) {\r\n return sheets.find(sheet => sheet.sheetNo === sheetNo);\r\n }\r\n\r\n return sheets.find(sheet => sheet.sheetNo === index) ?? sheets[index - 1];\r\n }\r\n\r\n private static konuVer(book: TExcelBook, ilkUstBilgi: string | undefined): string {\r\n return book.subject || ilkUstBilgi || 'Rapor';\r\n }\r\n\r\n private static bosRaporSheetAdiniVer(sonuc: ExcelRaporuSonuc): string {\r\n const ilkSheetAdi = sonuc.sheets[0]?.sheetName;\r\n\r\n return this.sayfaAdiDuzenle(ilkSheetAdi || 'Rapor', 1);\r\n }\r\n\r\n private static aktifSayfayiAyarla(workbook: ExcelJS.Workbook, activeSheetNo: number, toplamSheetSayisi: number) {\r\n const aktifTab = this.aktifTabNoVer(activeSheetNo, toplamSheetSayisi);\r\n if (aktifTab === undefined) {\r\n return;\r\n }\r\n\r\n workbook.views = [{\r\n activeTab: aktifTab,\r\n firstSheet: aktifTab,\r\n height: 20000,\r\n visibility: 'visible',\r\n width: 20000,\r\n x: 0,\r\n y: 0\r\n }];\r\n }\r\n\r\n private static aktifTabNoVer(activeSheetNo: number, toplamSheetSayisi: number): number | undefined {\r\n if (toplamSheetSayisi <= 0) {\r\n return undefined;\r\n }\r\n\r\n const aktifSheetNo = Number.isFinite(activeSheetNo) && activeSheetNo > 0 ? activeSheetNo : 1;\r\n\r\n return Math.min(aktifSheetNo - 1, toplamSheetSayisi - 1);\r\n }\r\n\r\n private static sheetGrupSirasiVer(sheetGrup: ISheetGrup): number {\r\n return sheetGrup.sheetNo ?? Number.MAX_SAFE_INTEGER;\r\n }\r\n\r\n private static yeniFormatUstBilgileriYaz(\r\n worksheet: ExcelJS.Worksheet,\r\n ustBilgiler: TExcelUstBilgi[],\r\n defaultFont: TDefaultFont\r\n ): void {\r\n for (let index = 0; index < ustBilgiler.length; index++) {\r\n const ustBilgi = ustBilgiler[index]!;\r\n const hucre = worksheet.getCell(index + 1, 1);\r\n hucre.value = ustBilgi.ustBilgi;\r\n this.hucreFontunuUygula(hucre, ustBilgi.font, defaultFont);\r\n hucre.alignment = { horizontal: 'left', vertical: 'middle', wrapText: false };\r\n }\r\n }\r\n\r\n private static ustBilgileriYaz(\r\n worksheet: ExcelJS.Worksheet,\r\n ustBilgiler: TExcelUstBilgi[],\r\n defaultFont: TDefaultFont\r\n ): void {\r\n for (const ustBilgi of ustBilgiler) {\r\n const hucre = worksheet.getCell(ustBilgi.rowNo ?? 1, 1);\r\n hucre.value = ustBilgi.ustBilgi;\r\n this.hucreFontunuUygula(hucre, ustBilgi.font, defaultFont);\r\n hucre.alignment = { horizontal: 'left', vertical: 'middle', wrapText: false };\r\n }\r\n }\r\n\r\n private static notlariYazList(\r\n worksheet: ExcelJS.Worksheet,\r\n notlar: string[],\r\n notFont: IExcelFont | undefined,\r\n baslangicSatiri: number,\r\n defaultFont: TDefaultFont\r\n ): void {\r\n let satirNo = baslangicSatiri;\r\n for (const not of notlar) {\r\n const cell = worksheet.getCell(satirNo, 1);\r\n cell.value = not;\r\n this.hucreFontunuUygula(cell, notFont, defaultFont);\r\n cell.alignment = { vertical: 'middle', wrapText: true };\r\n satirNo++;\r\n }\r\n }\r\n\r\n private static sayfaDuzeniniBelirle(worksheet: ExcelJS.Worksheet, sheet: TExcelSheet): void {\r\n const { pageSetup } = sheet;\r\n if (!pageSetup) {\r\n return;\r\n }\r\n\r\n if (pageSetup.orientation === 2) {\r\n worksheet.pageSetup.orientation = 'landscape';\r\n } else if (pageSetup.orientation === 1) {\r\n worksheet.pageSetup.orientation = 'portrait';\r\n }\r\n\r\n const hasMargin =\r\n pageSetup.leftMargin !== undefined ||\r\n pageSetup.rightMargin !== undefined ||\r\n pageSetup.topMargin !== undefined ||\r\n pageSetup.bottomMargin !== undefined ||\r\n pageSetup.headerMargin !== undefined ||\r\n pageSetup.footerMargin !== undefined;\r\n\r\n if (hasMargin) {\r\n worksheet.pageSetup.margins = {\r\n left: pageSetup.leftMargin ?? 0.7,\r\n right: pageSetup.rightMargin ?? 0.7,\r\n top: pageSetup.topMargin ?? 0.75,\r\n bottom: pageSetup.bottomMargin ?? 0.75,\r\n header: pageSetup.headerMargin ?? 0.3,\r\n footer: pageSetup.footerMargin ?? 0.3\r\n };\r\n }\r\n\r\n if (pageSetup.centerHorizontally !== undefined) {\r\n worksheet.pageSetup.horizontalCentered = pageSetup.centerHorizontally;\r\n }\r\n if (pageSetup.centerVertically !== undefined) {\r\n worksheet.pageSetup.verticalCentered = pageSetup.centerVertically;\r\n }\r\n\r\n const fitTall = pageSetup.fitToPagesTall;\r\n const fitWide = pageSetup.fitToPagesWide;\r\n if (fitTall !== undefined || fitWide !== undefined || pageSetup.fitToPagesTAut || pageSetup.fitToPagesWAut) {\r\n worksheet.pageSetup.fitToPage = true;\r\n worksheet.pageSetup.fitToHeight = pageSetup.fitToPagesTAut ? 0 : (fitTall ?? 1);\r\n worksheet.pageSetup.fitToWidth = pageSetup.fitToPagesWAut ? 0 : (fitWide ?? 1);\r\n }\r\n\r\n if (typeof pageSetup.zoom === 'number' && pageSetup.zoom > 0) {\r\n worksheet.pageSetup.scale = pageSetup.zoom;\r\n }\r\n\r\n if (pageSetup.printArea) {\r\n worksheet.pageSetup.printArea = pageSetup.printArea;\r\n }\r\n\r\n const pageHeader = this.baslikAltbilgiMetniOlustur(pageSetup.leftHeader, pageSetup.centerHeader, pageSetup.rightHeader);\r\n const pageFooter = this.baslikAltbilgiMetniOlustur(pageSetup.leftFooter, pageSetup.centerFooter, pageSetup.rightFooter);\r\n if (pageHeader) {\r\n worksheet.headerFooter.oddHeader = pageHeader;\r\n }\r\n if (pageFooter) {\r\n worksheet.headerFooter.oddFooter = pageFooter;\r\n }\r\n }\r\n\r\n private static baslikAltbilgiMetniOlustur(sol?: string, orta?: string, sag?: string): string | undefined {\r\n const parcalar: string[] = [];\r\n if (sol) {\r\n parcalar.push(`&L${sol}`);\r\n }\r\n if (orta) {\r\n parcalar.push(`&C${orta}`);\r\n }\r\n if (sag) {\r\n parcalar.push(`&R${sag}`);\r\n }\r\n return parcalar.length ? parcalar.join('') : undefined;\r\n }\r\n\r\n private static tabloyuYaz(worksheet: ExcelJS.Worksheet, sonuc: ExcelRaporuSonuc, table: TExcelTable): number {\r\n if (!table.columns.length) {\r\n return table.ust ?? 1;\r\n }\r\n\r\n const startRow = Math.max(1, table.ust ?? 1);\r\n const startCol = Math.max(1, table.sol ?? 1);\r\n const gecerliTableStyle = this.gecerliTableStyleVer(sonuc.currentTableStyle);\r\n const headerTitlelari = table.columns.map(column => this.baslikMetniniHazirla(column.header.title || ''));\r\n const gorunenBaslikMetinleri = headerTitlelari.map(title => title.replaceAll('\\n', ' '));\r\n const tabloKolonAdlari = this.benzersizKolonAdlariOlustur(gorunenBaslikMetinleri);\r\n\r\n const headerFont = table.header?.font;\r\n const uygulanacakHeaderFont = headerFont?.color ? headerFont : {\r\n ...headerFont,\r\n color: 'FFFFFFFF'\r\n };\r\n const dataFont = table.data?.font;\r\n const hiddenRowSet = new Set(table.hiddenRows ?? []);\r\n\r\n const formulCeller: Array<{\r\n colIndex: number;\r\n column: TExcelTableColumn;\r\n formula: ExcelJS.CellFormulaValue;\r\n rowIndex: number;\r\n }> = [];\r\n const hucreFontRenkleri: Array<Array<string | undefined>> = [];\r\n const satirlar = table.collection.map((rowData, rowIndex) =>\r\n table.columns.map((column, colIndex) => {\r\n const hazirHucre = this.hucreDegeriniHazirla(rowData, column, sonuc.sifirlariBasmaSayi);\r\n hucreFontRenkleri[rowIndex] ??= [];\r\n hucreFontRenkleri[rowIndex]![colIndex] = hazirHucre.fontColorArgb;\r\n\r\n if (hazirHucre.deger !== null && typeof hazirHucre.deger === 'object' && 'formula' in hazirHucre.deger) {\r\n formulCeller.push({ rowIndex, colIndex, column, formula: hazirHucre.deger as ExcelJS.CellFormulaValue });\r\n return '' as ExcelJS.CellValue;\r\n }\r\n return hazirHucre.deger;\r\n })\r\n );\r\n\r\n this.kolonGrubuYaz(worksheet, startRow, startCol, table);\r\n\r\n const tableStyle = this.tableStyleDonustur(gecerliTableStyle);\r\n worksheet.addTable({\r\n name: this.tabloAdiOlustur(worksheet.name, startRow, startCol),\r\n ref: worksheet.getCell(startRow, startCol).address,\r\n headerRow: true,\r\n totalsRow: false,\r\n ...(tableStyle && { style: tableStyle }),\r\n columns: tabloKolonAdlari.map(ad => ({ name: ad, filterButton: true })),\r\n rows: satirlar\r\n });\r\n\r\n this.kolonGenislikleriniUygula(worksheet, startCol, table.columns, satirlar);\r\n\r\n const headerRow = worksheet.getRow(startRow);\r\n for (let colIndex = 0; colIndex < table.columns.length; colIndex++) {\r\n const column = table.columns[colIndex]!;\r\n const cell = headerRow.getCell(startCol + colIndex);\r\n cell.alignment = {\r\n horizontal: this.yatayHizaDonustur(column.header.horizontalAlignment),\r\n vertical: 'bottom',\r\n wrapText: false\r\n };\r\n this.hucreFontunuUygula(cell, uygulanacakHeaderFont, sonuc.defaultFont);\r\n }\r\n\r\n for (let rowIndex = 0; rowIndex < table.collection.length; rowIndex++) {\r\n const wsRow = worksheet.getRow(startRow + 1 + rowIndex);\r\n const satir1Bazli = rowIndex + 1;\r\n\r\n if (hiddenRowSet.has(satir1Bazli)) {\r\n wsRow.hidden = true;\r\n }\r\n\r\n const rowHeight = table.rowHeights?.find(rh => rh.rowNo === satir1Bazli);\r\n if (rowHeight?.height) {\r\n wsRow.height = rowHeight.height;\r\n }\r\n\r\n for (let colIndex = 0; colIndex < table.columns.length; colIndex++) {\r\n const column = table.columns[colIndex]!;\r\n const cell = wsRow.getCell(startCol + colIndex);\r\n const hucreDegeri = satirlar[rowIndex]![colIndex]!;\r\n cell.value = hucreDegeri;\r\n this.hucreFontunuUygula(cell, dataFont, sonuc.defaultFont);\r\n const hucreFontRengi = hucreFontRenkleri[rowIndex]?.[colIndex];\r\n if (hucreFontRengi) {\r\n cell.font = { ...(cell.font ?? {}), color: { argb: hucreFontRengi } };\r\n }\r\n const numFmt = this.numberFormatDonustur(column.format);\r\n if (numFmt) {\r\n cell.numFmt = numFmt;\r\n } else if (hucreDegeri instanceof Date) {\r\n cell.numFmt = this.varsayilanTarihFormatiniVer();\r\n }\r\n cell.alignment = {\r\n horizontal: this.hucreYatayHizasiniBelirle(hucreDegeri, column),\r\n vertical: this.dikeyHizaDonustur(column.verticalAlignment),\r\n wrapText: false\r\n };\r\n\r\n // Sütun rengi\r\n const colFontColor = table.columnFontColors?.[colIndex];\r\n if (colFontColor) {\r\n const argb = this.argbDonustur(colFontColor);\r\n if (argb) {\r\n cell.font = { ...(cell.font ?? {}), color: { argb } };\r\n }\r\n }\r\n const colIntColor = this.kolonRenginiBul(table.columnInteriorColors, colIndex);\r\n if (colIntColor) {\r\n const argb = this.argbDonustur(colIntColor);\r\n if (argb) {\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb } };\r\n }\r\n }\r\n\r\n // Satır rengi (sütun rengini ezer)\r\n const rowFontColor = table.rowFontColors?.find(rc => rc.rowNo === satir1Bazli);\r\n if (rowFontColor) {\r\n const argb = this.argbDonustur(rowFontColor.color);\r\n if (argb) {\r\n cell.font = { ...(cell.font ?? {}), color: { argb } };\r\n }\r\n }\r\n const rowIntColor = table.rowInteriorColors?.find(rc => rc.rowNo === satir1Bazli);\r\n if (rowIntColor) {\r\n const argb = this.argbDonustur(rowIntColor.color);\r\n if (argb) {\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb } };\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (const { rowIndex, colIndex, column, formula } of formulCeller) {\r\n const cell = worksheet.getRow(startRow + 1 + rowIndex).getCell(startCol + colIndex);\r\n cell.value = formula;\r\n cell.alignment = {\r\n ...(cell.alignment ?? {}),\r\n horizontal: this.hucreYatayHizasiniBelirle(formula, column)\r\n };\r\n }\r\n\r\n let sonSatir = startRow + table.collection.length;\r\n\r\n // Footer satırları\r\n const footer = table.footer;\r\n if (footer?.basilacak) {\r\n const ustBosluk = footer.ustBosluk ?? 0;\r\n const satirSayisi = footer.satirSayisi ?? 1;\r\n const footerBasSatir = sonSatir + 1 + ustBosluk;\r\n\r\n for (let fi = 0; fi < satirSayisi; fi++) {\r\n const footerRow = worksheet.getRow(footerBasSatir + fi);\r\n for (let colIndex = 0; colIndex < table.columns.length; colIndex++) {\r\n const column = table.columns[colIndex]!;\r\n const cell = footerRow.getCell(startCol + colIndex);\r\n this.hucreFontunuUygula(cell, footer.font, sonuc.defaultFont);\r\n\r\n const colFooter = column.footer;\r\n if (colFooter?.isFunction) {\r\n const footerFormula = this.footerFormulunuOlustur(column, colIndex, startRow, startCol, table.collection.length);\r\n if (footerFormula) {\r\n cell.value = { formula: footerFormula };\r\n const numFmt = this.numberFormatDonustur(column.format);\r\n if (numFmt) {\r\n cell.numFmt = numFmt;\r\n }\r\n }\r\n } else if (colFooter?.title) {\r\n cell.value = colFooter.title;\r\n }\r\n cell.alignment = {\r\n horizontal: colFooter?.isFunction\r\n ? this.hucreYatayHizasiniBelirle(cell.value, column)\r\n : this.yatayHizaDonustur(colFooter?.horizontalAlignment),\r\n vertical: 'middle',\r\n wrapText: false\r\n };\r\n }\r\n }\r\n\r\n sonSatir = footerBasSatir + satirSayisi - 1;\r\n }\r\n\r\n return sonSatir;\r\n }\r\n\r\n private static kolonGenislikleriniUygula(\r\n worksheet: ExcelJS.Worksheet,\r\n startCol: number,\r\n columns: TExcelTableColumn[],\r\n satirlar: ExcelJS.CellValue[][]\r\n ): void {\r\n const filtreButonuBoslukPayi = 1.25;\r\n const veriSagBoslukPayi = 1;\r\n\r\n for (let index = 0; index < columns.length; index++) {\r\n const worksheetColumn = worksheet.getColumn(startCol + index);\r\n const baslikUzunlugu = this.metinUzunlugu(this.baslikMetniniHazirla(columns[index]!.header.title));\r\n const veriUzunlugu = satirlar.reduce((max, satir) => Math.max(max, this.hucreMetinUzunlugu(satir[index]!)), 0);\r\n const tasarimGenisligi = (columns[index]!.width ?? 0) > 0 ? Math.round(columns[index]!.width! / 7) : 0;\r\n worksheetColumn.width = Math.max(\r\n 10,\r\n tasarimGenisligi,\r\n baslikUzunlugu + 2 + filtreButonuBoslukPayi,\r\n veriUzunlugu + 2 + veriSagBoslukPayi\r\n );\r\n }\r\n }\r\n\r\n private static baslikMetniniHazirla(metin: string): string {\r\n return metin\r\n .replaceAll('\\r\\n', ' ')\r\n .replaceAll('\\r', ' ')\r\n .replaceAll('\\n', ' ')\r\n .trim();\r\n }\r\n\r\n private static hucreMetinUzunlugu(deger: ExcelJS.CellValue): number {\r\n if (deger === null || deger === undefined) {\r\n return 0;\r\n }\r\n\r\n if (typeof deger === 'string') {\r\n return this.metinUzunlugu(deger);\r\n }\r\n\r\n if (typeof deger === 'number' || typeof deger === 'boolean') {\r\n return String(deger).length;\r\n }\r\n\r\n if (deger instanceof Date) {\r\n return '14.05.2026 09:13:29'.length;\r\n }\r\n\r\n if (typeof deger === 'object' && 'formula' in deger) {\r\n return this.metinUzunlugu(String(deger.formula));\r\n }\r\n\r\n return this.metinUzunlugu(String(deger));\r\n }\r\n\r\n private static hucreYatayHizasiniBelirle(\r\n deger: ExcelJS.CellValue,\r\n column: TExcelTableColumn\r\n ): ExcelJS.Alignment['horizontal'] {\r\n if (typeof deger === 'number') {\r\n return 'right';\r\n }\r\n\r\n if (typeof deger === 'object' && deger !== null && 'formula' in deger && this.sayisalFormatMi(column.format)) {\r\n return 'right';\r\n }\r\n\r\n return this.yatayHizaDonustur(column.horizontalAlignment);\r\n }\r\n\r\n private static sayisalFormatMi(format: number | undefined): boolean {\r\n switch (format) {\r\n case NumberFormatlar.long:\r\n case NumberFormatlar.real:\r\n case NumberFormatlar.yuzde_BirHane:\r\n case 2:\r\n case 5:\r\n case 7:\r\n case 11:\r\n case 12:\r\n case 28:\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private static metinUzunlugu(metin: string): number {\r\n return metin\r\n .replaceAll('\\r', '')\r\n .split('\\n')\r\n .reduce((max, parca) => Math.max(max, parca.trim().length), 0);\r\n }\r\n\r\n private static kolonGrubuYaz(\r\n worksheet: ExcelJS.Worksheet,\r\n startRow: number,\r\n startCol: number,\r\n table: TExcelTable\r\n ): void {\r\n const columnGroups = table.columnGroup;\r\n if (!columnGroups?.length || startRow <= 1) {\r\n return;\r\n }\r\n\r\n const grupSatiri = startRow - 1;\r\n for (const columnGroup of columnGroups) {\r\n const baslangicIndex = table.columns.findIndex(column => column.property === columnGroup.groupStart);\r\n const bitisIndex = table.columns.findIndex(column => column.property === columnGroup.groupEnd);\r\n const baslangicKolonu = baslangicIndex >= 0 ? startCol + baslangicIndex : undefined;\r\n const bitisKolonu = bitisIndex >= 0 ? startCol + bitisIndex : undefined;\r\n if (!baslangicKolonu || !bitisKolonu || bitisKolonu < baslangicKolonu) {\r\n continue;\r\n }\r\n\r\n worksheet.mergeCells(grupSatiri, baslangicKolonu, grupSatiri, bitisKolonu);\r\n\r\n const grupHucre = worksheet.getCell(grupSatiri, baslangicKolonu);\r\n grupHucre.value = columnGroup.groupName;\r\n grupHucre.alignment = { horizontal: 'center', vertical: 'middle' };\r\n grupHucre.font = { bold: true, size: 11, color: { argb: 'FFF79646' } };\r\n grupHucre.fill = {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: { argb: 'FFFFFFFF' }\r\n };\r\n\r\n for (let col = baslangicKolonu; col <= bitisKolonu; col++) {\r\n const hucre = worksheet.getCell(grupSatiri, col);\r\n hucre.border = {\r\n ...hucre.border,\r\n top: { style: 'medium', color: { argb: 'FFF79646' } },\r\n ...(col === baslangicKolonu ? { left: { style: 'medium', color: { argb: 'FFF79646' } } } : (hucre.border?.left ? { left: hucre.border.left } : {})),\r\n ...(col === bitisKolonu ? { right: { style: 'medium', color: { argb: 'FFF79646' } } } : (hucre.border?.right ? { right: hucre.border.right } : {}))\r\n };\r\n }\r\n }\r\n }\r\n\r\n private static hucreDegeriniHazirla(\r\n row: TExcelTableRow,\r\n column: TExcelTableColumn,\r\n sifirlariBasmaSayi: boolean\r\n ): IHazirHucreDegeri {\r\n const value = row[column.property];\r\n\r\n if ((typeof value === 'string') && value.startsWith('=')) {\r\n return { deger: { formula: this.excelFormuluneDonustur(value) } };\r\n }\r\n\r\n if ((typeof value === 'number') && sifirlariBasmaSayi && (value === 0)) {\r\n return { deger: '' };\r\n }\r\n\r\n if (value === null || value === undefined) {\r\n return { deger: '' };\r\n }\r\n\r\n const htmlHucre = (column.htmlKoduGelebilir === true) && typeof value === 'string' ? this.htmlHucreIceriginiHazirla(value) : undefined;\r\n const normallesenDeger = htmlHucre?.deger ?? value;\r\n\r\n if ((typeof normallesenDeger === 'string') && normallesenDeger.startsWith('=')) {\r\n return this.hazirHucreDegeriOlustur(\r\n { formula: this.excelFormuluneDonustur(normallesenDeger) },\r\n htmlHucre?.fontColorArgb\r\n );\r\n }\r\n\r\n if ((typeof value === 'string') && (typeof normallesenDeger === 'string')) {\r\n const tarihDegeri = this.tarihStringiniDateeDonustur(normallesenDeger);\r\n if (tarihDegeri) {\r\n return this.hazirHucreDegeriOlustur(tarihDegeri, htmlHucre?.fontColorArgb);\r\n }\r\n }\r\n\r\n if (normallesenDeger instanceof Date) {\r\n return this.hazirHucreDegeriOlustur(\r\n this.excelIcinTarihiNormalizeEt(normallesenDeger),\r\n htmlHucre?.fontColorArgb\r\n );\r\n }\r\n\r\n if (typeof normallesenDeger === 'boolean') {\r\n return this.hazirHucreDegeriOlustur(normallesenDeger ? '+' : '', htmlHucre?.fontColorArgb);\r\n }\r\n\r\n if ((typeof normallesenDeger === 'number') || (typeof normallesenDeger === 'string')) {\r\n return this.hazirHucreDegeriOlustur(normallesenDeger, htmlHucre?.fontColorArgb);\r\n }\r\n\r\n return this.hazirHucreDegeriOlustur(String(normallesenDeger), htmlHucre?.fontColorArgb);\r\n }\r\n\r\n private static hazirHucreDegeriOlustur(deger: ExcelJS.CellValue, fontColorArgb?: string): IHazirHucreDegeri {\r\n return {\r\n deger,\r\n ...(fontColorArgb ? { fontColorArgb } : {})\r\n };\r\n }\r\n\r\n private static htmlHucreIceriginiHazirla(value: string): { deger: string; fontColorArgb?: string } | undefined {\r\n if (!/[<>]/.test(value)) {\r\n return undefined;\r\n }\r\n\r\n const deger = value\r\n .replaceAll(/<br\\s*\\/?>/gi, '\\n')\r\n .replaceAll(/<\\/p\\s*>/gi, '\\n')\r\n .replaceAll(/<p\\b[^>]*>/gi, '')\r\n .replaceAll(/<\\/div\\s*>/gi, '\\n')\r\n .replaceAll(/<div\\b[^>]*>/gi, '')\r\n .replaceAll(/<[^>]+>/g, '')\r\n .replaceAll(/ /gi, ' ')\r\n .trim();\r\n\r\n const colorValue = this.htmlFontRenginiBul(value);\r\n const fontColorArgb = this.argbDonustur(colorValue);\r\n\r\n if ((deger === value) && !fontColorArgb) {\r\n return undefined;\r\n }\r\n\r\n return { deger, ...(fontColorArgb && { fontColorArgb }) };\r\n }\r\n\r\n private static htmlFontRenginiBul(value: string): string | undefined {\r\n const fontColorMatch = /<font\\b[^>]*\\bcolor\\s*=\\s*[\"']?([^\"' >]+)[\"']?[^>]*>/i.exec(value);\r\n if (fontColorMatch?.[1]) {\r\n return fontColorMatch[1].trim();\r\n }\r\n\r\n const styleColorMatch = /<(?:font|span)\\b[^>]*\\bstyle\\s*=\\s*[\"'][^\"']*\\bcolor\\s*:\\s*([^;\"']+)/i.exec(value);\r\n if (styleColorMatch?.[1]) {\r\n return styleColorMatch[1].trim();\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static tarihStringiniDateeDonustur(value: string): Date | undefined {\r\n const trimmedValue = value.trim();\r\n const isoDateMatch = /^(\\d{4})-(\\d{2})-(\\d{2})(?:$|[T\\s])/.exec(trimmedValue);\r\n\r\n if (!isoDateMatch) {\r\n return undefined;\r\n }\r\n\r\n const year = Number(isoDateMatch[1]);\r\n const month = Number(isoDateMatch[2]);\r\n const day = Number(isoDateMatch[3]);\r\n\r\n if (!Number.isInteger(year) || !Number.isInteger(month) || !Number.isInteger(day)) {\r\n return undefined;\r\n }\r\n\r\n const date = new Date(year, month - 1, day);\r\n if (date.getFullYear() !== year || date.getMonth() !== (month - 1) || date.getDate() !== day) {\r\n return undefined;\r\n }\r\n\r\n return new Date(Date.UTC(year, month - 1, day, 12, 0, 0, 0));\r\n }\r\n\r\n private static excelIcinTarihiNormalizeEt(value: Date): Date {\r\n if (value.getHours() !== 0 || value.getMinutes() !== 0 || value.getSeconds() !== 0 || value.getMilliseconds() !== 0) {\r\n return value;\r\n }\r\n\r\n return new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate(), 12, 0, 0, 0));\r\n }\r\n\r\n private static varsayilanTarihFormatiniVer(): string {\r\n return 'dd.mm.yyyy';\r\n }\r\n\r\n private static benzersizKolonAdlariOlustur(adlar: string[]): string[] {\r\n const sayaclar = new Map<string, number>();\r\n return adlar.map(ad => {\r\n const temelAd = ad || ' ';\r\n const sayi = sayaclar.get(temelAd) ?? 0;\r\n sayaclar.set(temelAd, sayi + 1);\r\n return sayi === 0 ? temelAd : `${temelAd}_${sayi}`;\r\n });\r\n }\r\n\r\n private static hucreFontunuUygula(\r\n cell: ExcelJS.Cell,\r\n font: IExcelFont | undefined,\r\n defaultFont?: TDefaultFont\r\n ): void {\r\n const style = font?.style ?? 0;\r\n const excelFont: Partial<ExcelJS.Font> = {};\r\n\r\n const fontName = font?.name || defaultFont?.name;\r\n if (fontName) {\r\n excelFont.name = fontName;\r\n }\r\n\r\n const fontSize = (font?.size && font.size > 0) ? font.size : defaultFont?.size;\r\n if (fontSize && fontSize > 0) {\r\n excelFont.size = fontSize;\r\n }\r\n\r\n if (font?.color) {\r\n const color = this.argbDonustur(font.color);\r\n if (color) {\r\n excelFont.color = { argb: color };\r\n }\r\n }\r\n\r\n excelFont.bold = Boolean(style & FontStyle.bold);\r\n excelFont.italic = Boolean(style & FontStyle.italic);\r\n excelFont.underline = Boolean(style & FontStyle.underline);\r\n\r\n cell.font = excelFont;\r\n }\r\n\r\n private static gecerliTableStyleVer(tableStyle: string | undefined): string | undefined {\r\n if (!tableStyle) {\r\n return undefined;\r\n }\r\n\r\n const style = tableStyle.trim();\r\n if (/^TableStyleLight([1-9]|1\\d|2[0-1])$/.test(style)) {\r\n return style;\r\n }\r\n if (/^TableStyleMedium([1-9]|1\\d|2[0-1])$/.test(style)) {\r\n return style;\r\n }\r\n if (/^TableStyleDark([1-9]|10|11)$/.test(style)) {\r\n return style;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static tableStyleDonustur(theme: string | undefined): ExcelJS.TableStyleProperties | undefined {\r\n if (!theme) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n theme: theme as NonNullable<ExcelJS.TableStyleProperties['theme']>,\r\n showRowStripes: true\r\n };\r\n }\r\n\r\n private static tabloAdiOlustur(sheetName: string, startRow: number, startCol: number): string {\r\n const temizSheetName = sheetName.replaceAll(/[^A-Za-z0-9]/g, '_');\r\n return `T_${temizSheetName}_R${startRow}C${startCol}`;\r\n }\r\n\r\n private static yatayHizaDonustur(value: XLHAlign | undefined): ExcelJS.Alignment['horizontal'] {\r\n switch (value) {\r\n case XLHAlign.xlHAlignCenter: return 'center';\r\n case XLHAlign.xlHAlignCenterAcrossSelection: return 'centerContinuous';\r\n case XLHAlign.xlHAlignDistributed: return 'distributed';\r\n case XLHAlign.xlHAlignFill: return 'fill';\r\n case XLHAlign.xlHAlignGeneral: return 'left';\r\n case XLHAlign.xlHAlignJustify: return 'justify';\r\n case XLHAlign.xlHAlignLeft: return 'left';\r\n case XLHAlign.xlHAlignRight: return 'right';\r\n default: return 'left';\r\n }\r\n }\r\n\r\n private static dikeyHizaDonustur(value: XLVAlign | undefined): ExcelJS.Alignment['vertical'] {\r\n switch (value) {\r\n case XLVAlign.xlVAlignTop: return 'top';\r\n case XLVAlign.xlVAlignBottom: return 'bottom';\r\n case XLVAlign.xlVAlignDistributed: return 'distributed';\r\n case XLVAlign.xlVAlignJustify: return 'justify';\r\n default: return 'middle';\r\n }\r\n }\r\n\r\n private static argbDonustur(color: string | undefined): string | undefined {\r\n if (!color) {\r\n return undefined;\r\n }\r\n\r\n const cssColor = color.trim().toLowerCase();\r\n const rgbMatch = cssColor.match(/^rgb\\s*\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/i);\r\n if (rgbMatch) {\r\n const rgbDegerleri = rgbMatch.slice(1).map(value => Number(value));\r\n if (rgbDegerleri.every(value => Number.isInteger(value) && value >= 0 && value <= 255)) {\r\n return `FF${rgbDegerleri.map(value => value.toString(16).padStart(2, '0')).join('').toUpperCase()}`;\r\n }\r\n }\r\n\r\n const namedColors: Record<string, string> = {\r\n black: 'FF000000',\r\n blue: 'FF0000FF',\r\n cyan: 'FF00FFFF',\r\n gray: 'FF808080',\r\n green: 'FF008000',\r\n grey: 'FF808080',\r\n magenta: 'FFFF00FF',\r\n orange: 'FFFFA500',\r\n purple: 'FF800080',\r\n red: 'FFFF0000',\r\n white: 'FFFFFFFF',\r\n yellow: 'FFFFFF00'\r\n };\r\n if (namedColors[cssColor]) {\r\n return namedColors[cssColor];\r\n }\r\n\r\n const hexColor = cssColor.replace('#', '');\r\n if (/^[0-9a-f]{6}$/i.test(hexColor)) {\r\n return `FF${hexColor.toUpperCase()}`;\r\n }\r\n\r\n if (/^[0-9A-Fa-f]{8}$/.test(color)) {\r\n return color.toUpperCase();\r\n }\r\n\r\n const numericColor = Number(color);\r\n if (!Number.isFinite(numericColor)) {\r\n return undefined;\r\n }\r\n\r\n const r = numericColor & 255;\r\n const g = (numericColor >> 8) & 255;\r\n const b = (numericColor >> 16) & 255;\r\n\r\n return `FF${[r, g, b].map(value => value.toString(16).padStart(2, '0')).join('').toUpperCase()}`;\r\n }\r\n\r\n private static kolonRenginiBul(\r\n kolonRenkleri: TExcelTable['columnInteriorColors'] | undefined,\r\n colIndex: number\r\n ): string | undefined {\r\n const kolonRengi = kolonRenkleri?.[colIndex];\r\n if (typeof kolonRengi === 'string') {\r\n return kolonRengi;\r\n }\r\n\r\n const kolonNo = colIndex + 1;\r\n for (const kolon of kolonRenkleri ?? []) {\r\n if (typeof kolon === 'object' && kolon.columnNo === kolonNo) {\r\n return kolon.color;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static excelFormuluneDonustur(formul: string): string {\r\n const ceviriler: Record<string, string> = {\r\n 'TOPLA': 'SUM',\r\n 'EĞER': 'IF',\r\n 'VE': 'AND',\r\n 'VEYA': 'OR',\r\n 'YUVARLA': 'ROUND',\r\n 'EĞERSAY': 'COUNTIF',\r\n 'ETOPLA': 'SUMIF',\r\n 'ORTALAMA': 'AVERAGE',\r\n 'MİN': 'MIN',\r\n 'MAK': 'MAX'\r\n };\r\n\r\n let sonuc = formul.slice(1).replaceAll(';', ',');\r\n\r\n for (const [kaynak, hedef] of Object.entries(ceviriler)) {\r\n const pattern = new RegExp(`\\\\b${kaynak}\\\\b`, 'g');\r\n sonuc = sonuc.replace(pattern, hedef);\r\n }\r\n\r\n return sonuc;\r\n }\r\n\r\n private static footerFormulunuOlustur(\r\n column: TExcelTableColumn,\r\n colIndex: number,\r\n startRow: number,\r\n startCol: number,\r\n veriSatirSayisi: number\r\n ): string | undefined {\r\n if (!veriSatirSayisi) {\r\n return undefined;\r\n }\r\n\r\n const fonksiyon = String(column.footer?.function ?? '').trim().toUpperCase();\r\n if (!fonksiyon) {\r\n return undefined;\r\n }\r\n\r\n const kolonHarf = worksheetColumnName(startCol + colIndex);\r\n const ilkVeriSatiri = startRow + 1;\r\n const sonVeriSatiri = startRow + veriSatirSayisi;\r\n const aralik = `${kolonHarf}${ilkVeriSatiri}:${kolonHarf}${sonVeriSatiri}`;\r\n\r\n if (fonksiyon === 'SUBTOTAL') {\r\n return `SUBTOTAL(9,${aralik})`;\r\n }\r\n\r\n const desteklenenFonksiyonlar = ['SUM', 'AVERAGE', 'COUNT', 'COUNTA', 'MAX', 'MIN'];\r\n if (desteklenenFonksiyonlar.includes(fonksiyon)) {\r\n return `${fonksiyon}(${aralik})`;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static sayfaAdiDuzenle(sheetName: string, index: number): string {\r\n const temizAd = sheetName\r\n .replaceAll(/[\\\\/*?:[\\]]/g, ' ')\r\n .trim()\r\n .slice(0, 31);\r\n\r\n if (temizAd) {\r\n return temizAd;\r\n }\r\n\r\n return `Sheet${index}`;\r\n }\r\n\r\n private static dosyaAdiDuzenle(dosyaAdi: string): string {\r\n const temizAd = dosyaAdi\r\n .replaceAll(/[<>:\"/\\\\|?*]/g, ' ')\r\n .trim()\r\n .replaceAll(/\\s+/g, ' ');\r\n\r\n if (temizAd) {\r\n return temizAd;\r\n }\r\n\r\n return 'Rapor';\r\n }\r\n\r\n private static numberFormatDonustur(format: number | undefined): string | undefined {\r\n switch (format) {\r\n case NumberFormatlar.long:\r\n case 2:\r\n case 5:\r\n case 11:\r\n return '#,##0';\r\n\r\n case NumberFormatlar.real:\r\n case 7:\r\n case 12:\r\n return '#,##0.00';\r\n\r\n case 8:\r\n return 'hh:mm';\r\n\r\n case NumberFormatlar.tarih:\r\n return 'dd.mm.yyyy';\r\n\r\n case NumberFormatlar.tarih_yyyymmdd_tireli:\r\n return 'yyyy-mm-dd';\r\n\r\n case NumberFormatlar.tarih_AAAAYYYY:\r\n return 'mmmm yyyy';\r\n\r\n case NumberFormatlar.tarih_GGAAAAYYYY:\r\n return 'dd mmmm yyyy';\r\n\r\n case NumberFormatlar.tarih_YYYYMMDD:\r\n return 'yyyy/mm/dd';\r\n\r\n case NumberFormatlar.tarih_LongDate:\r\n return 'dd mmmm yyyy dddd';\r\n\r\n case NumberFormatlar.tarih_ga:\r\n return 'd.m;@';\r\n\r\n case NumberFormatlar.tarih_ggaa:\r\n return 'dd.mm';\r\n\r\n case NumberFormatlar.tarih_gaaaa:\r\n return 'd.mmmm';\r\n\r\n case NumberFormatlar.tarih_ggaaa:\r\n return 'dd.mmm';\r\n\r\n case NumberFormatlar.tarih_ggaaaa:\r\n return 'dd.mmmm';\r\n\r\n case NumberFormatlar.yuzde_BirHane:\r\n return '0.0%';\r\n\r\n case NumberFormatlar.genel:\r\n return 'General';\r\n\r\n case NumberFormatlar.metin:\r\n return '@';\r\n\r\n case NumberFormatlar.imp:\r\n return '#,##0 \"imp\"';\r\n\r\n case NumberFormatlar.clicks:\r\n return '#,##0 \"Clicks\"';\r\n\r\n case NumberFormatlar.gun:\r\n return '#,##0 \"Gün\"';\r\n\r\n case NumberFormatlar.view:\r\n return '#,##0 \"View\"';\r\n\r\n case NumberFormatlar.session:\r\n return '#,##0 \"Session\"';\r\n\r\n case NumberFormatlar.kisi:\r\n return '#,##0 \"Kişi\"';\r\n\r\n case NumberFormatlar.okunma:\r\n return '#,##0 \"Okunma\"';\r\n\r\n case NumberFormatlar.dinlenme:\r\n return '#,##0 \"Dinlenme\"';\r\n\r\n case NumberFormatlar.lead:\r\n return '#,##0 \"Lead\"';\r\n\r\n case NumberFormatlar.gizli:\r\n return ';;;';\r\n\r\n case 28:\r\n return '#,##0.00 \"₺\"';\r\n\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\nfunction worksheetColumnName(columnNumber: number): string {\r\n let kalan = columnNumber;\r\n let sonuc = '';\r\n\r\n while (kalan > 0) {\r\n const mod = (kalan - 1) % 26;\r\n sonuc = String.fromCharCode(65 + mod) + sonuc;\r\n kalan = Math.floor((kalan - 1) / 26);\r\n }\r\n\r\n return sonuc;\r\n}\r\n","import { HttpResponse } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\n\r\nimport saveAs from 'file-saver';\r\n\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { GlobalFunctions } from 'limitng/api';\r\nimport { ToastMessageOptions } from 'primeng/api';\r\nimport { ExcelRaporuSonuc } from './models/excelRaporuSonuc';\r\nimport { JsonToExcelParser } from './models/jsonToExcelParser';\r\n\r\ninterface JsonExcelResponseOptions<T extends ExcelRaporuSonuc> {\r\n createResult: () => T;\r\n errorLogMessage: string;\r\n fileName?: string;\r\n getFileName?: (result: T) => string;\r\n successDetail?: string;\r\n successDetailKey?: string;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class BlobResponseHandlerService {\r\n private readonly translateService = inject(TranslateService);\r\n\r\n handleReportResponse(\r\n response: HttpResponse<Blob>,\r\n successDetailKey: string,\r\n htmlTitle = 'Rapor Sonucu'\r\n ): ToastMessageOptions | null {\r\n const body = response.body;\r\n\r\n if (!body) {\r\n return null;\r\n }\r\n\r\n const contentDisposition = response.headers.get('content-disposition');\r\n const contentType = response.headers.get('Content-Type') ?? body.type;\r\n\r\n if (contentDisposition) {\r\n return this.handleDownload(body, contentDisposition, contentType, successDetailKey);\r\n }\r\n\r\n this.handleViewHtml(body, htmlTitle);\r\n return null;\r\n }\r\n\r\n downloadResponse(response: HttpResponse<Blob | string>): boolean {\r\n const body = response.body;\r\n\r\n if (!body) {\r\n return false;\r\n }\r\n\r\n const contentDisposition = response.headers.get('content-disposition');\r\n\r\n if (!contentDisposition) {\r\n return false;\r\n }\r\n\r\n const contentType = response.headers.get('Content-Type') ?? (body instanceof Blob ? body.type : 'application/octet-stream');\r\n\r\n this.downloadBlob(body, contentDisposition, contentType);\r\n return true;\r\n }\r\n\r\n viewHtmlBody(body: Blob | null, htmlTitle = 'Rapor Sonucu'): void {\r\n if (!body) {\r\n return;\r\n }\r\n\r\n this.handleViewHtml(body, htmlTitle);\r\n }\r\n\r\n async handleJsonExcelResponse<T extends ExcelRaporuSonuc>(\r\n body: Blob | null,\r\n options: JsonExcelResponseOptions<T>\r\n ): Promise<ToastMessageOptions | null> {\r\n if (!body) {\r\n return null;\r\n }\r\n\r\n try {\r\n const jsonStr = await body.text();\r\n const result = Object.assign(options.createResult(), JSON.parse(jsonStr) as T);\r\n const fileName = options.getFileName?.(result) ?? options.fileName;\r\n\r\n if (!fileName) {\r\n return null;\r\n }\r\n\r\n await JsonToExcelParser.indir(result, fileName);\r\n\r\n return {\r\n severity: 'success',\r\n summary: this.translateService.instant('genel.bilgi'),\r\n detail: options.successDetail ?? this.translateService.instant(options.successDetailKey ?? '')\r\n };\r\n } catch (error) {\r\n console.error(options.errorLogMessage, error);\r\n return null;\r\n }\r\n }\r\n\r\n private handleDownload(body: BlobPart, contentDisposition: string, contentType: string, successDetailKey: string): ToastMessageOptions {\r\n this.downloadBlob(body, contentDisposition, contentType);\r\n\r\n return {\r\n severity: 'success',\r\n summary: this.translateService.instant('genel.bilgi'),\r\n detail: this.translateService.instant(successDetailKey)\r\n };\r\n }\r\n\r\n private downloadBlob(body: BlobPart, contentDisposition: string, contentType: string): void {\r\n const decodedContentDisposition = contentDisposition.replaceAll(\r\n /\\\\u([0-9A-Fa-f]{4})/g,\r\n (_, code: string) => String.fromCodePoint(Number.parseInt(code, 16))\r\n );\r\n const filename = GlobalFunctions.getFilenameFromContentDisposition(decodedContentDisposition);\r\n const blob = new Blob([body], { type: contentType });\r\n\r\n saveAs(blob, filename);\r\n }\r\n\r\n private handleViewHtml(body: Blob, htmlTitle: string): void {\r\n body.text().then((html: string) => {\r\n const wnd = window.open('', '_blank');\r\n\r\n if (!wnd) {\r\n return;\r\n }\r\n\r\n wnd.document.title = htmlTitle;\r\n\r\n const iframe = wnd.document.createElement('iframe');\r\n iframe.style.width = '100%';\r\n iframe.style.height = '100%';\r\n iframe.style.border = 'none';\r\n iframe.setAttribute('srcdoc', html);\r\n\r\n wnd.document.body.style.margin = '0';\r\n wnd.document.body.style.padding = '0';\r\n wnd.document.body.appendChild(iframe);\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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"}
|
package/package.json
CHANGED
|
@@ -104,7 +104,7 @@ interface IExcelRaporuTableColumnFooter {
|
|
|
104
104
|
}
|
|
105
105
|
interface IExcelRaporuTableColumn {
|
|
106
106
|
property: string;
|
|
107
|
-
arrayType
|
|
107
|
+
arrayType?: VariableType;
|
|
108
108
|
header: IExcelRaporuTableColumnHeader;
|
|
109
109
|
footer?: IExcelRaporuTableColumnFooter;
|
|
110
110
|
horizontalAlignment?: XLHAlign;
|
|
@@ -343,5 +343,5 @@ declare class JsonToExcelParser {
|
|
|
343
343
|
}
|
|
344
344
|
|
|
345
345
|
export { BlobResponseHandlerService, ExcelRaporuSonuc, JsonToExcelParser, JsonToExcelReportBuilder, JsonToExcelSheetBuilder, JsonToExcelTableBuilder };
|
|
346
|
-
export type { ExcelHucreDegeri, IJsonToExcelSheetOptions, IJsonToExcelTableOptions };
|
|
346
|
+
export type { ExcelHucreDegeri, IExcelRaporuTableColumn, IJsonToExcelSheetOptions, IJsonToExcelTableOptions };
|
|
347
347
|
//# sourceMappingURL=limitng-blob-response-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitng-blob-response-handler.d.ts","sources":["../../src/app/components/blob-response-handler/models/excelRaporuSonuc.ts","../../src/app/components/blob-response-handler/blob-response-handler.service.ts","../../src/app/components/blob-response-handler/models/jsonToExcelParser.ts"],"mappings":";;;;;;AAGM,KAAM,gBAAgB,aAAa,IAAI;AAE7C,cAAa,gBAAgB;UACrB,gBAAgB;WAKf,gBAAgB;iBAEV,uBAAuB;AAKpC;;;AAGA;AACA;AAGA,kBAAc,0BAA0B;eAC7B,yBAAyB;UAC9B,oBAAoB;AAC1B;AACA,aAAS,iBAAiB;YAGlB,iBAAiB;YAEjB,kBAAkB;AAG3B;AAED,UAAU,gBAAgB;;;;;AAKzB;AAED,UAAU,uBAAuB;;;AAGhC;AAED,UAAU,gBAAgB;;;;;;;;AAQzB;AAED,UAAU,gBAAgB;;;;;AAKzB;AAED,UAAU,kBAAkB;;AAE3B;AAED,UAAU,0BAA0B;;;WAG3B,gBAAgB;AACxB;AAED,UAAU,yBAAyB;WAC1B,gBAAgB;AACvB;AACA;AACD;AAED,UAAU,oBAAoB;WACrB,gBAAgB;AACxB;AAED,UAAU,kBAAkB;;;;;AAK3B;AAED,UAAU,oBAAoB;;AAE7B;AAED,UAAU,qBAAqB;;;;WAItB,gBAAgB;eACZ,oBAAoB;aACtB,kBAAkB;AAC5B;AAED,UAAU,qBAAqB;WACtB,gBAAgB;eACZ,oBAAoB;aACtB,kBAAkB;AAC5B;AAED,UAAU,uBAAuB;;;;AAIhC;AAED,UAAU,6BAA6B;;0BAEf,QAAQ;wBACV,QAAQ;AAC7B;AAED,UAAU,6BAA6B;;;;0BAIf,QAAQ;wBACV,QAAQ;AAC7B;
|
|
1
|
+
{"version":3,"file":"limitng-blob-response-handler.d.ts","sources":["../../src/app/components/blob-response-handler/models/excelRaporuSonuc.ts","../../src/app/components/blob-response-handler/blob-response-handler.service.ts","../../src/app/components/blob-response-handler/models/jsonToExcelParser.ts"],"mappings":"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","names":[]}
|