From 9b671795d76920f2b1f625fbe0e45a6c9a24485b Mon Sep 17 00:00:00 2001 From: Joerg Date: Fri, 16 Jan 2026 10:41:27 +0100 Subject: [PATCH] Fix WAS award and improve award progress display - Fix WAS award filter to use entityId (291) instead of entity string - Fix backend to use normalized rules.target for all award types - Fix frontend to distinguish point-based from entity-based awards - Fix "Needed" calculation for entity awards: target - worked - Remove points display from non-point awards (WAS, DXCC, etc.) - Add proper target field to all award API responses Fixes issue where: - WAS showed 0 states (filter didn't match "UNITED STATES OF AMERICA") - DXCC CW showed "Needed: 0" (target not extracted from nested rules) - Entity awards showed "Points: NaN" (incorrectly detected as point-based) Co-Authored-By: Claude Sonnet 4.5 --- award-definitions/was.json | 4 ++-- src/backend/services/awards.service.js | 2 +- src/frontend/src/routes/awards/[id]/+page.svelte | 11 +++++++---- src/frontend/static/award-definitions/was.json | 4 ++-- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/award-definitions/was.json b/award-definitions/was.json index 7f01bda..06598c6 100644 --- a/award-definitions/was.json +++ b/award-definitions/was.json @@ -13,9 +13,9 @@ "operator": "AND", "filters": [ { - "field": "entity", + "field": "entityId", "operator": "eq", - "value": "United States" + "value": 291 } ] } diff --git a/src/backend/services/awards.service.js b/src/backend/services/awards.service.js index c869cc5..27602ab 100644 --- a/src/backend/services/awards.service.js +++ b/src/backend/services/awards.service.js @@ -647,7 +647,7 @@ export async function getAwardEntityBreakdown(userId, awardId) { name: award.name, description: award.description, caption: award.caption, - target: award.rules?.target || 0, + target: rules.target || 0, }, entities: Array.from(entityMap.values()), total: entityMap.size, diff --git a/src/frontend/src/routes/awards/[id]/+page.svelte b/src/frontend/src/routes/awards/[id]/+page.svelte index 3b90293..e6ffb01 100644 --- a/src/frontend/src/routes/awards/[id]/+page.svelte +++ b/src/frontend/src/routes/awards/[id]/+page.svelte @@ -140,7 +140,7 @@
- {#if award && award.target && award.target > 0} + {#if entities.length > 0 && entities[0].points !== undefined} {@const earnedPoints = entities.reduce((sum, e) => sum + (e.confirmed ? e.points : 0), 0)} {@const targetPoints = award.target} {@const neededPoints = Math.max(0, targetPoints - earnedPoints)} @@ -165,21 +165,24 @@ {targetPoints}
{:else} + {@const workedCount = entities.filter((e) => e.worked).length} + {@const confirmedCount = entities.filter((e) => e.confirmed).length} + {@const neededCount = award.target ? Math.max(0, award.target - workedCount) : entities.filter((e) => !e.worked).length}
Total: {entities.length}
Confirmed: - {entities.filter((e) => e.confirmed).length} + {confirmedCount}
Worked: - {entities.filter((e) => e.worked).length} + {workedCount}
Needed: - {entities.filter((e) => !e.worked).length} + {neededCount}
{/if} diff --git a/src/frontend/static/award-definitions/was.json b/src/frontend/static/award-definitions/was.json index 7f01bda..06598c6 100644 --- a/src/frontend/static/award-definitions/was.json +++ b/src/frontend/static/award-definitions/was.json @@ -13,9 +13,9 @@ "operator": "AND", "filters": [ { - "field": "entity", + "field": "entityId", "operator": "eq", - "value": "United States" + "value": 291 } ] }