refactor: güncellenmiş profil çerezi ile sonuç sayfası yönlendirmeleri
Some checks failed
Deploy / deploy (push) Has been cancelled
Some checks failed
Deploy / deploy (push) Has been cancelled
Profil çerezinin SSR'da kullanılmasını sağlayarak, sonuç sayfasındaki yönlendirmeleri güncelledik. Artık profil bilgileri URL parametreleri yerine çerezden alınarak işleniyor. Ayrıca, profil çerezi olmayan kullanıcılar için yönlendirme mantığı iyileştirildi. Çeşitli bileşenlerdeki URL oluşturma fonksiyonları güncellenerek, profil bilgileri çerezden okunacak şekilde düzenlendi. Bu değişiklikler, kullanıcı deneyimini artırmayı ve daha tutarlı bir veri akışı sağlamayı hedefliyor.
This commit is contained in:
@@ -259,16 +259,23 @@ export function getAllUniversiteler(): UniOzet[] {
|
||||
const map = uniMapGetir();
|
||||
const rows = getDb()
|
||||
.prepare(
|
||||
`SELECT universite, MAX(il) AS il, MAX(unitur) AS unitur,
|
||||
COUNT(*) AS adet
|
||||
`SELECT universite, MAX(unitur) AS unitur, COUNT(*) AS adet
|
||||
FROM programs GROUP BY universite`,
|
||||
)
|
||||
.all() as {
|
||||
universite: string;
|
||||
il: string | null;
|
||||
unitur: string | null;
|
||||
adet: number;
|
||||
}[];
|
||||
// il: MAX(il) alfabetik en büyüğü seçip yanıltıyordu (ör. Ankara Sosyal
|
||||
// Bilimler'in 12 KKTC satırı 47 Ankara satırını eziyordu); üniversitenin
|
||||
// en çok programının bulunduğu il esas alınır.
|
||||
const ilRows = getDb()
|
||||
.prepare(
|
||||
`SELECT universite, il, COUNT(*) AS adet FROM programs
|
||||
WHERE il IS NOT NULL GROUP BY universite, il`,
|
||||
)
|
||||
.all() as { universite: string; il: string; adet: number }[];
|
||||
// Fakülte sayısı: aynı üniversitenin iki yazımı ("X ÜNİV." / "X ÜNİV. (İL)")
|
||||
// birleştiği için GROUP BY universite üzerinden saymak çift sayardı;
|
||||
// (slug, fakulte) çifti üzerinden kesin sayılır.
|
||||
@@ -296,9 +303,30 @@ export function getAllUniversiteler(): UniOzet[] {
|
||||
if (!slug) continue;
|
||||
const u = bySlug.get(slug)!;
|
||||
u.programSayisi += row.adet;
|
||||
if (!u.il && row.il) u.il = row.il;
|
||||
if (!u.unitur && row.unitur) u.unitur = row.unitur;
|
||||
}
|
||||
const ilAdetleri = new Map<string, Map<string, number>>();
|
||||
for (const row of ilRows) {
|
||||
const slug = slugByHam.get(row.universite);
|
||||
if (!slug) continue;
|
||||
let sayac = ilAdetleri.get(slug);
|
||||
if (!sayac) {
|
||||
sayac = new Map();
|
||||
ilAdetleri.set(slug, sayac);
|
||||
}
|
||||
sayac.set(row.il, (sayac.get(row.il) ?? 0) + row.adet);
|
||||
}
|
||||
for (const [slug, sayac] of ilAdetleri) {
|
||||
let enIyi: string | null = null;
|
||||
let enCok = 0;
|
||||
for (const [il, adet] of sayac) {
|
||||
if (adet > enCok) {
|
||||
enIyi = il;
|
||||
enCok = adet;
|
||||
}
|
||||
}
|
||||
bySlug.get(slug)!.il = enIyi;
|
||||
}
|
||||
const fakulteSetleri = new Map<string, Set<string>>();
|
||||
for (const row of fakulteRows) {
|
||||
const slug = slugByHam.get(row.universite);
|
||||
|
||||
Reference in New Issue
Block a user