From 8c0700f40646eeb8563bd210a476f6442a9d5f49 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Sat, 28 Mar 2026 00:24:04 +0100 Subject: [PATCH] fix: filter by all merged referrers when clicking a group (e.g. Pulse covers both prod and staging) --- components/dashboard/TopReferrers.tsx | 2 +- lib/utils/icons.tsx | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/components/dashboard/TopReferrers.tsx b/components/dashboard/TopReferrers.tsx index 7fb325f..44c0569 100644 --- a/components/dashboard/TopReferrers.tsx +++ b/components/dashboard/TopReferrers.tsx @@ -125,7 +125,7 @@ export default function TopReferrers({ referrers, collectReferrers = true, siteI return (
onFilter?.({ dimension: 'referrer', operator: 'is', values: [ref.referrer] })} + onClick={() => onFilter?.({ dimension: 'referrer', operator: 'is', values: ref.allReferrers ?? [ref.referrer] })} className={`relative flex items-center justify-between h-9 group hover:bg-neutral-50/50 dark:hover:bg-neutral-800/50 rounded-lg px-2 -mx-2 transition-colors${onFilter ? ' cursor-pointer' : ''}`} >
-): Array<{ referrer: string; pageviews: number }> { - const byDisplayName = new Map() +): Array<{ referrer: string; pageviews: number; allReferrers: string[] }> { + const byDisplayName = new Map }>() for (const ref of items) { const name = getReferrerDisplayName(ref.referrer) const existing = byDisplayName.get(name) if (!existing) { - byDisplayName.set(name, { referrer: ref.referrer, pageviews: ref.pageviews, maxSingle: ref.pageviews }) + byDisplayName.set(name, { referrer: ref.referrer, pageviews: ref.pageviews, maxSingle: ref.pageviews, allReferrers: new Set([ref.referrer]) }) } else { existing.pageviews += ref.pageviews + existing.allReferrers.add(ref.referrer) if (ref.pageviews > existing.maxSingle) { existing.maxSingle = ref.pageviews existing.referrer = ref.referrer @@ -338,6 +339,6 @@ export function mergeReferrersByDisplayName( } } return Array.from(byDisplayName.values()) - .map(({ referrer, pageviews }) => ({ referrer, pageviews })) + .map(({ referrer, pageviews, allReferrers }) => ({ referrer, pageviews, allReferrers: Array.from(allReferrers) })) .sort((a, b) => b.pageviews - a.pageviews) }