From c75e55d130a55b63ae688dbeec47f81884d1b973 Mon Sep 17 00:00:00 2001 From: Joerg Date: Thu, 22 Jan 2026 07:58:21 +0100 Subject: [PATCH] feat: show unique entity progress in award summary Summary cards now display unique entity counts (e.g., unique DXCC countries) instead of per-band/mode slot counts. This shows actual award progress: Total entities worked, confirmed, and needed to reach the award target. Co-Authored-By: Claude --- .../src/routes/awards/[id]/+page.svelte | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/frontend/src/routes/awards/[id]/+page.svelte b/src/frontend/src/routes/awards/[id]/+page.svelte index 6f2c9dd..9e3e9a2 100644 --- a/src/frontend/src/routes/awards/[id]/+page.svelte +++ b/src/frontend/src/routes/awards/[id]/+page.svelte @@ -29,6 +29,29 @@ ? entities : entities.filter(e => e.mode === selectedMode); + // Calculate unique entity progress (for DXCC, DLD, etc.) + $: uniqueEntityProgress = (() => { + const uniqueEntities = new Map(); + + filteredEntities.forEach(e => { + const entityName = e.entityName || e.entity || 'Unknown'; + + if (!uniqueEntities.has(entityName)) { + uniqueEntities.set(entityName, { worked: false, confirmed: false }); + } + + const status = uniqueEntities.get(entityName); + if (e.worked) status.worked = true; + if (e.confirmed) status.confirmed = true; + }); + + return { + total: uniqueEntities.size, + worked: Array.from(uniqueEntities.values()).filter(s => s.worked).length, + confirmed: Array.from(uniqueEntities.values()).filter(s => s.confirmed).length + }; + })(); + onMount(async () => { await loadAwardData(); }); @@ -423,20 +446,18 @@ {targetPoints} {:else} - {@const workedCount = filteredEntities.filter((e) => e.worked).length} - {@const confirmedCount = filteredEntities.filter((e) => e.confirmed).length} - {@const neededCount = award.target ? Math.max(0, award.target - workedCount) : filteredEntities.filter((e) => !e.worked).length} + {@const neededCount = award.target ? Math.max(0, award.target - uniqueEntityProgress.worked) : uniqueEntityProgress.total - uniqueEntityProgress.worked}
Total: - {filteredEntities.length} + {uniqueEntityProgress.total}
Confirmed: - {confirmedCount} + {uniqueEntityProgress.confirmed}
Worked: - {workedCount} + {uniqueEntityProgress.worked}
Needed: