From aa25d21c6bdb9e933f9db35f7106b5b316479b8b Mon Sep 17 00:00:00 2001 From: Joerg Date: Thu, 22 Jan 2026 08:07:38 +0100 Subject: [PATCH] fix: count unique entities in column sums instead of QSO counts Column sums now correctly count unique entities (e.g., unique DXCC countries per band) instead of counting individual entity entries or QSOs. This matches the award progress semantics. Co-Authored-By: Claude --- .../src/routes/awards/[id]/+page.svelte | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/frontend/src/routes/awards/[id]/+page.svelte b/src/frontend/src/routes/awards/[id]/+page.svelte index f3effe7..cd09ce5 100644 --- a/src/frontend/src/routes/awards/[id]/+page.svelte +++ b/src/frontend/src/routes/awards/[id]/+page.svelte @@ -287,7 +287,7 @@ applyFilter(); } - // Calculate column sums + // Calculate column sums - counts unique entities per column (not QSO counts) $: columnSums = (() => { const sums = new Map(); const hasPoints = entities.length > 0 && entities[0].points !== undefined; @@ -321,25 +321,29 @@ sums.set(key, sum); } } else { - // Count confirmed QSOs in this column + // Count unique entities in this column (not QSO counts) if (isMixedMode) { - const count = entities.filter(e => { + const matchedEntities = entities.filter(e => { // For SAT column, check if entity has satellite QSOs if (band === 'SAT') { return e.qsos && e.qsos.some(qso => qso.satName) && e.confirmed; } return e.band === band && e.confirmed; - }).length; - sums.set(key, count); + }); + // Count unique entity names + const uniqueEntities = new Set(matchedEntities.map(e => e.entityName || e.entity || 'Unknown')); + sums.set(key, uniqueEntities.size); } else { - const count = entities.filter(e => { + const matchedEntities = entities.filter(e => { // For SAT column, check if entity has satellite QSOs if (band === 'SAT') { return e.qsos && e.qsos.some(qso => qso.satName) && e.mode === mode && e.confirmed; } return e.band === band && e.mode === mode && e.confirmed; - }).length; - sums.set(key, count); + }); + // Count unique entity names + const uniqueEntities = new Set(matchedEntities.map(e => e.entityName || e.entity || 'Unknown')); + sums.set(key, uniqueEntities.size); } } });