fix: correct target and needed calculation in award detail view
Fixes incorrect calculation of target and needed values in award detail page: - Changed award.target to award.rules?.target (correct path in JSON structure) - Added missing Target display card for non-points awards (DXCC, DLD, etc.) - Added null checks to prevent broken calculations for awards without targets Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -550,8 +550,8 @@
|
||||
<div class="summary">
|
||||
{#if entities.length > 0 && entities[0].points !== undefined}
|
||||
{@const earnedPoints = filteredEntities.reduce((sum, e) => sum + (e.confirmed ? e.points : 0), 0)}
|
||||
{@const targetPoints = award.target}
|
||||
{@const neededPoints = Math.max(0, targetPoints - earnedPoints)}
|
||||
{@const targetPoints = award.rules?.target}
|
||||
{@const neededPoints = targetPoints !== undefined ? Math.max(0, targetPoints - earnedPoints) : null}
|
||||
<div class="summary-card">
|
||||
<span class="summary-label">Total Combinations:</span>
|
||||
<span class="summary-value">{filteredEntities.length}</span>
|
||||
@@ -564,16 +564,19 @@
|
||||
<span class="summary-label">Points:</span>
|
||||
<span class="summary-value">{earnedPoints}</span>
|
||||
</div>
|
||||
<div class="summary-card unworked">
|
||||
<span class="summary-label">Needed:</span>
|
||||
<span class="summary-value">{neededPoints}</span>
|
||||
</div>
|
||||
<div class="summary-card" style="background-color: #e3f2fd; border-color: #2196f3;">
|
||||
<span class="summary-label">Target:</span>
|
||||
<span class="summary-value">{targetPoints}</span>
|
||||
</div>
|
||||
{#if neededPoints !== null}
|
||||
<div class="summary-card unworked">
|
||||
<span class="summary-label">Needed:</span>
|
||||
<span class="summary-value">{neededPoints}</span>
|
||||
</div>
|
||||
<div class="summary-card" style="background-color: #e3f2fd; border-color: #2196f3;">
|
||||
<span class="summary-label">Target:</span>
|
||||
<span class="summary-value">{targetPoints}</span>
|
||||
</div>
|
||||
{/if}
|
||||
{:else}
|
||||
{@const neededCount = award.target ? Math.max(0, award.target - uniqueEntityProgress.worked) : uniqueEntityProgress.total - uniqueEntityProgress.worked}
|
||||
{@const targetCount = award.rules?.target}
|
||||
{@const neededCount = targetCount !== undefined ? Math.max(0, targetCount - uniqueEntityProgress.worked) : null}
|
||||
<div class="summary-card">
|
||||
<span class="summary-label">Total:</span>
|
||||
<span class="summary-value">{uniqueEntityProgress.total}</span>
|
||||
@@ -586,10 +589,16 @@
|
||||
<span class="summary-label">Worked:</span>
|
||||
<span class="summary-value">{uniqueEntityProgress.worked}</span>
|
||||
</div>
|
||||
<div class="summary-card unworked">
|
||||
<span class="summary-label">Needed:</span>
|
||||
<span class="summary-value">{neededCount}</span>
|
||||
</div>
|
||||
{#if neededCount !== null}
|
||||
<div class="summary-card unworked">
|
||||
<span class="summary-label">Needed:</span>
|
||||
<span class="summary-value">{neededCount}</span>
|
||||
</div>
|
||||
<div class="summary-card" style="background-color: #e3f2fd; border-color: #2196f3;">
|
||||
<span class="summary-label">Target:</span>
|
||||
<span class="summary-value">{targetCount}</span>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user