Admin panel infinite scroll hatası giderildi
Playlist şarkıları listesinde sıra numaraları yanlış atlıyordu: 1-50 sonra 51 yerine 101'e, ardından 151'e geçiyordu.
Admin panelde bir playlist'in şarkılarını görüntülerken, şarkıların başında gözüken sıra numaraları düzgün artmıyordu. İlk 50 şarkı 1'den 50'ye kadar normal giderken, sonraki şarkı 51 yerine 101 oluyordu. Ardından 151, 201 şeklinde devam ediyordu.
Sayfa aşağı kaydırıldığında yeni şarkılar yüklenirken (buna "infinite scroll" deniyor), numaralandırma sistemi yanlış hesaplama yapıyordu. Sistem, toplam kaç şarkı yüklendiğine değil, listede kaç şarkı olması gerektiğine bakıyordu. Bu iki sayı farklı olunca numaralar atlıyordu.
Yeni şarkılar eklenirken, sadece gerçekten eklenen şarkıları sayacak özel bir sayaç eklendi. Artık numaralar düzgün şekilde 1, 2, 3, 4... diye devam ediyor.
Sonuç
Playlist'lerdeki tüm şarkılar artık doğru sıra numaralarıyla gösteriliyor. 1-50, 51-100, 101-150 şeklinde devam ediyor.
Infinite scroll implementasyonunda, yeni şarkılar eklenirken (append mode) forEach döngüsünün index parametresi kullanılıyordu.
playlistSongs.forEach((song, index) => {
if (!existingIds.has(song.id)) {
// index = array'deki pozisyon (0-99)
// startIndex = DOM'daki mevcut item sayısı (50)
const number = startIndex + index + 1; // 50 + 50 + 1 = 101 ❌
}
});
Problem: index tüm array'deki pozisyonu temsil ediyor. Eğer bazı itemlar duplicate kontrolünde atlanırsa, sayılar yanlış hesaplanıyor.
Yeni bir sayaç (newItemIndex) eklendi. Bu sayaç sadece DOM'a eklenen itemlar için artırılıyor.
let newItemIndex = 0; // Yeni eklenen item sayacı
playlistSongs.forEach((song, index) => {
if (!existingIds.has(song.id)) {
// newItemIndex = sadece yeni eklenen itemların sayısı
const number = startIndex + newItemIndex + 1; // 50 + 0 + 1 = 51 ✓
// HTML oluştur...
newItemIndex++; // Her eklenen item için sayacı artır
}
});
newItemIndex başlangıçta 0newItemIndex++ çalışıyorstartIndex + newItemIndex + 1const startIndex = ...length;
const startIndex = ...length;
let newItemIndex = 0;
data-position="${startIndex + index}"
${startIndex + index + 1}
data-position="${startIndex + newItemIndex}"
${startIndex + newItemIndex + 1}
// forEach bitişi
newItemIndex++; // Sayaç artır
/admin/muzibu/playlist/songs/{id}
Admin panel → Playlist yönetimi → Şarkı listesi
/admin/muzibu/playlist/songs/{id} sayfasını açBeklenen Sonuç
Tüm şarkılar kesintisiz olarak 1'den başlayarak sıralı numaralandırılmalı. Hiçbir numara atlanmamalı.