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) }