Naslovnica: razmik po izvajalcu tudi v bloku Beliebt in v featured karuselu

This commit is contained in:
folx bot
2026-08-29 20:19:58 +02:00
parent 095636137e
commit 12694d6db8
+9 -4
View File
@@ -184,10 +184,10 @@ function MosaicHeading({ children }: { children: React.ReactNode }) {
} }
/** Isti izvajalec ne sme stati drug ob drugem: med dvema clankoma vsaj 5 mest. */ /** Isti izvajalec ne sme stati drug ob drugem: med dvema clankoma vsaj 5 mest. */
function razmakniPoIzvajalcu(list: Article[], razmik = 5): Article[] { function razmakniPoIzvajalcu(list: Article[], razmik = 5, seed: string[] = []): Article[] {
const rest = [...(list || [])]; const rest = [...(list || [])];
const out: Article[] = []; const out: Article[] = [];
const recent: string[] = []; const recent: string[] = seed.filter(Boolean).slice(-(razmik - 1));
while (rest.length) { while (rest.length) {
let idx = rest.findIndex((a) => { let idx = rest.findIndex((a) => {
const k = artistKey(a?.title || ""); const k = artistKey(a?.title || "");
@@ -261,7 +261,12 @@ function MobileMosaic({ latest, popular, focalPoints }: { latest: Article[]; pop
if (l.length === 0) return null; if (l.length === 0) return null;
const usedIds = new Set(pool.map((a) => a.id)); const usedIds = new Set(pool.map((a) => a.id));
const p = (popular || []).filter((a) => !usedIds.has(a.id)).slice(0, 3); const seenNow = l.map((a) => artistKey(a?.title || "")).filter(Boolean);
const p = razmakniPoIzvajalcu(
(popular || []).filter((a) => !usedIds.has(a.id)),
5,
seenNow,
).slice(0, 3);
const nextStart = ((displayPage + 1) % totalPages) * pageSize; const nextStart = ((displayPage + 1) % totalPages) * pageSize;
const preload = pool.slice(nextStart, nextStart + pageSize); const preload = pool.slice(nextStart, nextStart + pageSize);
@@ -949,7 +954,7 @@ export default function Home() {
pod karuselom je zato ostal prazen pas. Zdaj se karusel pod karuselom je zato ostal prazen pas. Zdaj se karusel
raztegne do visine stranskega stolpca. */} raztegne do visine stranskega stolpca. */}
<div className="hidden md:block lg:flex-1 lg:min-h-0"> <div className="hidden md:block lg:flex-1 lg:min-h-0">
<FeaturedCarousel articles={articles.filter(a => a.featured)} popular={popular} galleryImages={galleryImages} focalPoints={focalPoints} /> <FeaturedCarousel articles={razmakniPoIzvajalcu(articles.filter(a => a.featured))} popular={popular} galleryImages={galleryImages} focalPoints={focalPoints} />
</div> </div>
<MobileMosaic <MobileMosaic
latest={[...articles].sort((a, b) => new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime())} latest={[...articles].sort((a, b) => new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime())}