udpate total count to be all base and variants
This commit is contained in:
@@ -116,8 +116,15 @@ export default function Page() {
|
|||||||
return bySet;
|
return bySet;
|
||||||
}, [cards, query, setId]);
|
}, [cards, query, setId]);
|
||||||
|
|
||||||
const filteredCollectedCount = useMemo(() => filtered.filter((c) => isFullyCollected(c)).length, [filtered, checklist]);
|
// Variant-based counts for filtered set
|
||||||
const filteredUncollectedCount = useMemo(() => filtered.length - filteredCollectedCount, [filtered, filteredCollectedCount]);
|
const filteredCollectedVariantsCount = useMemo(() => {
|
||||||
|
return filtered.reduce((sum, c) => {
|
||||||
|
const state = checklist[c.id] || {};
|
||||||
|
return sum + availableVariants(c).reduce((acc, k) => acc + (state[k] ? 1 : 0), 0);
|
||||||
|
}, 0);
|
||||||
|
}, [filtered, checklist]);
|
||||||
|
const filteredTotalVariants = useMemo(() => filtered.reduce((sum, c) => sum + availableVariants(c).length, 0), [filtered]);
|
||||||
|
const filteredUncollectedVariantsCount = useMemo(() => filteredTotalVariants - filteredCollectedVariantsCount, [filteredTotalVariants, filteredCollectedVariantsCount]);
|
||||||
|
|
||||||
const displayed = useMemo(() => {
|
const displayed = useMemo(() => {
|
||||||
return tab === 'collected'
|
return tab === 'collected'
|
||||||
@@ -133,13 +140,20 @@ export default function Page() {
|
|||||||
return Array.from(map.entries()).map(([id, label]) => ({ id, label })).sort((a, b) => a.label.localeCompare(b.label));
|
return Array.from(map.entries()).map(([id, label]) => ({ id, label })).sort((a, b) => a.label.localeCompare(b.label));
|
||||||
}, [cards]);
|
}, [cards]);
|
||||||
|
|
||||||
|
// Overall variant-based totals for header
|
||||||
|
const totalVariantsAll = useMemo(() => cards.reduce((sum, c) => sum + availableVariants(c).length, 0), [cards]);
|
||||||
|
const collectedVariantsAll = useMemo(() => cards.reduce((sum, c) => {
|
||||||
|
const state = checklist[c.id] || {};
|
||||||
|
return sum + availableVariants(c).reduce((acc, k) => acc + (state[k] ? 1 : 0), 0);
|
||||||
|
}, 0), [cards, checklist]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main className="container mx-auto">
|
<main className="container mx-auto">
|
||||||
<Header
|
<Header
|
||||||
query={query}
|
query={query}
|
||||||
onQueryChange={setQuery}
|
onQueryChange={setQuery}
|
||||||
total={cards.length}
|
total={totalVariantsAll}
|
||||||
collectedCount={useMemo(() => cards.filter((c) => isFullyCollected(c)).length, [cards, checklist])}
|
collectedCount={collectedVariantsAll}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div className="mb-4 flex flex-wrap items-center gap-3">
|
<div className="mb-4 flex flex-wrap items-center gap-3">
|
||||||
@@ -188,7 +202,7 @@ export default function Page() {
|
|||||||
aria-pressed={tab === 'uncollected'}
|
aria-pressed={tab === 'uncollected'}
|
||||||
>
|
>
|
||||||
Uncollected <span className="ml-1 inline-block rounded bg-white/20 px-1.5 py-0.5 text-xs border border-white/30">
|
Uncollected <span className="ml-1 inline-block rounded bg-white/20 px-1.5 py-0.5 text-xs border border-white/30">
|
||||||
{filteredUncollectedCount}
|
{filteredUncollectedVariantsCount}
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
@@ -202,7 +216,7 @@ export default function Page() {
|
|||||||
aria-pressed={tab === 'collected'}
|
aria-pressed={tab === 'collected'}
|
||||||
>
|
>
|
||||||
Collected <span className="ml-1 inline-block rounded bg-white/20 px-1.5 py-0.5 text-xs border border-white/30">
|
Collected <span className="ml-1 inline-block rounded bg-white/20 px-1.5 py-0.5 text-xs border border-white/30">
|
||||||
{filteredCollectedCount}
|
{filteredCollectedVariantsCount}
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user