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 <noreply@anthropic.com>
This commit is contained in:
2026-01-22 08:07:38 +01:00
parent e14da11a93
commit aa25d21c6b

View File

@@ -287,7 +287,7 @@
applyFilter(); applyFilter();
} }
// Calculate column sums // Calculate column sums - counts unique entities per column (not QSO counts)
$: columnSums = (() => { $: columnSums = (() => {
const sums = new Map(); const sums = new Map();
const hasPoints = entities.length > 0 && entities[0].points !== undefined; const hasPoints = entities.length > 0 && entities[0].points !== undefined;
@@ -321,25 +321,29 @@
sums.set(key, sum); sums.set(key, sum);
} }
} else { } else {
// Count confirmed QSOs in this column // Count unique entities in this column (not QSO counts)
if (isMixedMode) { if (isMixedMode) {
const count = entities.filter(e => { const matchedEntities = entities.filter(e => {
// For SAT column, check if entity has satellite QSOs // For SAT column, check if entity has satellite QSOs
if (band === 'SAT') { if (band === 'SAT') {
return e.qsos && e.qsos.some(qso => qso.satName) && e.confirmed; return e.qsos && e.qsos.some(qso => qso.satName) && e.confirmed;
} }
return e.band === band && 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 { } else {
const count = entities.filter(e => { const matchedEntities = entities.filter(e => {
// For SAT column, check if entity has satellite QSOs // For SAT column, check if entity has satellite QSOs
if (band === 'SAT') { if (band === 'SAT') {
return e.qsos && e.qsos.some(qso => qso.satName) && e.mode === mode && e.confirmed; return e.qsos && e.qsos.some(qso => qso.satName) && e.mode === mode && e.confirmed;
} }
return e.band === band && 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);
} }
} }
}); });