limitng 0.23.9 → 0.23.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/limitng-alt-buyuk-kart.mjs +2 -2
- package/fesm2022/limitng-alt-buyuk-kart.mjs.map +1 -1
- package/fesm2022/limitng-blob-response-handler.mjs +211 -35
- package/fesm2022/limitng-blob-response-handler.mjs.map +1 -1
- package/package.json +1 -1
- package/types/limitng-blob-response-handler.d.ts +9 -4
- package/types/limitng-blob-response-handler.d.ts.map +1 -1
|
@@ -21,13 +21,13 @@ class AltBuyukKartComponent {
|
|
|
21
21
|
...(ngDevMode ? [{ debugName: "solAlt" }] : /* istanbul ignore next */ []));
|
|
22
22
|
}
|
|
23
23
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: AltBuyukKartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: AltBuyukKartComponent, isStandalone: true, selector: "alt-buyuk-kart", inputs: { baslik: { classPropertyName: "baslik", publicName: "baslik", isSignal: true, isRequired: true, transformFunction: null }, baslikRenk: { classPropertyName: "baslikRenk", publicName: "baslikRenk", isSignal: true, isRequired: true, transformFunction: null }, genislik: { classPropertyName: "genislik", publicName: "genislik", isSignal: true, isRequired: false, transformFunction: null }, yukseklik: { classPropertyName: "yukseklik", publicName: "yukseklik", isSignal: true, isRequired: false, transformFunction: null }, baslikYukseklik: { classPropertyName: "baslikYukseklik", publicName: "baslikYukseklik", isSignal: true, isRequired: false, transformFunction: null }, baslikFontSize: { classPropertyName: "baslikFontSize", publicName: "baslikFontSize", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.width": "genislik()" } }, queries: [{ propertyName: "sagAlt", first: true, predicate: ["sagAlt"], descendants: true, isSignal: true }, { propertyName: "solAlt", first: true, predicate: ["solAlt"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"wrapper\" [style.height.rem]=\"yukseklik()\">\r\n <div class=\"alt-baslik\" [style.backgroundColor]=\"baslikRenk()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.top.rem]=\"baslikUst()\">\r\n </div>\r\n\r\n <div class=\"baslik-yazi\" [style.font-size.rem]=\"baslikFontSize()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.color]=\"baslikRenk()\" [style.top.rem]=\"baslikUst()\">\r\n <b> {{ baslik() }} </b>\r\n </div>\r\n\r\n @if (sagAlt()) {\r\n <div class=\"sag-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"sagAlt(); context: {$implicit: sagIcerik}\">\r\n {{ sagIcerik }}\r\n </ng-container>\r\n </div>\r\n }\r\n @if (solAlt()) {\r\n <div class=\"sol-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"solAlt(); context: {$implicit: solIcerik}\">\r\n {{ solIcerik
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: AltBuyukKartComponent, isStandalone: true, selector: "alt-buyuk-kart", inputs: { baslik: { classPropertyName: "baslik", publicName: "baslik", isSignal: true, isRequired: true, transformFunction: null }, baslikRenk: { classPropertyName: "baslikRenk", publicName: "baslikRenk", isSignal: true, isRequired: true, transformFunction: null }, genislik: { classPropertyName: "genislik", publicName: "genislik", isSignal: true, isRequired: false, transformFunction: null }, yukseklik: { classPropertyName: "yukseklik", publicName: "yukseklik", isSignal: true, isRequired: false, transformFunction: null }, baslikYukseklik: { classPropertyName: "baslikYukseklik", publicName: "baslikYukseklik", isSignal: true, isRequired: false, transformFunction: null }, baslikFontSize: { classPropertyName: "baslikFontSize", publicName: "baslikFontSize", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.width": "genislik()" } }, queries: [{ propertyName: "sagAlt", first: true, predicate: ["sagAlt"], descendants: true, isSignal: true }, { propertyName: "solAlt", first: true, predicate: ["solAlt"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"wrapper\" [style.height.rem]=\"yukseklik()\">\r\n <div class=\"alt-baslik\" [style.backgroundColor]=\"baslikRenk()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.top.rem]=\"baslikUst()\">\r\n </div>\r\n\r\n <div class=\"baslik-yazi\" [style.font-size.rem]=\"baslikFontSize()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.color]=\"baslikRenk()\" [style.top.rem]=\"baslikUst()\">\r\n <b> {{ baslik() }} </b>\r\n </div>\r\n\r\n @if (sagAlt()) {\r\n <div class=\"sag-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"sagAlt(); context: {$implicit: sagIcerik}\">\r\n {{ sagIcerik }}\r\n </ng-container>\r\n </div>\r\n }\r\n @if (solAlt()) {\r\n <div class=\"sol-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"solAlt(); context: {$implicit: solIcerik}\">\r\n {{ solIcerik }}\r\n </ng-container>\r\n </div>\r\n }\r\n <ng-content />\r\n</div>\r\n", styles: [":host{float:left;margin:.5em 0 0 .5em;background-color:transparent;border:transparent}:host .wrapper{background:var(--p-form-field-background);position:relative;border-radius:.35em;box-shadow:inset 0 0 .35em .15em #0003}:host .alt-baslik{position:absolute;opacity:.2;width:100%}:host .baslik-yazi{position:absolute;width:100%;display:flex;justify-content:center;align-items:center;padding-right:.4rem;padding-left:.4rem;line-height:1.5}:host .sag-alt{position:absolute;padding:.4em;width:50%;text-align:right;left:50%;z-index:1000}:host .sol-alt{position:absolute;padding:.4em;width:50%;text-align:left;z-index:1000}\n/*!_variable.scss*/\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
25
25
|
}
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: AltBuyukKartComponent, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
28
|
args: [{ selector: 'alt-buyuk-kart', imports: [NgTemplateOutlet], host: {
|
|
29
29
|
'[style.width]': 'genislik()'
|
|
30
|
-
}, template: "<div class=\"wrapper\" [style.height.rem]=\"yukseklik()\">\r\n <div class=\"alt-baslik\" [style.backgroundColor]=\"baslikRenk()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.top.rem]=\"baslikUst()\">\r\n </div>\r\n\r\n <div class=\"baslik-yazi\" [style.font-size.rem]=\"baslikFontSize()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.color]=\"baslikRenk()\" [style.top.rem]=\"baslikUst()\">\r\n <b> {{ baslik() }} </b>\r\n </div>\r\n\r\n @if (sagAlt()) {\r\n <div class=\"sag-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"sagAlt(); context: {$implicit: sagIcerik}\">\r\n {{ sagIcerik }}\r\n </ng-container>\r\n </div>\r\n }\r\n @if (solAlt()) {\r\n <div class=\"sol-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"solAlt(); context: {$implicit: solIcerik}\">\r\n {{ solIcerik
|
|
30
|
+
}, template: "<div class=\"wrapper\" [style.height.rem]=\"yukseklik()\">\r\n <div class=\"alt-baslik\" [style.backgroundColor]=\"baslikRenk()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.top.rem]=\"baslikUst()\">\r\n </div>\r\n\r\n <div class=\"baslik-yazi\" [style.font-size.rem]=\"baslikFontSize()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.color]=\"baslikRenk()\" [style.top.rem]=\"baslikUst()\">\r\n <b> {{ baslik() }} </b>\r\n </div>\r\n\r\n @if (sagAlt()) {\r\n <div class=\"sag-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"sagAlt(); context: {$implicit: sagIcerik}\">\r\n {{ sagIcerik }}\r\n </ng-container>\r\n </div>\r\n }\r\n @if (solAlt()) {\r\n <div class=\"sol-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"solAlt(); context: {$implicit: solIcerik}\">\r\n {{ solIcerik }}\r\n </ng-container>\r\n </div>\r\n }\r\n <ng-content />\r\n</div>\r\n", styles: [":host{float:left;margin:.5em 0 0 .5em;background-color:transparent;border:transparent}:host .wrapper{background:var(--p-form-field-background);position:relative;border-radius:.35em;box-shadow:inset 0 0 .35em .15em #0003}:host .alt-baslik{position:absolute;opacity:.2;width:100%}:host .baslik-yazi{position:absolute;width:100%;display:flex;justify-content:center;align-items:center;padding-right:.4rem;padding-left:.4rem;line-height:1.5}:host .sag-alt{position:absolute;padding:.4em;width:50%;text-align:right;left:50%;z-index:1000}:host .sol-alt{position:absolute;padding:.4em;width:50%;text-align:left;z-index:1000}\n/*!_variable.scss*/\n"] }]
|
|
31
31
|
}], propDecorators: { baslik: [{ type: i0.Input, args: [{ isSignal: true, alias: "baslik", required: true }] }], baslikRenk: [{ type: i0.Input, args: [{ isSignal: true, alias: "baslikRenk", required: true }] }], genislik: [{ type: i0.Input, args: [{ isSignal: true, alias: "genislik", required: false }] }], yukseklik: [{ type: i0.Input, args: [{ isSignal: true, alias: "yukseklik", required: false }] }], baslikYukseklik: [{ type: i0.Input, args: [{ isSignal: true, alias: "baslikYukseklik", required: false }] }], baslikFontSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "baslikFontSize", required: false }] }], sagAlt: [{ type: i0.ContentChild, args: ['sagAlt', { isSignal: true }] }], solAlt: [{ type: i0.ContentChild, args: ['solAlt', { isSignal: true }] }] } });
|
|
32
32
|
|
|
33
33
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitng-alt-buyuk-kart.mjs","sources":["../../src/app/components/alt-buyuk-kart/alt-buyuk-kart.component.ts","../../src/app/components/alt-buyuk-kart/alt-buyuk-kart.component.html","../../src/app/components/alt-buyuk-kart/limitng-alt-buyuk-kart.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, computed, contentChild, input, numberAttribute, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'alt-buyuk-kart',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: 'alt-buyuk-kart.component.html',\r\n styleUrl: 'alt-buyuk-kart.component.scss',\r\n host: {\r\n '[style.width]': 'genislik()'\r\n }\r\n})\r\n\r\nexport class AltBuyukKartComponent {\r\n readonly baslik = input.required<string>();\r\n readonly baslikRenk = input.required<string>();\r\n\r\n readonly genislik = input<string>('40.5em');\r\n readonly yukseklik = input(21, { transform: numberAttribute });\r\n\r\n readonly baslikYukseklik = input(3, { transform: numberAttribute });\r\n readonly baslikFontSize = input(1, { transform: numberAttribute });\r\n\r\n readonly baslikUst = computed(() => this.yukseklik() - this.baslikYukseklik());\r\n\r\n sagIcerik: any;\r\n solIcerik: any;\r\n\r\n readonly sagAlt = contentChild<TemplateRef<any>>('sagAlt');\r\n readonly solAlt = contentChild<TemplateRef<any>>('solAlt');\r\n\r\n}\r\n","<div class=\"wrapper\" [style.height.rem]=\"yukseklik()\">\r\n <div class=\"alt-baslik\" [style.backgroundColor]=\"baslikRenk()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.top.rem]=\"baslikUst()\">\r\n </div>\r\n\r\n <div class=\"baslik-yazi\" [style.font-size.rem]=\"baslikFontSize()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.color]=\"baslikRenk()\" [style.top.rem]=\"baslikUst()\">\r\n <b> {{ baslik() }} </b>\r\n </div>\r\n\r\n @if (sagAlt()) {\r\n <div class=\"sag-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"sagAlt(); context: {$implicit: sagIcerik}\">\r\n {{ sagIcerik }}\r\n </ng-container>\r\n </div>\r\n }\r\n @if (solAlt()) {\r\n <div class=\"sol-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"solAlt(); context: {$implicit: solIcerik}\">\r\n {{ solIcerik
|
|
1
|
+
{"version":3,"file":"limitng-alt-buyuk-kart.mjs","sources":["../../src/app/components/alt-buyuk-kart/alt-buyuk-kart.component.ts","../../src/app/components/alt-buyuk-kart/alt-buyuk-kart.component.html","../../src/app/components/alt-buyuk-kart/limitng-alt-buyuk-kart.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, computed, contentChild, input, numberAttribute, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'alt-buyuk-kart',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: 'alt-buyuk-kart.component.html',\r\n styleUrl: 'alt-buyuk-kart.component.scss',\r\n host: {\r\n '[style.width]': 'genislik()'\r\n }\r\n})\r\n\r\nexport class AltBuyukKartComponent {\r\n readonly baslik = input.required<string>();\r\n readonly baslikRenk = input.required<string>();\r\n\r\n readonly genislik = input<string>('40.5em');\r\n readonly yukseklik = input(21, { transform: numberAttribute });\r\n\r\n readonly baslikYukseklik = input(3, { transform: numberAttribute });\r\n readonly baslikFontSize = input(1, { transform: numberAttribute });\r\n\r\n readonly baslikUst = computed(() => this.yukseklik() - this.baslikYukseklik());\r\n\r\n sagIcerik: any;\r\n solIcerik: any;\r\n\r\n readonly sagAlt = contentChild<TemplateRef<any>>('sagAlt');\r\n readonly solAlt = contentChild<TemplateRef<any>>('solAlt');\r\n\r\n}\r\n","<div class=\"wrapper\" [style.height.rem]=\"yukseklik()\">\r\n <div class=\"alt-baslik\" [style.backgroundColor]=\"baslikRenk()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.top.rem]=\"baslikUst()\">\r\n </div>\r\n\r\n <div class=\"baslik-yazi\" [style.font-size.rem]=\"baslikFontSize()\" [style.height.rem]=\"baslikYukseklik()\"\r\n [style.color]=\"baslikRenk()\" [style.top.rem]=\"baslikUst()\">\r\n <b> {{ baslik() }} </b>\r\n </div>\r\n\r\n @if (sagAlt()) {\r\n <div class=\"sag-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"sagAlt(); context: {$implicit: sagIcerik}\">\r\n {{ sagIcerik }}\r\n </ng-container>\r\n </div>\r\n }\r\n @if (solAlt()) {\r\n <div class=\"sol-alt\" [style.height.rem]=\"baslikYukseklik()\" [style.top.rem]=\"baslikUst()\">\r\n <ng-container *ngTemplateOutlet=\"solAlt(); context: {$implicit: solIcerik}\">\r\n {{ solIcerik }}\r\n </ng-container>\r\n </div>\r\n }\r\n <ng-content />\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,140 @@ class ExcelRaporuSonuc {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
const TOKEN_DESENI = /\s*(\d+(?:\.\d+)?|[A-Za-z_]+|[()+\-*/,])/gy;
|
|
33
|
+
class ToplamFormuluHesaplayici {
|
|
34
|
+
constructor(formul) {
|
|
35
|
+
this.konum = 0;
|
|
36
|
+
this.tokenlar = ToplamFormuluHesaplayici.tokenlaraAyir(formul);
|
|
37
|
+
}
|
|
38
|
+
static hesapla(formul) {
|
|
39
|
+
try {
|
|
40
|
+
const hesaplayici = new ToplamFormuluHesaplayici(formul);
|
|
41
|
+
const sonuc = hesaplayici.ifade();
|
|
42
|
+
return hesaplayici.konum === hesaplayici.tokenlar.length && Number.isFinite(sonuc) ? sonuc : undefined;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
static tokenlaraAyir(formul) {
|
|
49
|
+
const tokenlar = [];
|
|
50
|
+
TOKEN_DESENI.lastIndex = 0;
|
|
51
|
+
let eslesme = TOKEN_DESENI.exec(formul);
|
|
52
|
+
let okunan = 0;
|
|
53
|
+
while (eslesme) {
|
|
54
|
+
const deger = eslesme[1];
|
|
55
|
+
okunan = TOKEN_DESENI.lastIndex;
|
|
56
|
+
if (/^\d/.test(deger)) {
|
|
57
|
+
tokenlar.push({ deger, tur: 'sayi' });
|
|
58
|
+
}
|
|
59
|
+
else if (/^[A-Za-z_]/.test(deger)) {
|
|
60
|
+
tokenlar.push({ deger: deger.toUpperCase(), tur: 'ad' });
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
tokenlar.push({ deger, tur: 'op' });
|
|
64
|
+
}
|
|
65
|
+
eslesme = TOKEN_DESENI.exec(formul);
|
|
66
|
+
}
|
|
67
|
+
if (formul.slice(okunan).trim()) {
|
|
68
|
+
throw new Error('Geçersiz formül');
|
|
69
|
+
}
|
|
70
|
+
return tokenlar;
|
|
71
|
+
}
|
|
72
|
+
ifade() {
|
|
73
|
+
let sonuc = this.terim();
|
|
74
|
+
while (this.sonrakiOperatorMu('+', '-')) {
|
|
75
|
+
const islem = this.tokenlar[this.konum++].deger;
|
|
76
|
+
const sag = this.terim();
|
|
77
|
+
sonuc = islem === '+' ? sonuc + sag : sonuc - sag;
|
|
78
|
+
}
|
|
79
|
+
return sonuc;
|
|
80
|
+
}
|
|
81
|
+
terim() {
|
|
82
|
+
let sonuc = this.birim();
|
|
83
|
+
while (this.sonrakiOperatorMu('*', '/')) {
|
|
84
|
+
const islem = this.tokenlar[this.konum++].deger;
|
|
85
|
+
const sag = this.birim();
|
|
86
|
+
if (islem === '/' && sag === 0) {
|
|
87
|
+
throw new Error('Sıfıra bölme');
|
|
88
|
+
}
|
|
89
|
+
sonuc = islem === '*' ? sonuc * sag : sonuc / sag;
|
|
90
|
+
}
|
|
91
|
+
return sonuc;
|
|
92
|
+
}
|
|
93
|
+
birim() {
|
|
94
|
+
const token = this.tokenlar[this.konum++];
|
|
95
|
+
if (!token) {
|
|
96
|
+
throw new Error('Beklenmeyen son');
|
|
97
|
+
}
|
|
98
|
+
if (token.tur === 'sayi') {
|
|
99
|
+
return Number(token.deger);
|
|
100
|
+
}
|
|
101
|
+
if (token.tur === 'op' && token.deger === '-') {
|
|
102
|
+
return -this.birim();
|
|
103
|
+
}
|
|
104
|
+
if (token.tur === 'op' && token.deger === '(') {
|
|
105
|
+
const sonuc = this.ifade();
|
|
106
|
+
this.operatorBekle(')');
|
|
107
|
+
return sonuc;
|
|
108
|
+
}
|
|
109
|
+
if (token.tur === 'ad') {
|
|
110
|
+
return this.fonksiyon(token.deger);
|
|
111
|
+
}
|
|
112
|
+
throw new Error('Geçersiz token');
|
|
113
|
+
}
|
|
114
|
+
fonksiyon(ad) {
|
|
115
|
+
this.operatorBekle('(');
|
|
116
|
+
if (ad === 'ABS') {
|
|
117
|
+
const sonuc = Math.abs(this.ifade());
|
|
118
|
+
this.operatorBekle(')');
|
|
119
|
+
return sonuc;
|
|
120
|
+
}
|
|
121
|
+
if (ad === 'IFERROR') {
|
|
122
|
+
const baslangic = this.konum;
|
|
123
|
+
let sonuc;
|
|
124
|
+
try {
|
|
125
|
+
sonuc = this.ifade();
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
this.konum = baslangic;
|
|
129
|
+
this.virguleKadarAtla();
|
|
130
|
+
}
|
|
131
|
+
this.operatorBekle(',');
|
|
132
|
+
const yedek = this.ifade();
|
|
133
|
+
this.operatorBekle(')');
|
|
134
|
+
return sonuc ?? yedek;
|
|
135
|
+
}
|
|
136
|
+
throw new Error(`Desteklenmeyen fonksiyon: ${ad}`);
|
|
137
|
+
}
|
|
138
|
+
virguleKadarAtla() {
|
|
139
|
+
let derinlik = 0;
|
|
140
|
+
while (this.konum < this.tokenlar.length) {
|
|
141
|
+
const { deger, tur } = this.tokenlar[this.konum];
|
|
142
|
+
if (tur === 'op' && deger === '(') {
|
|
143
|
+
derinlik++;
|
|
144
|
+
}
|
|
145
|
+
else if (tur === 'op' && deger === ')') {
|
|
146
|
+
derinlik--;
|
|
147
|
+
}
|
|
148
|
+
else if (tur === 'op' && deger === ',' && derinlik === 0) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
this.konum++;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
sonrakiOperatorMu(...operatorler) {
|
|
155
|
+
const token = this.tokenlar[this.konum];
|
|
156
|
+
return token?.tur === 'op' && operatorler.includes(token.deger);
|
|
157
|
+
}
|
|
158
|
+
operatorBekle(operator) {
|
|
159
|
+
const token = this.tokenlar[this.konum++];
|
|
160
|
+
if (token?.tur !== 'op' || token.deger !== operator) {
|
|
161
|
+
throw new Error(`Beklenen: ${operator}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
32
166
|
class JsonToExcelTableBuilder {
|
|
33
167
|
constructor(table) {
|
|
34
168
|
this.table = table;
|
|
@@ -69,7 +203,6 @@ class JsonToExcelSheetBuilder {
|
|
|
69
203
|
...(options.footer && { footer: options.footer }),
|
|
70
204
|
...(options.header && { header: options.header }),
|
|
71
205
|
...(options.sol !== undefined && { sol: options.sol }),
|
|
72
|
-
...(options.toplamDegerleri && { toplamDegerleri: options.toplamDegerleri }),
|
|
73
206
|
...(options.toplamEtiketi !== undefined && { toplamEtiketi: options.toplamEtiketi }),
|
|
74
207
|
...(options.toplamSatiri !== undefined && { toplamSatiri: options.toplamSatiri }),
|
|
75
208
|
...(options.ust !== undefined && { ust: options.ust })
|
|
@@ -147,11 +280,11 @@ class JsonToExcelParser {
|
|
|
147
280
|
for (const worksheet of workbook.worksheets) {
|
|
148
281
|
for (const tablo of worksheet.getTables()) {
|
|
149
282
|
const formuller = new Map();
|
|
150
|
-
tablo.table.columns.
|
|
283
|
+
for (const [index, kolon] of tablo.table.columns.entries()) {
|
|
151
284
|
if (kolon.totalsRowFunction === 'custom' && kolon.totalsRowFormula) {
|
|
152
285
|
formuller.set(index + 1, kolon.totalsRowFormula);
|
|
153
286
|
}
|
|
154
|
-
}
|
|
287
|
+
}
|
|
155
288
|
if (formuller.size) {
|
|
156
289
|
tabloFormulleri.set(tablo.table.name, formuller);
|
|
157
290
|
}
|
|
@@ -160,24 +293,32 @@ class JsonToExcelParser {
|
|
|
160
293
|
if (!tabloFormulleri.size) {
|
|
161
294
|
return buffer;
|
|
162
295
|
}
|
|
296
|
+
// Ekr: JSZip, sadece atılan excelde custom toplam formülü varsa(Fark % ağırlıklı oran hesaplaması gibi) çalışır.
|
|
163
297
|
const zip = await JSZip.loadAsync(buffer);
|
|
164
|
-
|
|
298
|
+
const tabloDosyalari = Object.keys(zip.files).filter(ad => /^xl\/tables\/table\d+\.xml$/.test(ad));
|
|
299
|
+
await Promise.all(tabloDosyalari.map(async (dosyaAdi) => {
|
|
165
300
|
const xml = await zip.file(dosyaAdi).async('string');
|
|
166
301
|
const tabloAdi = /<table [^>]*?\bname="([^"]*)"/.exec(xml)?.[1];
|
|
167
302
|
const formuller = tabloAdi ? tabloFormulleri.get(tabloAdi) : undefined;
|
|
168
303
|
if (!formuller) {
|
|
169
|
-
|
|
304
|
+
return;
|
|
170
305
|
}
|
|
171
306
|
const yeniXml = xml.replaceAll(/<tableColumn id="(\d+)"([^>]*?) totalsRowFunction="custom"([^>]*?)\/>/g, (eslesme, id, once, sonra) => {
|
|
172
307
|
const formul = formuller.get(Number(id));
|
|
173
308
|
return formul
|
|
174
|
-
? `<tableColumn id="${id}"${once} totalsRowFunction="custom"${sonra}><totalsRowFormula>${formul}</totalsRowFormula></tableColumn>`
|
|
309
|
+
? `<tableColumn id="${id}"${once} totalsRowFunction="custom"${sonra}><totalsRowFormula>${this.xmlKacis(formul)}</totalsRowFormula></tableColumn>`
|
|
175
310
|
: eslesme;
|
|
176
311
|
});
|
|
177
312
|
zip.file(dosyaAdi, yeniXml);
|
|
178
|
-
}
|
|
313
|
+
}));
|
|
179
314
|
return zip.generateAsync({ type: 'arraybuffer' });
|
|
180
315
|
}
|
|
316
|
+
static xmlKacis(metin) {
|
|
317
|
+
return metin
|
|
318
|
+
.replaceAll('&', '&')
|
|
319
|
+
.replaceAll('<', '<')
|
|
320
|
+
.replaceAll('>', '>');
|
|
321
|
+
}
|
|
181
322
|
static standartPageSetupOlustur() {
|
|
182
323
|
return {
|
|
183
324
|
bottomMargin: 1,
|
|
@@ -453,6 +594,7 @@ class JsonToExcelParser {
|
|
|
453
594
|
const headerTitlelari = table.columns.map(column => this.baslikMetniniHazirla(column.header.title || ''));
|
|
454
595
|
const gorunenBaslikMetinleri = headerTitlelari.map(title => title.replaceAll('\n', ' '));
|
|
455
596
|
const tabloKolonAdlari = this.benzersizKolonAdlariOlustur(gorunenBaslikMetinleri);
|
|
597
|
+
const tabloAdi = this.tabloAdiOlustur(worksheet.name, startRow, startCol);
|
|
456
598
|
const headerFont = table.header?.font;
|
|
457
599
|
const uygulanacakHeaderFont = headerFont?.color ? headerFont : {
|
|
458
600
|
...headerFont,
|
|
@@ -479,7 +621,7 @@ class JsonToExcelParser {
|
|
|
479
621
|
const bosSatirEklendi = satirlar.length === 0;
|
|
480
622
|
const tabloSatirlari = bosSatirEklendi ? [table.columns.map(() => '')] : satirlar;
|
|
481
623
|
worksheet.addTable({
|
|
482
|
-
name:
|
|
624
|
+
name: tabloAdi,
|
|
483
625
|
ref: worksheet.getCell(startRow, startCol).address,
|
|
484
626
|
headerRow: true,
|
|
485
627
|
totalsRow: toplamSatiriVar,
|
|
@@ -487,7 +629,9 @@ class JsonToExcelParser {
|
|
|
487
629
|
columns: tabloKolonAdlari.map((ad, index) => ({
|
|
488
630
|
name: ad,
|
|
489
631
|
filterButton: true,
|
|
490
|
-
...(toplamSatiriVar && this.
|
|
632
|
+
...(toplamSatiriVar && this.toplamSatiriKolonuVer(toplamHucreleri[index]?.deger, index, this.toplamFonksiyonuVer(table.columns[index]), table.columns[index].toplamFormulu
|
|
633
|
+
? this.toplamFormuluExcelMetniVer(table, table.columns[index].toplamFormulu, tabloAdi, tabloKolonAdlari)
|
|
634
|
+
: undefined))
|
|
491
635
|
})),
|
|
492
636
|
rows: tabloSatirlari
|
|
493
637
|
});
|
|
@@ -649,44 +793,76 @@ class JsonToExcelParser {
|
|
|
649
793
|
if (colIndex === 0) {
|
|
650
794
|
return { deger: table.toplamEtiketi ?? 'Toplam' };
|
|
651
795
|
}
|
|
652
|
-
if (
|
|
653
|
-
return { deger: table
|
|
796
|
+
if (column.toplamFormulu) {
|
|
797
|
+
return { deger: this.toplamFormuluSonucuVer(table, column.toplamFormulu) ?? null };
|
|
654
798
|
}
|
|
655
|
-
|
|
799
|
+
const fonksiyon = this.toplamFonksiyonuVer(column);
|
|
800
|
+
if (!fonksiyon) {
|
|
656
801
|
return { deger: null };
|
|
657
802
|
}
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
if (Number.isFinite(sayi)) {
|
|
662
|
-
toplam += sayi;
|
|
663
|
-
}
|
|
803
|
+
const { adet, toplam } = this.kolonToplaminiVer(table, column.property);
|
|
804
|
+
if (fonksiyon === 'average') {
|
|
805
|
+
return { deger: adet ? toplam / adet : 0 };
|
|
664
806
|
}
|
|
665
807
|
return { deger: toplam };
|
|
666
808
|
});
|
|
667
809
|
}
|
|
668
|
-
static
|
|
669
|
-
|
|
670
|
-
|
|
810
|
+
static kolonToplaminiVer(table, property) {
|
|
811
|
+
let toplam = 0;
|
|
812
|
+
let adet = 0;
|
|
813
|
+
for (const row of table.collection) {
|
|
814
|
+
const hamDeger = row[property];
|
|
815
|
+
const sayi = Number(hamDeger);
|
|
816
|
+
if (hamDeger !== null && hamDeger !== undefined && hamDeger !== '' && Number.isFinite(sayi)) {
|
|
817
|
+
toplam += sayi;
|
|
818
|
+
adet++;
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
return { adet, toplam };
|
|
822
|
+
}
|
|
823
|
+
static toplamFormulundekiKolonlariVer(table, formul) {
|
|
824
|
+
const properties = [...formul.matchAll(/\{([^{}]+)\}/g)].map(eslesme => eslesme[1]);
|
|
825
|
+
const tumKolonlarVar = properties.every(property => table.columns.some(kolon => kolon.property === property));
|
|
826
|
+
return properties.length && tumKolonlarVar ? properties : undefined;
|
|
671
827
|
}
|
|
672
|
-
static
|
|
673
|
-
if (
|
|
674
|
-
|
|
675
|
-
return { totalsRowLabel: etiket };
|
|
828
|
+
static toplamFormuluSonucuVer(table, formul) {
|
|
829
|
+
if (!this.toplamFormulundekiKolonlariVer(table, formul)) {
|
|
830
|
+
return undefined;
|
|
676
831
|
}
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
832
|
+
const sayisalFormul = formul.replaceAll(/\{([^{}]+)\}/g, (_eslesme, property) => {
|
|
833
|
+
const { toplam } = this.kolonToplaminiVer(table, property);
|
|
834
|
+
return toplam < 0 ? `(${toplam})` : String(toplam);
|
|
835
|
+
});
|
|
836
|
+
return ToplamFormuluHesaplayici.hesapla(sayisalFormul);
|
|
837
|
+
}
|
|
838
|
+
static toplamFormuluExcelMetniVer(table, formul, tabloAdi, kolonAdlari) {
|
|
839
|
+
if (!this.toplamFormulundekiKolonlariVer(table, formul)) {
|
|
840
|
+
return undefined;
|
|
841
|
+
}
|
|
842
|
+
return formul.replaceAll(/\{([^{}]+)\}/g, (_eslesme, property) => {
|
|
843
|
+
const kolonAdi = kolonAdlari[table.columns.findIndex(kolon => kolon.property === property)];
|
|
844
|
+
const kacisliAd = kolonAdi.replaceAll(/[[\]#']/g, '\'$&');
|
|
845
|
+
return `SUBTOTAL(109,${tabloAdi}[${kacisliAd}])`;
|
|
846
|
+
});
|
|
847
|
+
}
|
|
848
|
+
static toplamFonksiyonuVer(column) {
|
|
849
|
+
if (column.toplamFonksiyonu === 'none' || column.toplamFormulu) {
|
|
850
|
+
return undefined;
|
|
682
851
|
}
|
|
683
|
-
|
|
684
|
-
|
|
852
|
+
return column.toplamFonksiyonu ?? (this.sayisalKolonMu(column.arrayType) ? 'sum' : undefined);
|
|
853
|
+
}
|
|
854
|
+
static toplamSatiriKolonuVer(deger, kolonIndex, fonksiyon, excelFormulu) {
|
|
855
|
+
if (kolonIndex === 0) {
|
|
856
|
+
return { totalsRowLabel: typeof deger === 'string' ? deger : '' };
|
|
685
857
|
}
|
|
686
|
-
if (
|
|
687
|
-
return {
|
|
858
|
+
if (excelFormulu) {
|
|
859
|
+
return {
|
|
860
|
+
totalsRowFormula: excelFormulu,
|
|
861
|
+
totalsRowFunction: 'custom',
|
|
862
|
+
...(typeof deger === 'number' && { totalsRowResult: deger })
|
|
863
|
+
};
|
|
688
864
|
}
|
|
689
|
-
return undefined;
|
|
865
|
+
return fonksiyon ? { totalsRowFunction: fonksiyon } : undefined;
|
|
690
866
|
}
|
|
691
867
|
static toplamSatiriniYaz(worksheet, sonuc, table, toplamHucreleri, satirNo, startCol) {
|
|
692
868
|
const wsRow = worksheet.getRow(satirNo);
|
|
@@ -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';\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 farkRenkli?: 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 toplamSatiri?: boolean;\r\n toplamEtiketi?: string;\r\n toplamDegerleri?: Record<string, ExcelHucreDegeri>;\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 JSZip from 'jszip';\r\nimport { FontStyle, NumberFormatlar, VariableType } from 'limitng/api/models/fourDConstants';\r\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];\r\ntype TExcelTableColumnInput = Omit<TExcelTableColumn, 'arrayType'> & Partial<Pick<TExcelTableColumn, 'arrayType'>>;\r\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 toplamDegerleri?: TExcelTable['toplamDegerleri'];\r\n toplamEtiketi?: TExcelTable['toplamEtiketi'];\r\n toplamSatiri?: TExcelTable['toplamSatiri'];\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 {\r\n this.table.columns.push({\r\n arrayType: VariableType.text,\r\n ...column\r\n });\r\n return this;\r\n }\r\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.toplamDegerleri && { toplamDegerleri: options.toplamDegerleri }),\r\n ...(options.toplamEtiketi !== undefined && { toplamEtiketi: options.toplamEtiketi }),\r\n ...(options.toplamSatiri !== undefined && { toplamSatiri: options.toplamSatiri }),\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 const duzeltilmisBuffer = await this.toplamSatiriFormulleriniYaz(workbook, buffer);\r\n\r\n return new Blob([duzeltilmisBuffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n }\r\n\r\n private static async toplamSatiriFormulleriniYaz(workbook: ExcelJS.Workbook, buffer: ExcelJS.Buffer): Promise<ExcelJS.Buffer> {\r\n const tabloFormulleri = new Map<string, Map<number, string>>();\r\n for (const worksheet of workbook.worksheets) {\r\n for (const tablo of worksheet.getTables() as unknown as Array<{ table: { name: string; columns: Array<{ totalsRowFormula?: string; totalsRowFunction?: string }> } }>) {\r\n const formuller = new Map<number, string>();\r\n tablo.table.columns.forEach((kolon, index) => {\r\n if (kolon.totalsRowFunction === 'custom' && kolon.totalsRowFormula) {\r\n formuller.set(index + 1, kolon.totalsRowFormula);\r\n }\r\n });\r\n if (formuller.size) {\r\n tabloFormulleri.set(tablo.table.name, formuller);\r\n }\r\n }\r\n }\r\n\r\n if (!tabloFormulleri.size) {\r\n return buffer;\r\n }\r\n\r\n const zip = await JSZip.loadAsync(buffer);\r\n for (const dosyaAdi of Object.keys(zip.files).filter(ad => /^xl\\/tables\\/table\\d+\\.xml$/.test(ad))) {\r\n const xml = await zip.file(dosyaAdi)!.async('string');\r\n const tabloAdi = /<table [^>]*?\\bname=\"([^\"]*)\"/.exec(xml)?.[1];\r\n const formuller = tabloAdi ? tabloFormulleri.get(tabloAdi) : undefined;\r\n if (!formuller) {\r\n continue;\r\n }\r\n\r\n const yeniXml = xml.replaceAll(\r\n /<tableColumn id=\"(\\d+)\"([^>]*?) totalsRowFunction=\"custom\"([^>]*?)\\/>/g,\r\n (eslesme, id: string, once: string, sonra: string) => {\r\n const formul = formuller.get(Number(id));\r\n return formul\r\n ? `<tableColumn id=\"${id}\"${once} totalsRowFunction=\"custom\"${sonra}><totalsRowFormula>${formul}</totalsRowFormula></tableColumn>`\r\n : eslesme;\r\n }\r\n );\r\n zip.file(dosyaAdi, yeniXml);\r\n }\r\n\r\n return zip.generateAsync({ type: 'arraybuffer' });\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, kaynakTable: TExcelTable): number {\r\n const table = kaynakTable;\r\n const toplamSatiriVar = table.toplamSatiri === true && table.collection.length > 0 && table.columns.length > 0;\r\n\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 const toplamHucreleri = toplamSatiriVar ? this.toplamHucreleriniHazirla(table) : [];\r\n\r\n this.kolonGrubuYaz(worksheet, startRow, startCol, table);\r\n\r\n const headerRow = worksheet.getRow(startRow);\r\n const tableStyle = this.tableStyleDonustur(gecerliTableStyle);\r\n const bosSatirEklendi = satirlar.length === 0;\r\n const tabloSatirlari = bosSatirEklendi ? [table.columns.map(() => '')] : satirlar;\r\n\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: toplamSatiriVar,\r\n ...(tableStyle && { style: tableStyle }),\r\n columns: tabloKolonAdlari.map((ad, index) => ({\r\n name: ad,\r\n filterButton: true,\r\n ...(toplamSatiriVar && this.toplamSatiriEtiketiVer(\r\n toplamHucreleri[index]?.deger,\r\n index,\r\n this.sayisalKolonMu(table.columns[index]?.arrayType),\r\n this.toplamDegeriVerilmisMi(table, index)\r\n ))\r\n })),\r\n rows: tabloSatirlari\r\n });\r\n\r\n if (bosSatirEklendi) {\r\n worksheet.getRow(startRow + 1).hidden = true;\r\n }\r\n\r\n this.kolonGenislikleriniUygula(\r\n worksheet,\r\n startCol,\r\n table.columns,\r\n satirlar,\r\n table.autoFit,\r\n toplamHucreleri.map(hucre => hucre.deger)\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 = 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(this.kolonFormatiniBelirle(column));\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 const hucreHizasi = this.hucreYatayHizasiniBelirle(column);\r\n cell.alignment = {\r\n ...(hucreHizasi !== undefined && { horizontal: hucreHizasi }),\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 const formulHizasi = this.hucreYatayHizasiniBelirle(column);\r\n cell.alignment = {\r\n ...(cell.alignment ?? {}),\r\n ...(formulHizasi !== undefined && { horizontal: formulHizasi })\r\n };\r\n }\r\n\r\n let sonSatir = startRow + table.collection.length;\r\n\r\n if (toplamSatiriVar) {\r\n sonSatir++;\r\n this.toplamSatiriniYaz(worksheet, sonuc, table, toplamHucreleri, sonSatir, startCol);\r\n }\r\n\r\n this.farkRenkleriniUygula(worksheet, table, startRow + 1, sonSatir, startCol);\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(this.kolonFormatiniBelirle(column));\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 const footerHizasi = colFooter?.isFunction\r\n ? this.hucreYatayHizasiniBelirle(column)\r\n : this.yatayHizaDonustur(colFooter?.horizontalAlignment);\r\n cell.alignment = {\r\n ...(footerHizasi !== undefined && { horizontal: footerHizasi }),\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 farkRenkleriniUygula(\r\n worksheet: ExcelJS.Worksheet,\r\n table: TExcelTable,\r\n ilkSatir: number,\r\n sonSatir: number,\r\n startCol: number\r\n ): void {\r\n if (!table.collection.length) {\r\n return;\r\n }\r\n\r\n for (let colIndex = 0; colIndex < table.columns.length; colIndex++) {\r\n if (!table.columns[colIndex]!.farkRenkli) {\r\n continue;\r\n }\r\n\r\n const ilkHucre = worksheet.getCell(ilkSatir, startCol + colIndex).address;\r\n const sonHucre = worksheet.getCell(sonSatir, startCol + colIndex).address;\r\n worksheet.addConditionalFormatting({\r\n ref: `${ilkHucre}:${sonHucre}`,\r\n rules: [\r\n { type: 'cellIs', operator: 'greaterThan', formulae: [0], priority: 1, style: { font: { color: { argb: 'FF16A34A' } } } },\r\n { type: 'cellIs', operator: 'lessThan', formulae: [0], priority: 2, style: { font: { color: { argb: 'FFDC2626' } } } }\r\n ]\r\n });\r\n }\r\n }\r\n\r\n private static toplamHucreleriniHazirla(table: TExcelTable): IHazirHucreDegeri[] {\r\n return table.columns.map((column, colIndex) => {\r\n if (colIndex === 0) {\r\n return { deger: table.toplamEtiketi ?? 'Toplam' };\r\n }\r\n\r\n if (this.toplamDegeriVerilmisMi(table, colIndex)) {\r\n return { deger: table.toplamDegerleri![column.property] ?? null };\r\n }\r\n\r\n if (!this.sayisalKolonMu(column.arrayType)) {\r\n return { deger: null };\r\n }\r\n\r\n let toplam = 0;\r\n for (const row of table.collection) {\r\n const sayi = Number(row[column.property]);\r\n if (Number.isFinite(sayi)) {\r\n toplam += sayi;\r\n }\r\n }\r\n\r\n return { deger: toplam };\r\n });\r\n }\r\n\r\n private static toplamDegeriVerilmisMi(table: TExcelTable, kolonIndex: number): boolean {\r\n const property = table.columns[kolonIndex]?.property;\r\n\r\n return kolonIndex > 0 && !!table.toplamDegerleri && property !== undefined && property in table.toplamDegerleri;\r\n }\r\n\r\n private static toplamSatiriEtiketiVer(\r\n deger: ExcelJS.CellValue | undefined,\r\n kolonIndex: number,\r\n sayisal: boolean,\r\n ozelDeger: boolean\r\n ): { totalsRowFunction: 'custom'; totalsRowFormula: string; totalsRowResult: number } | { totalsRowFunction: 'sum' } | { totalsRowLabel: string } | undefined {\r\n if (kolonIndex === 0) {\r\n const etiket = typeof deger === 'string' || typeof deger === 'number' ? String(deger) : '';\r\n return { totalsRowLabel: etiket };\r\n }\r\n\r\n if (ozelDeger) {\r\n if (typeof deger === 'number' && Number.isFinite(deger)) {\r\n return { totalsRowFunction: 'custom', totalsRowFormula: String(deger), totalsRowResult: deger };\r\n }\r\n\r\n return typeof deger === 'string' && deger !== '' ? { totalsRowLabel: deger } : undefined;\r\n }\r\n\r\n if (sayisal) {\r\n return { totalsRowFunction: 'sum' };\r\n }\r\n\r\n if (typeof deger === 'string' && deger !== '') {\r\n return { totalsRowLabel: deger };\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static toplamSatiriniYaz(\r\n worksheet: ExcelJS.Worksheet,\r\n sonuc: ExcelRaporuSonuc,\r\n table: TExcelTable,\r\n toplamHucreleri: IHazirHucreDegeri[],\r\n satirNo: number,\r\n startCol: number\r\n ): void {\r\n const wsRow = worksheet.getRow(satirNo);\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 deger = toplamHucreleri[colIndex]?.deger;\r\n\r\n if (colIndex > 0 && typeof deger === 'number' && typeof cell.value === 'object' && cell.value !== null && 'formula' in cell.value) {\r\n cell.value = { ...cell.value, result: deger };\r\n }\r\n\r\n this.hucreFontunuUygula(cell, table.data?.font, sonuc.defaultFont);\r\n cell.font = { ...(cell.font ?? {}), bold: true };\r\n if (column.farkRenkli && typeof deger === 'number' && deger !== 0) {\r\n cell.font = { ...cell.font, color: { argb: deger > 0 ? 'FF16A34A' : 'FFDC2626' } };\r\n }\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFDDEBF7' } };\r\n\r\n const numFmt = this.numberFormatDonustur(this.kolonFormatiniBelirle(column));\r\n if (numFmt) {\r\n cell.numFmt = numFmt;\r\n }\r\n\r\n const hucreHizasi = this.hucreYatayHizasiniBelirle(column);\r\n cell.alignment = {\r\n ...(hucreHizasi !== undefined && { horizontal: hucreHizasi }),\r\n vertical: this.dikeyHizaDonustur(column.verticalAlignment),\r\n wrapText: false\r\n };\r\n }\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 autoFit: boolean | undefined,\r\n ekSatir?: ExcelJS.CellValue[]\r\n ): void {\r\n const filtreButonuBoslukPayi = 1.25;\r\n const veriSagBoslukPayi = 1;\r\n const autoFitAktif = autoFit !== false;\r\n\r\n for (let index = 0; index < columns.length; index++) {\r\n const worksheetColumn = worksheet.getColumn(startCol + index);\r\n const tasarimGenisligi = (columns[index]!.width ?? 0) > 0 ? Math.round(columns[index]!.width! / 7) : 0;\r\n\r\n if (!autoFitAktif) {\r\n worksheetColumn.width = tasarimGenisligi > 0 ? tasarimGenisligi : 10;\r\n continue;\r\n }\r\n\r\n const baslikUzunlugu = this.metinUzunlugu(this.baslikMetniniHazirla(columns[index]!.header.title));\r\n let veriUzunlugu = ekSatir ? this.hucreMetinUzunlugu(ekSatir[index]!) : 0;\r\n for (const satir of satirlar) {\r\n veriUzunlugu = Math.max(veriUzunlugu, this.hucreMetinUzunlugu(satir[index]!));\r\n }\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(column: TExcelTableColumn): ExcelJS.Alignment['horizontal'] | undefined {\r\n if (this.sayisalKolonMu(column.arrayType)) {\r\n return 'right';\r\n }\r\n\r\n if (this.booleanKolonMu(column.arrayType)) {\r\n return 'center';\r\n }\r\n\r\n if (column.horizontalAlignment === undefined) {\r\n return undefined;\r\n }\r\n\r\n return this.yatayHizaDonustur(column.horizontalAlignment);\r\n }\r\n\r\n private static kolonFormatiniBelirle(column: TExcelTableColumn): number | undefined {\r\n if (column.format !== undefined && column.format !== NumberFormatlar.belirsiz) {\r\n return column.format;\r\n }\r\n\r\n switch (column.arrayType) {\r\n case VariableType.integer:\r\n case VariableType.longint:\r\n return NumberFormatlar.long;\r\n\r\n case VariableType.real:\r\n return NumberFormatlar.real;\r\n\r\n case VariableType.date:\r\n return NumberFormatlar.tarih;\r\n\r\n default:\r\n return column.format;\r\n }\r\n }\r\n\r\n private static sayisalKolonMu(arrayType: VariableType | undefined): boolean {\r\n switch (arrayType) {\r\n case VariableType.integer:\r\n case VariableType.longint:\r\n case VariableType.real:\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private static booleanKolonMu(arrayType: VariableType | undefined): boolean {\r\n return arrayType === VariableType.boolean;\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 const sifirDegerMi =\r\n (typeof value === 'number' && value === 0) ||\r\n (typeof value === 'string' && this.sayisalKolonMu(column.arrayType) && value.trim() !== '' && Number(value) === 0);\r\n\r\n if (sifirDegerMi && sifirlariBasmaSayi) {\r\n return { deger: null };\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 tarihMetni = this.tarihStringiniExcelMetnineDonustur(normallesenDeger, column);\r\n if (tarihMetni) {\r\n return this.hazirHucreDegeriOlustur(tarihMetni, htmlHucre?.fontColorArgb);\r\n }\r\n\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 (this.booleanKolonMu(column.arrayType)) {\r\n return this.hazirHucreDegeriOlustur(normallesenDeger === true ? '+' : '', htmlHucre?.fontColorArgb);\r\n }\r\n\r\n if ((typeof normallesenDeger === 'number') || (typeof normallesenDeger === 'string')) {\r\n return this.hazirHucreDegeriOlustur(normallesenDeger, htmlHucre?.fontColorArgb);\r\n }\r\n\r\n return this.hazirHucreDegeriOlustur(String(normallesenDeger), htmlHucre?.fontColorArgb);\r\n }\r\n\r\n private static hazirHucreDegeriOlustur(deger: ExcelJS.CellValue, fontColorArgb?: string): IHazirHucreDegeri {\r\n return {\r\n deger,\r\n ...(fontColorArgb ? { fontColorArgb } : {})\r\n };\r\n }\r\n\r\n private static htmlHucreIceriginiHazirla(value: string): { deger: string; fontColorArgb?: string } | undefined {\r\n if (!/[<>]/.test(value)) {\r\n return undefined;\r\n }\r\n\r\n const deger = value\r\n .replaceAll(/<br\\s*\\/?>/gi, '\\n')\r\n .replaceAll(/<\\/p\\s*>/gi, '\\n')\r\n .replaceAll(/<p\\b[^>]*>/gi, '')\r\n .replaceAll(/<\\/div\\s*>/gi, '\\n')\r\n .replaceAll(/<div\\b[^>]*>/gi, '')\r\n .replaceAll(/<[^>]+>/g, '')\r\n .replaceAll(/ /gi, ' ')\r\n .trim();\r\n\r\n const colorValue = this.htmlFontRenginiBul(value);\r\n const fontColorArgb = this.argbDonustur(colorValue);\r\n\r\n if ((deger === value) && !fontColorArgb) {\r\n return undefined;\r\n }\r\n\r\n return { deger, ...(fontColorArgb && { fontColorArgb }) };\r\n }\r\n\r\n private static htmlFontRenginiBul(value: string): string | undefined {\r\n const fontColorMatch = /<font\\b[^>]*\\bcolor\\s*=\\s*[\"']?([^\"' >]+)[\"']?[^>]*>/i.exec(value);\r\n if (fontColorMatch?.[1]) {\r\n return fontColorMatch[1].trim();\r\n }\r\n\r\n const styleColorMatch = /<(?:font|span)\\b[^>]*\\bstyle\\s*=\\s*[\"'][^\"']*\\bcolor\\s*:\\s*([^;\"']+)/i.exec(value);\r\n if (styleColorMatch?.[1]) {\r\n return styleColorMatch[1].trim();\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static tarihStringiniDateeDonustur(value: string): Date | undefined {\r\n const trimmedValue = value.trim();\r\n const isoDateMatch = /^(\\d{4})-(\\d{2})-(\\d{2})(?:$|[T\\s])/.exec(trimmedValue);\r\n\r\n if (!isoDateMatch) {\r\n return undefined;\r\n }\r\n\r\n const year = Number(isoDateMatch[1]);\r\n const month = Number(isoDateMatch[2]);\r\n const day = Number(isoDateMatch[3]);\r\n\r\n if (!Number.isInteger(year) || !Number.isInteger(month) || !Number.isInteger(day)) {\r\n return undefined;\r\n }\r\n\r\n const date = new Date(year, month - 1, day);\r\n if (date.getFullYear() !== year || date.getMonth() !== (month - 1) || date.getDate() !== day) {\r\n return undefined;\r\n }\r\n\r\n return new Date(Date.UTC(year, month - 1, day, 12, 0, 0, 0));\r\n }\r\n\r\n private static tarihStringiniExcelMetnineDonustur(value: string, column: TExcelTableColumn): string | undefined {\r\n if (!this.sadeceTarihKolonuMu(column)) {\r\n return undefined;\r\n }\r\n\r\n const trimmedValue = value.trim();\r\n const isoDateMatch = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(trimmedValue);\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 `${String(day).padStart(2, '0')}.${String(month).padStart(2, '0')}.${year}`;\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 sadeceTarihKolonuMu(column: TExcelTableColumn): boolean {\r\n return this.kolonFormatiniBelirle(column) === NumberFormatlar.tarih;\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/toplamFormuluHesaplayici.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 farkRenkli?: boolean;\r\n toplamFonksiyonu?: 'average' | 'none' | 'sum';\r\n toplamFormulu?: string;\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 toplamSatiri?: boolean;\r\n toplamEtiketi?: string;\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","interface IToplamFormuluToken {\n deger: string;\n tur: 'ad' | 'op' | 'sayi';\n}\n\nconst TOKEN_DESENI = /\\s*(\\d+(?:\\.\\d+)?|[A-Za-z_]+|[()+\\-*/,])/gy;\n\nexport class ToplamFormuluHesaplayici {\n private readonly tokenlar: IToplamFormuluToken[];\n private konum = 0;\n\n private constructor(formul: string) {\n this.tokenlar = ToplamFormuluHesaplayici.tokenlaraAyir(formul);\n }\n\n static hesapla(formul: string): number | undefined {\n try {\n const hesaplayici = new ToplamFormuluHesaplayici(formul);\n const sonuc = hesaplayici.ifade();\n return hesaplayici.konum === hesaplayici.tokenlar.length && Number.isFinite(sonuc) ? sonuc : undefined;\n } catch {\n return undefined;\n }\n }\n\n private static tokenlaraAyir(formul: string): IToplamFormuluToken[] {\n const tokenlar: IToplamFormuluToken[] = [];\n TOKEN_DESENI.lastIndex = 0;\n let eslesme = TOKEN_DESENI.exec(formul);\n let okunan = 0;\n\n while (eslesme) {\n const deger = eslesme[1]!;\n okunan = TOKEN_DESENI.lastIndex;\n if (/^\\d/.test(deger)) {\n tokenlar.push({ deger, tur: 'sayi' });\n } else if (/^[A-Za-z_]/.test(deger)) {\n tokenlar.push({ deger: deger.toUpperCase(), tur: 'ad' });\n } else {\n tokenlar.push({ deger, tur: 'op' });\n }\n eslesme = TOKEN_DESENI.exec(formul);\n }\n\n if (formul.slice(okunan).trim()) {\n throw new Error('Geçersiz formül');\n }\n\n return tokenlar;\n }\n\n private ifade(): number {\n let sonuc = this.terim();\n while (this.sonrakiOperatorMu('+', '-')) {\n const islem = this.tokenlar[this.konum++]!.deger;\n const sag = this.terim();\n sonuc = islem === '+' ? sonuc + sag : sonuc - sag;\n }\n\n return sonuc;\n }\n\n private terim(): number {\n let sonuc = this.birim();\n while (this.sonrakiOperatorMu('*', '/')) {\n const islem = this.tokenlar[this.konum++]!.deger;\n const sag = this.birim();\n if (islem === '/' && sag === 0) {\n throw new Error('Sıfıra bölme');\n }\n sonuc = islem === '*' ? sonuc * sag : sonuc / sag;\n }\n\n return sonuc;\n }\n\n private birim(): number {\n const token = this.tokenlar[this.konum++];\n if (!token) {\n throw new Error('Beklenmeyen son');\n }\n\n if (token.tur === 'sayi') {\n return Number(token.deger);\n }\n\n if (token.tur === 'op' && token.deger === '-') {\n return -this.birim();\n }\n\n if (token.tur === 'op' && token.deger === '(') {\n const sonuc = this.ifade();\n this.operatorBekle(')');\n return sonuc;\n }\n\n if (token.tur === 'ad') {\n return this.fonksiyon(token.deger);\n }\n\n throw new Error('Geçersiz token');\n }\n\n private fonksiyon(ad: string): number {\n this.operatorBekle('(');\n if (ad === 'ABS') {\n const sonuc = Math.abs(this.ifade());\n this.operatorBekle(')');\n return sonuc;\n }\n\n if (ad === 'IFERROR') {\n const baslangic = this.konum;\n let sonuc: number | undefined;\n try {\n sonuc = this.ifade();\n } catch {\n this.konum = baslangic;\n this.virguleKadarAtla();\n }\n this.operatorBekle(',');\n const yedek = this.ifade();\n this.operatorBekle(')');\n return sonuc ?? yedek;\n }\n\n throw new Error(`Desteklenmeyen fonksiyon: ${ad}`);\n }\n\n private virguleKadarAtla(): void {\n let derinlik = 0;\n while (this.konum < this.tokenlar.length) {\n const { deger, tur } = this.tokenlar[this.konum]!;\n if (tur === 'op' && deger === '(') {\n derinlik++;\n } else if (tur === 'op' && deger === ')') {\n derinlik--;\n } else if (tur === 'op' && deger === ',' && derinlik === 0) {\n return;\n }\n this.konum++;\n }\n }\n\n private sonrakiOperatorMu(...operatorler: string[]): boolean {\n const token = this.tokenlar[this.konum];\n return token?.tur === 'op' && operatorler.includes(token.deger);\n }\n\n private operatorBekle(operator: string): void {\n const token = this.tokenlar[this.konum++];\n if (token?.tur !== 'op' || token.deger !== operator) {\n throw new Error(`Beklenen: ${operator}`);\n }\n }\n}\n","import ExcelJS from 'exceljs';\r\nimport saveAs from 'file-saver';\r\nimport JSZip from 'jszip';\r\nimport { FontStyle, NumberFormatlar, VariableType } from 'limitng/api/models/fourDConstants';\r\nimport { XLHAlign, XLVAlign } from 'limitng/api/models/xl/xlConstants';\r\nimport { ExcelRaporuSonuc } from './excelRaporuSonuc';\r\nimport { ToplamFormuluHesaplayici } from './toplamFormuluHesaplayici';\r\n\r\ntype TExcelTable = NonNullable<ExcelRaporuSonuc['tables']>[number];\r\ntype TExcelBook = ExcelRaporuSonuc['book'];\r\ntype TExcelTableColumn = TExcelTable['columns'][number];\r\ntype TExcelTableColumnInput = Omit<TExcelTableColumn, 'arrayType'> & Partial<Pick<TExcelTableColumn, 'arrayType'>>;\r\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 toplamEtiketi?: TExcelTable['toplamEtiketi'];\r\n toplamSatiri?: TExcelTable['toplamSatiri'];\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 {\r\n this.table.columns.push({\r\n arrayType: VariableType.text,\r\n ...column\r\n });\r\n return this;\r\n }\r\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.toplamEtiketi !== undefined && { toplamEtiketi: options.toplamEtiketi }),\r\n ...(options.toplamSatiri !== undefined && { toplamSatiri: options.toplamSatiri }),\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 const duzeltilmisBuffer = await this.toplamSatiriFormulleriniYaz(workbook, buffer);\r\n\r\n return new Blob([duzeltilmisBuffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n }\r\n\r\n private static async toplamSatiriFormulleriniYaz(workbook: ExcelJS.Workbook, buffer: ExcelJS.Buffer): Promise<ExcelJS.Buffer> {\r\n const tabloFormulleri = new Map<string, Map<number, string>>();\r\n for (const worksheet of workbook.worksheets) {\r\n for (const tablo of worksheet.getTables() as unknown as Array<{ table: { name: string; columns: Array<{ totalsRowFormula?: string; totalsRowFunction?: string }> } }>) {\r\n const formuller = new Map<number, string>();\r\n for (const [index, kolon] of tablo.table.columns.entries()) {\r\n if (kolon.totalsRowFunction === 'custom' && kolon.totalsRowFormula) {\r\n formuller.set(index + 1, kolon.totalsRowFormula);\r\n }\r\n }\r\n if (formuller.size) {\r\n tabloFormulleri.set(tablo.table.name, formuller);\r\n }\r\n }\r\n }\r\n\r\n if (!tabloFormulleri.size) {\r\n return buffer;\r\n }\r\n\r\n // Ekr: JSZip, sadece atılan excelde custom toplam formülü varsa(Fark % ağırlıklı oran hesaplaması gibi) çalışır.\r\n const zip = await JSZip.loadAsync(buffer);\r\n const tabloDosyalari = Object.keys(zip.files).filter(ad => /^xl\\/tables\\/table\\d+\\.xml$/.test(ad));\r\n await Promise.all(tabloDosyalari.map(async dosyaAdi => {\r\n const xml = await zip.file(dosyaAdi)!.async('string');\r\n const tabloAdi = /<table [^>]*?\\bname=\"([^\"]*)\"/.exec(xml)?.[1];\r\n const formuller = tabloAdi ? tabloFormulleri.get(tabloAdi) : undefined;\r\n if (!formuller) {\r\n return;\r\n }\r\n\r\n const yeniXml = xml.replaceAll(\r\n /<tableColumn id=\"(\\d+)\"([^>]*?) totalsRowFunction=\"custom\"([^>]*?)\\/>/g,\r\n (eslesme, id: string, once: string, sonra: string) => {\r\n const formul = formuller.get(Number(id));\r\n return formul\r\n ? `<tableColumn id=\"${id}\"${once} totalsRowFunction=\"custom\"${sonra}><totalsRowFormula>${this.xmlKacis(formul)}</totalsRowFormula></tableColumn>`\r\n : eslesme;\r\n }\r\n );\r\n zip.file(dosyaAdi, yeniXml);\r\n }));\r\n\r\n return zip.generateAsync({ type: 'arraybuffer' });\r\n }\r\n\r\n private static xmlKacis(metin: string): string {\r\n return metin\r\n .replaceAll('&', '&')\r\n .replaceAll('<', '<')\r\n .replaceAll('>', '>');\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, kaynakTable: TExcelTable): number {\r\n const table = kaynakTable;\r\n const toplamSatiriVar = table.toplamSatiri === true && table.collection.length > 0 && table.columns.length > 0;\r\n\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 const tabloAdi = this.tabloAdiOlustur(worksheet.name, startRow, startCol);\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 const toplamHucreleri = toplamSatiriVar ? this.toplamHucreleriniHazirla(table) : [];\r\n\r\n this.kolonGrubuYaz(worksheet, startRow, startCol, table);\r\n\r\n const headerRow = worksheet.getRow(startRow);\r\n const tableStyle = this.tableStyleDonustur(gecerliTableStyle);\r\n const bosSatirEklendi = satirlar.length === 0;\r\n const tabloSatirlari = bosSatirEklendi ? [table.columns.map(() => '')] : satirlar;\r\n\r\n worksheet.addTable({\r\n name: tabloAdi,\r\n ref: worksheet.getCell(startRow, startCol).address,\r\n headerRow: true,\r\n totalsRow: toplamSatiriVar,\r\n ...(tableStyle && { style: tableStyle }),\r\n columns: tabloKolonAdlari.map((ad, index) => ({\r\n name: ad,\r\n filterButton: true,\r\n ...(toplamSatiriVar && this.toplamSatiriKolonuVer(\r\n toplamHucreleri[index]?.deger,\r\n index,\r\n this.toplamFonksiyonuVer(table.columns[index]!),\r\n table.columns[index]!.toplamFormulu\r\n ? this.toplamFormuluExcelMetniVer(table, table.columns[index]!.toplamFormulu!, tabloAdi, tabloKolonAdlari)\r\n : undefined\r\n ))\r\n })),\r\n rows: tabloSatirlari\r\n });\r\n\r\n if (bosSatirEklendi) {\r\n worksheet.getRow(startRow + 1).hidden = true;\r\n }\r\n\r\n this.kolonGenislikleriniUygula(\r\n worksheet,\r\n startCol,\r\n table.columns,\r\n satirlar,\r\n table.autoFit,\r\n toplamHucreleri.map(hucre => hucre.deger)\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 = 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(this.kolonFormatiniBelirle(column));\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 const hucreHizasi = this.hucreYatayHizasiniBelirle(column);\r\n cell.alignment = {\r\n ...(hucreHizasi !== undefined && { horizontal: hucreHizasi }),\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 const formulHizasi = this.hucreYatayHizasiniBelirle(column);\r\n cell.alignment = {\r\n ...(cell.alignment ?? {}),\r\n ...(formulHizasi !== undefined && { horizontal: formulHizasi })\r\n };\r\n }\r\n\r\n let sonSatir = startRow + table.collection.length;\r\n\r\n if (toplamSatiriVar) {\r\n sonSatir++;\r\n this.toplamSatiriniYaz(worksheet, sonuc, table, toplamHucreleri, sonSatir, startCol);\r\n }\r\n\r\n this.farkRenkleriniUygula(worksheet, table, startRow + 1, sonSatir, startCol);\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(this.kolonFormatiniBelirle(column));\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 const footerHizasi = colFooter?.isFunction\r\n ? this.hucreYatayHizasiniBelirle(column)\r\n : this.yatayHizaDonustur(colFooter?.horizontalAlignment);\r\n cell.alignment = {\r\n ...(footerHizasi !== undefined && { horizontal: footerHizasi }),\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 farkRenkleriniUygula(\r\n worksheet: ExcelJS.Worksheet,\r\n table: TExcelTable,\r\n ilkSatir: number,\r\n sonSatir: number,\r\n startCol: number\r\n ): void {\r\n if (!table.collection.length) {\r\n return;\r\n }\r\n\r\n for (let colIndex = 0; colIndex < table.columns.length; colIndex++) {\r\n if (!table.columns[colIndex]!.farkRenkli) {\r\n continue;\r\n }\r\n\r\n const ilkHucre = worksheet.getCell(ilkSatir, startCol + colIndex).address;\r\n const sonHucre = worksheet.getCell(sonSatir, startCol + colIndex).address;\r\n worksheet.addConditionalFormatting({\r\n ref: `${ilkHucre}:${sonHucre}`,\r\n rules: [\r\n { type: 'cellIs', operator: 'greaterThan', formulae: [0], priority: 1, style: { font: { color: { argb: 'FF16A34A' } } } },\r\n { type: 'cellIs', operator: 'lessThan', formulae: [0], priority: 2, style: { font: { color: { argb: 'FFDC2626' } } } }\r\n ]\r\n });\r\n }\r\n }\r\n\r\n private static toplamHucreleriniHazirla(table: TExcelTable): IHazirHucreDegeri[] {\r\n return table.columns.map((column, colIndex) => {\r\n if (colIndex === 0) {\r\n return { deger: table.toplamEtiketi ?? 'Toplam' };\r\n }\r\n\r\n if (column.toplamFormulu) {\r\n return { deger: this.toplamFormuluSonucuVer(table, column.toplamFormulu) ?? null };\r\n }\r\n\r\n const fonksiyon = this.toplamFonksiyonuVer(column);\r\n if (!fonksiyon) {\r\n return { deger: null };\r\n }\r\n\r\n const { adet, toplam } = this.kolonToplaminiVer(table, column.property);\r\n if (fonksiyon === 'average') {\r\n return { deger: adet ? toplam / adet : 0 };\r\n }\r\n\r\n return { deger: toplam };\r\n });\r\n }\r\n\r\n private static kolonToplaminiVer(table: TExcelTable, property: string): { adet: number; toplam: number } {\r\n let toplam = 0;\r\n let adet = 0;\r\n for (const row of table.collection) {\r\n const hamDeger = row[property];\r\n const sayi = Number(hamDeger);\r\n if (hamDeger !== null && hamDeger !== undefined && hamDeger !== '' && Number.isFinite(sayi)) {\r\n toplam += sayi;\r\n adet++;\r\n }\r\n }\r\n\r\n return { adet, toplam };\r\n }\r\n\r\n private static toplamFormulundekiKolonlariVer(table: TExcelTable, formul: string): string[] | undefined {\r\n const properties = [...formul.matchAll(/\\{([^{}]+)\\}/g)].map(eslesme => eslesme[1]!);\r\n const tumKolonlarVar = properties.every(property => table.columns.some(kolon => kolon.property === property));\r\n\r\n return properties.length && tumKolonlarVar ? properties : undefined;\r\n }\r\n\r\n private static toplamFormuluSonucuVer(table: TExcelTable, formul: string): number | undefined {\r\n if (!this.toplamFormulundekiKolonlariVer(table, formul)) {\r\n return undefined;\r\n }\r\n\r\n const sayisalFormul = formul.replaceAll(/\\{([^{}]+)\\}/g, (_eslesme, property: string) => {\r\n const { toplam } = this.kolonToplaminiVer(table, property);\r\n return toplam < 0 ? `(${toplam})` : String(toplam);\r\n });\r\n\r\n return ToplamFormuluHesaplayici.hesapla(sayisalFormul);\r\n }\r\n\r\n private static toplamFormuluExcelMetniVer(\r\n table: TExcelTable,\r\n formul: string,\r\n tabloAdi: string,\r\n kolonAdlari: string[]\r\n ): string | undefined {\r\n if (!this.toplamFormulundekiKolonlariVer(table, formul)) {\r\n return undefined;\r\n }\r\n\r\n return formul.replaceAll(/\\{([^{}]+)\\}/g, (_eslesme, property: string) => {\r\n const kolonAdi = kolonAdlari[table.columns.findIndex(kolon => kolon.property === property)]!;\r\n const kacisliAd = kolonAdi.replaceAll(/[[\\]#']/g, '\\'$&');\r\n return `SUBTOTAL(109,${tabloAdi}[${kacisliAd}])`;\r\n });\r\n }\r\n\r\n private static toplamFonksiyonuVer(column: TExcelTableColumn): 'average' | 'sum' | undefined {\r\n if (column.toplamFonksiyonu === 'none' || column.toplamFormulu) {\r\n return undefined;\r\n }\r\n\r\n return column.toplamFonksiyonu ?? (this.sayisalKolonMu(column.arrayType) ? 'sum' : undefined);\r\n }\r\n\r\n private static toplamSatiriKolonuVer(\r\n deger: ExcelJS.CellValue | undefined,\r\n kolonIndex: number,\r\n fonksiyon: 'average' | 'sum' | undefined,\r\n excelFormulu?: string\r\n ): { totalsRowFunction: 'average' | 'sum' } | { totalsRowFormula: string; totalsRowFunction: 'custom'; totalsRowResult?: number } | { totalsRowLabel: string } | undefined {\r\n if (kolonIndex === 0) {\r\n return { totalsRowLabel: typeof deger === 'string' ? deger : '' };\r\n }\r\n\r\n if (excelFormulu) {\r\n return {\r\n totalsRowFormula: excelFormulu,\r\n totalsRowFunction: 'custom',\r\n ...(typeof deger === 'number' && { totalsRowResult: deger })\r\n };\r\n }\r\n\r\n return fonksiyon ? { totalsRowFunction: fonksiyon } : undefined;\r\n }\r\n\r\n private static toplamSatiriniYaz(\r\n worksheet: ExcelJS.Worksheet,\r\n sonuc: ExcelRaporuSonuc,\r\n table: TExcelTable,\r\n toplamHucreleri: IHazirHucreDegeri[],\r\n satirNo: number,\r\n startCol: number\r\n ): void {\r\n const wsRow = worksheet.getRow(satirNo);\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 deger = toplamHucreleri[colIndex]?.deger;\r\n\r\n if (colIndex > 0 && typeof deger === 'number' && typeof cell.value === 'object' && cell.value !== null && 'formula' in cell.value) {\r\n cell.value = { ...cell.value, result: deger };\r\n }\r\n\r\n this.hucreFontunuUygula(cell, table.data?.font, sonuc.defaultFont);\r\n cell.font = { ...(cell.font ?? {}), bold: true };\r\n if (column.farkRenkli && typeof deger === 'number' && deger !== 0) {\r\n cell.font = { ...cell.font, color: { argb: deger > 0 ? 'FF16A34A' : 'FFDC2626' } };\r\n }\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFDDEBF7' } };\r\n\r\n const numFmt = this.numberFormatDonustur(this.kolonFormatiniBelirle(column));\r\n if (numFmt) {\r\n cell.numFmt = numFmt;\r\n }\r\n\r\n const hucreHizasi = this.hucreYatayHizasiniBelirle(column);\r\n cell.alignment = {\r\n ...(hucreHizasi !== undefined && { horizontal: hucreHizasi }),\r\n vertical: this.dikeyHizaDonustur(column.verticalAlignment),\r\n wrapText: false\r\n };\r\n }\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 autoFit: boolean | undefined,\r\n ekSatir?: ExcelJS.CellValue[]\r\n ): void {\r\n const filtreButonuBoslukPayi = 1.25;\r\n const veriSagBoslukPayi = 1;\r\n const autoFitAktif = autoFit !== false;\r\n\r\n for (let index = 0; index < columns.length; index++) {\r\n const worksheetColumn = worksheet.getColumn(startCol + index);\r\n const tasarimGenisligi = (columns[index]!.width ?? 0) > 0 ? Math.round(columns[index]!.width! / 7) : 0;\r\n\r\n if (!autoFitAktif) {\r\n worksheetColumn.width = tasarimGenisligi > 0 ? tasarimGenisligi : 10;\r\n continue;\r\n }\r\n\r\n const baslikUzunlugu = this.metinUzunlugu(this.baslikMetniniHazirla(columns[index]!.header.title));\r\n let veriUzunlugu = ekSatir ? this.hucreMetinUzunlugu(ekSatir[index]!) : 0;\r\n for (const satir of satirlar) {\r\n veriUzunlugu = Math.max(veriUzunlugu, this.hucreMetinUzunlugu(satir[index]!));\r\n }\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(column: TExcelTableColumn): ExcelJS.Alignment['horizontal'] | undefined {\r\n if (this.sayisalKolonMu(column.arrayType)) {\r\n return 'right';\r\n }\r\n\r\n if (this.booleanKolonMu(column.arrayType)) {\r\n return 'center';\r\n }\r\n\r\n if (column.horizontalAlignment === undefined) {\r\n return undefined;\r\n }\r\n\r\n return this.yatayHizaDonustur(column.horizontalAlignment);\r\n }\r\n\r\n private static kolonFormatiniBelirle(column: TExcelTableColumn): number | undefined {\r\n if (column.format !== undefined && column.format !== NumberFormatlar.belirsiz) {\r\n return column.format;\r\n }\r\n\r\n switch (column.arrayType) {\r\n case VariableType.integer:\r\n case VariableType.longint:\r\n return NumberFormatlar.long;\r\n\r\n case VariableType.real:\r\n return NumberFormatlar.real;\r\n\r\n case VariableType.date:\r\n return NumberFormatlar.tarih;\r\n\r\n default:\r\n return column.format;\r\n }\r\n }\r\n\r\n private static sayisalKolonMu(arrayType: VariableType | undefined): boolean {\r\n switch (arrayType) {\r\n case VariableType.integer:\r\n case VariableType.longint:\r\n case VariableType.real:\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private static booleanKolonMu(arrayType: VariableType | undefined): boolean {\r\n return arrayType === VariableType.boolean;\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 const sifirDegerMi =\r\n (typeof value === 'number' && value === 0) ||\r\n (typeof value === 'string' && this.sayisalKolonMu(column.arrayType) && value.trim() !== '' && Number(value) === 0);\r\n\r\n if (sifirDegerMi && sifirlariBasmaSayi) {\r\n return { deger: null };\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 tarihMetni = this.tarihStringiniExcelMetnineDonustur(normallesenDeger, column);\r\n if (tarihMetni) {\r\n return this.hazirHucreDegeriOlustur(tarihMetni, htmlHucre?.fontColorArgb);\r\n }\r\n\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 (this.booleanKolonMu(column.arrayType)) {\r\n return this.hazirHucreDegeriOlustur(normallesenDeger === true ? '+' : '', htmlHucre?.fontColorArgb);\r\n }\r\n\r\n if ((typeof normallesenDeger === 'number') || (typeof normallesenDeger === 'string')) {\r\n return this.hazirHucreDegeriOlustur(normallesenDeger, htmlHucre?.fontColorArgb);\r\n }\r\n\r\n return this.hazirHucreDegeriOlustur(String(normallesenDeger), htmlHucre?.fontColorArgb);\r\n }\r\n\r\n private static hazirHucreDegeriOlustur(deger: ExcelJS.CellValue, fontColorArgb?: string): IHazirHucreDegeri {\r\n return {\r\n deger,\r\n ...(fontColorArgb ? { fontColorArgb } : {})\r\n };\r\n }\r\n\r\n private static htmlHucreIceriginiHazirla(value: string): { deger: string; fontColorArgb?: string } | undefined {\r\n if (!/[<>]/.test(value)) {\r\n return undefined;\r\n }\r\n\r\n const deger = value\r\n .replaceAll(/<br\\s*\\/?>/gi, '\\n')\r\n .replaceAll(/<\\/p\\s*>/gi, '\\n')\r\n .replaceAll(/<p\\b[^>]*>/gi, '')\r\n .replaceAll(/<\\/div\\s*>/gi, '\\n')\r\n .replaceAll(/<div\\b[^>]*>/gi, '')\r\n .replaceAll(/<[^>]+>/g, '')\r\n .replaceAll(/ /gi, ' ')\r\n .trim();\r\n\r\n const colorValue = this.htmlFontRenginiBul(value);\r\n const fontColorArgb = this.argbDonustur(colorValue);\r\n\r\n if ((deger === value) && !fontColorArgb) {\r\n return undefined;\r\n }\r\n\r\n return { deger, ...(fontColorArgb && { fontColorArgb }) };\r\n }\r\n\r\n private static htmlFontRenginiBul(value: string): string | undefined {\r\n const fontColorMatch = /<font\\b[^>]*\\bcolor\\s*=\\s*[\"']?([^\"' >]+)[\"']?[^>]*>/i.exec(value);\r\n if (fontColorMatch?.[1]) {\r\n return fontColorMatch[1].trim();\r\n }\r\n\r\n const styleColorMatch = /<(?:font|span)\\b[^>]*\\bstyle\\s*=\\s*[\"'][^\"']*\\bcolor\\s*:\\s*([^;\"']+)/i.exec(value);\r\n if (styleColorMatch?.[1]) {\r\n return styleColorMatch[1].trim();\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static tarihStringiniDateeDonustur(value: string): Date | undefined {\r\n const trimmedValue = value.trim();\r\n const isoDateMatch = /^(\\d{4})-(\\d{2})-(\\d{2})(?:$|[T\\s])/.exec(trimmedValue);\r\n\r\n if (!isoDateMatch) {\r\n return undefined;\r\n }\r\n\r\n const year = Number(isoDateMatch[1]);\r\n const month = Number(isoDateMatch[2]);\r\n const day = Number(isoDateMatch[3]);\r\n\r\n if (!Number.isInteger(year) || !Number.isInteger(month) || !Number.isInteger(day)) {\r\n return undefined;\r\n }\r\n\r\n const date = new Date(year, month - 1, day);\r\n if (date.getFullYear() !== year || date.getMonth() !== (month - 1) || date.getDate() !== day) {\r\n return undefined;\r\n }\r\n\r\n return new Date(Date.UTC(year, month - 1, day, 12, 0, 0, 0));\r\n }\r\n\r\n private static tarihStringiniExcelMetnineDonustur(value: string, column: TExcelTableColumn): string | undefined {\r\n if (!this.sadeceTarihKolonuMu(column)) {\r\n return undefined;\r\n }\r\n\r\n const trimmedValue = value.trim();\r\n const isoDateMatch = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(trimmedValue);\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 `${String(day).padStart(2, '0')}.${String(month).padStart(2, '0')}.${year}`;\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 sadeceTarihKolonuMu(column: TExcelTableColumn): boolean {\r\n return this.kolonFormatiniBelirle(column) === NumberFormatlar.tarih;\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
|
@@ -114,6 +114,8 @@ interface IExcelRaporuTableColumn {
|
|
|
114
114
|
columnNo?: number;
|
|
115
115
|
htmlKoduGelebilir?: boolean;
|
|
116
116
|
farkRenkli?: boolean;
|
|
117
|
+
toplamFonksiyonu?: 'average' | 'none' | 'sum';
|
|
118
|
+
toplamFormulu?: string;
|
|
117
119
|
}
|
|
118
120
|
interface IExcelRaporuSatirRenkBilgisi {
|
|
119
121
|
color: string;
|
|
@@ -145,7 +147,6 @@ interface IExcelRaporuTable {
|
|
|
145
147
|
autoFit?: boolean;
|
|
146
148
|
toplamSatiri?: boolean;
|
|
147
149
|
toplamEtiketi?: string;
|
|
148
|
-
toplamDegerleri?: Record<string, ExcelHucreDegeri>;
|
|
149
150
|
columnFontNames?: string[];
|
|
150
151
|
columnFontSizes?: number[];
|
|
151
152
|
columnFontColors?: string[];
|
|
@@ -261,7 +262,6 @@ interface IJsonToExcelTableOptions {
|
|
|
261
262
|
footer?: TExcelTable['footer'];
|
|
262
263
|
header?: TExcelTable['header'];
|
|
263
264
|
sol?: TExcelTable['sol'];
|
|
264
|
-
toplamDegerleri?: TExcelTable['toplamDegerleri'];
|
|
265
265
|
toplamEtiketi?: TExcelTable['toplamEtiketi'];
|
|
266
266
|
toplamSatiri?: TExcelTable['toplamSatiri'];
|
|
267
267
|
ust?: TExcelTable['ust'];
|
|
@@ -297,6 +297,7 @@ declare class JsonToExcelParser {
|
|
|
297
297
|
static indir(sonuc: ExcelRaporuSonuc, dosyaAdi: string): Promise<void>;
|
|
298
298
|
static blobOlustur(sonuc: ExcelRaporuSonuc): Promise<Blob>;
|
|
299
299
|
private static toplamSatiriFormulleriniYaz;
|
|
300
|
+
private static xmlKacis;
|
|
300
301
|
static standartPageSetupOlustur(): TExcelPageSetup;
|
|
301
302
|
static ustBilgiEkle(ustBilgi: string, font?: TExcelUstBilgi['font']): TExcelUstBilgi;
|
|
302
303
|
static raporOlustur(): JsonToExcelReportBuilder;
|
|
@@ -322,8 +323,12 @@ declare class JsonToExcelParser {
|
|
|
322
323
|
private static tabloyuYaz;
|
|
323
324
|
private static farkRenkleriniUygula;
|
|
324
325
|
private static toplamHucreleriniHazirla;
|
|
325
|
-
private static
|
|
326
|
-
private static
|
|
326
|
+
private static kolonToplaminiVer;
|
|
327
|
+
private static toplamFormulundekiKolonlariVer;
|
|
328
|
+
private static toplamFormuluSonucuVer;
|
|
329
|
+
private static toplamFormuluExcelMetniVer;
|
|
330
|
+
private static toplamFonksiyonuVer;
|
|
331
|
+
private static toplamSatiriKolonuVer;
|
|
327
332
|
private static toplamSatiriniYaz;
|
|
328
333
|
private static kolonGenislikleriniUygula;
|
|
329
334
|
private static baslikMetniniHazirla;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitng-blob-response-handler.d.ts","sources":["../../src/app/components/blob-response-handler/models/excelRaporuSonuc.ts","../../src/app/components/blob-response-handler/blob-response-handler.service.ts","../../src/app/components/blob-response-handler/models/jsonToExcelParser.ts"],"mappings":";;;;;;AAGM,KAAM,gBAAgB,aAAa,IAAI;AAE7C,cAAa,gBAAgB;UACrB,gBAAgB;WAKf,gBAAgB;iBAEV,uBAAuB;AAKpC;;;AAGA;AACA;AAGA,kBAAc,0BAA0B;eAC7B,yBAAyB;UAC9B,oBAAoB;AAC1B;AACA,aAAS,iBAAiB;YAGlB,iBAAiB;YAEjB,kBAAkB;AAG3B;AAED,UAAU,gBAAgB;;;;;AAKzB;AAED,UAAU,uBAAuB;;;AAGhC;AAED,UAAU,gBAAgB;;;;;;;;AAQzB;AAED,UAAU,gBAAgB;;;;;AAKzB;AAED,UAAU,kBAAkB;;AAE3B;AAED,UAAU,0BAA0B;;;WAG3B,gBAAgB;AACxB;AAED,UAAU,yBAAyB;WAC1B,gBAAgB;AACvB;AACA;AACD;AAED,UAAU,oBAAoB;WACrB,gBAAgB;AACxB;AAED,UAAU,kBAAkB;;;;;AAK3B;AAED,UAAU,oBAAoB;;AAE7B;AAED,UAAU,qBAAqB;;;;WAItB,gBAAgB;eACZ,oBAAoB;aACtB,kBAAkB;AAC5B;AAED,UAAU,qBAAqB;WACtB,gBAAgB;eACZ,oBAAoB;aACtB,kBAAkB;AAC5B;AAED,UAAU,uBAAuB;;;;AAIhC;AAED,UAAU,6BAA6B;;0BAEf,QAAQ;wBACV,QAAQ;AAC7B;AAED,UAAU,6BAA6B;;;;0BAIf,QAAQ;wBACV,QAAQ;AAC7B;UAEgB,uBAAuB;;gBAE1B,YAAY;YAChB,6BAA6B;aAC5B,6BAA6B;0BAChB,QAAQ;wBACV,QAAQ;;;;;;
|
|
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":[]}
|