Sorun: ilan.gov.tr illeri 'Ankara' biçiminde, EKAP arşivi/DT 'ANKARA' biçiminde veriyordu. İl filtresi birebir string karşılaştırdığı için kullanıcı 'Ankara' seçtiğinde 161 'ANKARA' kaydı görünmüyordu. 81 ilin hepsi çift kayıtlıydı (162 farklı il değeri). - server/tr-text.mjs: Türkçe duyarlı titleCaseTr / normTr yardımcıları - history-store + dt-store: il adı okunurken tek biçime indiriliyor (mevcut kayıtlar için de geçerli, yeniden tarama gerekmiyor) - TenderList: il filtresi normalize karşılaştırma yapıyor (savunma katmanı)
22 lines
705 B
JavaScript
22 lines
705 B
JavaScript
/**
|
||
* Türkçe metin yardımcıları.
|
||
* Kaynaklar il adını farklı yazıyor (ilan.gov.tr "Ankara", EKAP "ANKARA");
|
||
* tek biçime indirgemezsek il filtresi ve gruplamalar bölünüyor.
|
||
*/
|
||
|
||
/** "İSTANBUL" → "İstanbul", "şanlıurfa" → "Şanlıurfa" (Türkçe i/ı duyarlı) */
|
||
export function titleCaseTr(s) {
|
||
if (!s) return '';
|
||
return String(s)
|
||
.trim()
|
||
.toLocaleLowerCase('tr-TR')
|
||
.split(/(\s+|-)/)
|
||
.map((w) => (/^[\s-]*$/.test(w) ? w : w.charAt(0).toLocaleUpperCase('tr-TR') + w.slice(1)))
|
||
.join('');
|
||
}
|
||
|
||
/** Karşılaştırma için normalize (büyük harf, Türkçe duyarlı) */
|
||
export function normTr(s) {
|
||
return String(s || '').trim().toLocaleUpperCase('tr-TR');
|
||
}
|