adding player profiles
Build Images and Deploy / Update-PROD-Stack (push) Successful in 28s

This commit is contained in:
2026-02-28 00:51:43 -05:00
parent 30f0c98102
commit 79ee7064a8
11 changed files with 256 additions and 31 deletions
+87
View File
@@ -0,0 +1,87 @@
<%- include('../partials/header') %>
<div class="container">
<div style="text-align: center; margin-bottom: 1.5rem;">
<h1 style="margin-bottom: 0.25rem;">&#x1F464; <%= profile.username %></h1>
<p style="color: var(--muted); margin: 0;">Joined <%= new Date(profile.created_at).toLocaleDateString() %></p>
</div>
<div class="stats-row">
<div class="stat-box">
<div class="value"><%= profile.totalPoints %></div>
<div class="label">Total Points</div>
</div>
<div class="stat-box">
<div class="value"><%= profile.scanCount %></div>
<div class="label">Finds</div>
</div>
<div class="stat-box">
<div class="value"><%= rank ? '#' + rank : '---' %></div>
<div class="label">Rank<% if (totalPlayers) { %> / <%= totalPlayers %><% } %></div>
</div>
</div>
<% if (huntBreakdown.length > 0) { %>
<div class="card">
<div class="card-header">Hunts Participated</div>
<div class="table-wrapper">
<table>
<thead>
<tr>
<th>Hunt</th>
<th>Finds</th>
<th>Points</th>
</tr>
</thead>
<tbody>
<% huntBreakdown.forEach(h => { %>
<tr>
<td><a href="/hunt/<%= h.hunt_short_name %>"><%= h.hunt_name %></a></td>
<td><%= h.scans %></td>
<td><span class="points-badge">+<%= h.points %></span></td>
</tr>
<% }) %>
</tbody>
</table>
</div>
</div>
<% } %>
<% if (recentScans.length > 0) { %>
<div class="card">
<div class="card-header">Recent Activity</div>
<div class="table-wrapper">
<table>
<thead>
<tr>
<th>Package</th>
<th>Hunt</th>
<th>Points</th>
<th>When</th>
</tr>
</thead>
<tbody>
<% recentScans.forEach(scan => { %>
<tr>
<td><a href="/hunt/<%= scan.hunt_short_name %>/<%= scan.card_number %>"><%= scan.card_number %> of <%= scan.package_count %></a></td>
<td><a href="/hunt/<%= scan.hunt_short_name %>"><%= scan.hunt_name %></a></td>
<td><% if (scan.points_awarded > 0) { %><span class="points-badge">+<%= scan.points_awarded %></span><% } else { %><span style="color: var(--muted);">0</span><% } %></td>
<td style="font-size: 0.85rem; color: var(--muted);"><%= new Date(scan.scanned_at).toLocaleString() %></td>
</tr>
<% }) %>
</tbody>
</table>
</div>
</div>
<% } else { %>
<div class="card" style="text-align: center; color: var(--muted); padding: 2rem;">
No scans yet. Get out there and find some loot!
</div>
<% } %>
<div style="text-align: center; margin-top: 1rem;">
<a href="/leaderboard" class="btn btn-outline">Global Leaderboard</a>
</div>
</div>
<%- include('../partials/footer') %>