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}