limitng 0.21.81 → 0.21.82

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(/&nbsp;/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(/&nbsp;/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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "limitng",
3
- "version": "0.21.81",
3
+ "version": "0.21.82",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "http://limitdestek.com:3000/Limit/LimitNG"
@@ -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":"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","names":[]}
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":[]}