Skip to content

Commit 2f7e360

Browse files
author
Dexter
committed
fix: eliminate all 'whale' references per CLAUDE.md terminology rule — gm-whales→gm-top10, isWhale→isTop10, whaleTag→topLockedTag, stats.whales→stats.top10
1 parent cac73f1 commit 2f7e360

2 files changed

Lines changed: 20 additions & 20 deletions

File tree

fandom.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<meta name="twitter:description" content="Every Moment is real. Every collector is real. Every connection is on-chain." />
1616
<meta name="twitter:image" content="https://fandom-v3.vercel.app/og-default.png" />
1717
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='6' fill='%23ff2d4e'/%3E%3Ctext x='16' y='22' font-family='Arial Black' font-size='18' font-weight='900' text-anchor='middle' fill='white'%3ETS%3C/text%3E%3C/svg%3E" />
18-
<link rel="stylesheet" href="styles.css?v=20260627m9" />
18+
<link rel="stylesheet" href="styles.css?v=20260627m10" />
1919
<style>
2020
body { overflow-x: hidden; }
2121

@@ -176,7 +176,7 @@ <h2>Pick a player</h2>
176176
<div class="player-name" id="gm-player"></div>
177177
<div class="row"><span class="k">Moments</span><span class="v" id="gm-moments"></span></div>
178178
<div class="row"><span class="k">Collectors</span><span class="v" id="gm-collectors"></span></div>
179-
<div class="row"><span class="k">Top 10</span><span class="v" id="gm-whales"></span></div>
179+
<div class="row"><span class="k">Top 10</span><span class="v" id="gm-top10"></span></div>
180180
<div class="row"><span class="k">Editions</span><span class="v" id="gm-serials"></span></div>
181181
<div class="row"><span class="k">Locked Score</span><span class="v" id="gm-locked"></span></div>
182182
</div>
@@ -247,6 +247,6 @@ <h2>Pick a player</h2>
247247
<!-- Both classic+defer to guarantee document-order execution: data-layer.js runs first
248248
and assigns window.DataLayer; fandom.js runs second and reads it. -->
249249
<script defer src="data-layer.js?v=20260627m6"></script>
250-
<script defer src="fandom.js?v=20260627m9"></script>
250+
<script defer src="fandom.js?v=20260627m10"></script>
251251
</body>
252252
</html>

fandom.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -998,7 +998,7 @@
998998
const rank = o.globalRank;
999999
const total = p.owners.length;
10001000
o.tier = rank <= 10 ? 'gold' : rank <= 50 ? 'teal' : rank <= 200 ? 'silver' : 'grey';
1001-
o.isWhale = rank <= 10;
1001+
o.isTop10 = rank <= 10;
10021002
o.pctLabel = topPercentLabel(rank, total);
10031003
// Size is driven by market value held (cube root for visual-area-linear scaling)
10041004
const valueRatio = Math.cbrt((o.valueHeld || 0) / maxValueHeld);
@@ -1313,7 +1313,7 @@
13131313
if (n.type === 'collector') {
13141314
const rankBadge = n.globalRank <= 10 ? `<span style="color:#f5b840; font-weight:800;">#${n.globalRank}</span>` : `<span style="color:#9aa;">#${n.globalRank}</span>`;
13151315
const badges = [];
1316-
if (n.isWhale) badges.push('<b style="color:#f5b840;">TOP 10 LOCKED</b>');
1316+
if (n.isTop10) badges.push('<b style="color:#f5b840;">TOP 10 LOCKED</b>');
13171317
if (n.crossPlayerFan) badges.push(`<b style="color:#ff9a4a;">MULTI-PLAYER (${n.crossPlayerCount})</b>`);
13181318
return `<div style="background:rgba(0,0,0,0.92); padding:12px 16px; border-radius:8px; color:#fff; border:1px solid ${esc(n.color)}; font-size:12px; min-width:220px;">${rankBadge} <span style="font-weight:700; font-size:14px;">${esc(n.name)}</span>${badges.length ? '<br/>' + badges.join(' · ') : ''}<br/><span style="color:#9aa; font-size:11px;">${fmtLockedScore(n.lockedScore)} locked score · ${n.fullHoldings.toLocaleString()} moments owned · ${esc(n.pctLabel)}</span></div>`;
13191319
}
@@ -1566,7 +1566,7 @@
15661566
// avatars + names, even silver tier gets a small avatar + name (not just a grey dot).
15671567
const size = Math.sqrt(n.val) * 2.0;
15681568

1569-
if (n.isWhale) {
1569+
if (n.isTop10) {
15701570
// Inner circle collectors: avatar-first — the real profile image IS the node
15711571
const avatarSize = size * 3.8;
15721572
const placeholder = new THREE.Mesh(
@@ -1663,7 +1663,7 @@
16631663
if (l.kind === 'collector-to-player') return l.strokeColor || 'rgba(245,184,64,0.55)';
16641664
if (l.kind === 'player-moment') return 'rgba(255,217,107,0.55)';
16651665
const srcNode = typeof l.source === 'object' ? l.source : null;
1666-
if (srcNode?.isWhale) return 'rgba(245,184,64,0.62)';
1666+
if (srcNode?.isTop10) return 'rgba(245,184,64,0.62)';
16671667
if (srcNode?.tier === 'teal') return 'rgba(20,216,196,0.35)';
16681668
if (srcNode?.crossPlayerFan) return 'rgba(255,154,74,0.32)';
16691669
return 'rgba(240,242,253,0.05)';
@@ -1673,15 +1673,15 @@
16731673
if (l.kind === 'collector-to-player') return 1.8;
16741674
if (l.kind === 'player-moment') return 1.8;
16751675
const srcNode = typeof l.source === 'object' ? l.source : null;
1676-
if (srcNode?.isWhale) return 1.4;
1676+
if (srcNode?.isTop10) return 1.4;
16771677
if (srcNode?.tier === 'teal') return 0.8;
16781678
return 0.35;
16791679
})
16801680
.linkDirectionalParticles(l => {
16811681
if (l.kind === 'collector-to-player') return 3;
16821682
if (l.kind === 'player-moment') return 3;
16831683
const srcNode = typeof l.source === 'object' ? l.source : null;
1684-
if (srcNode?.isWhale) return 2;
1684+
if (srcNode?.isTop10) return 2;
16851685
return 0;
16861686
})
16871687
.linkDirectionalParticleSpeed(0.008)
@@ -1808,7 +1808,7 @@
18081808
Graph.d3Force('link').distance(l => {
18091809
if (l.kind === 'player-moment') return 120;
18101810
const src = typeof l.source === 'object' ? l.source : null;
1811-
if (src?.isWhale) return 40;
1811+
if (src?.isTop10) return 40;
18121812
if (src?.tier === 'teal') return 100;
18131813
return 200;
18141814
});
@@ -1951,7 +1951,7 @@
19511951
};
19521952
animateCount(document.getElementById('gm-moments'), totalMoments, 1500);
19531953
animateCount(document.getElementById('gm-collectors'), currentData.stats.collectors || 0, 1300);
1954-
animateCount(document.getElementById('gm-whales'), currentData.stats.whales || 0, 1100);
1954+
animateCount(document.getElementById('gm-top10'), currentData.stats.top10 || 0, 1100);
19551955
animateCount(document.getElementById('gm-serials'), currentData.stats.editions || 0, 900);
19561956
// Locked score total (sum of all locked ASP for this player) — shown as currency.
19571957
const lockedTotal = currentData.stats.lockedTotalScore || 0;
@@ -2504,7 +2504,7 @@
25042504
row.style.cursor = 'pointer';
25052505
const addrSp = mkEl('span', { className: 'addr' });
25062506
addrSp.textContent = `#${h.node.globalRank} · ${h.node.name}`;
2507-
if (h.node.isWhale) addrSp.appendChild(mkEl('span', { className: 'tier-b', text: 'Inner', style: 'margin-left:6px; background:rgba(245,184,64,0.14); border-color:rgba(245,184,64,0.3); color:#f5b840;' }));
2507+
if (h.node.isTop10) addrSp.appendChild(mkEl('span', { className: 'tier-b', text: 'Inner', style: 'margin-left:6px; background:rgba(245,184,64,0.14); border-color:rgba(245,184,64,0.3); color:#f5b840;' }));
25082508
if (h.node.crossPlayerFan) addrSp.appendChild(mkEl('span', { className: 'tier-b', text: `${h.node.crossPlayerCount}-player`, style: 'margin-left:6px; background:rgba(255,154,74,0.14); border-color:rgba(255,154,74,0.3); color:#ff9a4a;' }));
25092509
row.appendChild(addrSp);
25102510
row.appendChild(mkEl('span', { className: 'count', text: `${h.count} serial${h.count === 1 ? '' : 's'}` }));
@@ -2974,7 +2974,7 @@
29742974
window.history.replaceState(null, '', window.location.pathname);
29752975
}
29762976
// Also reset graph-meta fields explicitly so any later read sees blanks not stale
2977-
['gm-player', 'gm-moments', 'gm-collectors', 'gm-whales', 'gm-serials'].forEach(id => {
2977+
['gm-player', 'gm-moments', 'gm-collectors', 'gm-top10', 'gm-serials'].forEach(id => {
29782978
const el = document.getElementById(id); if (el) el.textContent = '—';
29792979
});
29802980
window.scrollTo({ top: 0, behavior: 'smooth' });
@@ -3081,7 +3081,7 @@
30813081
fullHoldings: h.owner.holdings,
30823082
holdings: h.cnt,
30833083
momentsOwned: [],
3084-
isWhale: true,
3084+
isTop10: true,
30853085
tier: 'gold',
30863086
crossPlayerFan: crossCnt > 1,
30873087
crossPlayerCount: crossCnt,
@@ -3114,7 +3114,7 @@
31143114
fullHoldings: h.owner.holdings,
31153115
holdings: h.cnt,
31163116
momentsOwned: [],
3117-
isWhale: false,
3117+
isTop10: false,
31183118
tier: 'teal',
31193119
crossPlayerFan: crossCnt > 1,
31203120
crossPlayerCount: crossCnt,
@@ -3148,7 +3148,7 @@
31483148
fullHoldings: h.owner.holdings,
31493149
holdings: h.cnt,
31503150
momentsOwned: [],
3151-
isWhale: false,
3151+
isTop10: false,
31523152
tier: 'silver',
31533153
crossPlayerFan: crossCnt > 1,
31543154
crossPlayerCount: crossCnt,
@@ -3224,7 +3224,7 @@
32243224
document.getElementById('gm-moments').textContent = tierLabel(eg.edition.tier);
32253225
document.getElementById('gm-collectors').textContent = eg.stats.uniqueHolders.toString();
32263226
const topLabel = eg.stats.topHolder ? (eg.stats.topHolder.owner.username || shortAddr(eg.stats.topHolder.addr)) : '—';
3227-
document.getElementById('gm-whales').textContent = topLabel;
3227+
document.getElementById('gm-top10').textContent = topLabel;
32283228
document.getElementById('gm-serials').textContent = eg.stats.circulation.toLocaleString();
32293229

32303230
// Subtitle surfaces total unique holders + how many are visible in the ring
@@ -3438,7 +3438,7 @@
34383438
document.getElementById('gm-player').textContent = uname;
34393439
document.getElementById('gm-moments').textContent = cg.totalHoldings.toLocaleString() + ' serials';
34403440
document.getElementById('gm-collectors').textContent = cg.perPlayer.length + ' players';
3441-
document.getElementById('gm-whales').textContent = pct.rank ? ('Top ' + pct.pctTile + '%') : '—';
3441+
document.getElementById('gm-top10').textContent = pct.rank ? ('Top ' + pct.pctTile + '%') : '—';
34423442
document.getElementById('gm-serials').textContent = (cg.topMoments || []).length + ' shown · ' + (cg.truncatedMoments || 0) + ' more';
34433443
document.getElementById('graph-hint').textContent = 'Click a player to enter their universe · Esc returns';
34443444

@@ -3617,9 +3617,9 @@
36173617
const p = data.players.find(x => x.name === payload.player);
36183618
if (p) {
36193619
const topOwner = currentData && currentData.ownerArr && currentData.ownerArr[0];
3620-
const whaleTag = topOwner ? ` · TOP LOCKED ${String(topOwner.name).toUpperCase()} · ${fmtLockedScore(topOwner.lockedScore)}` : '';
3620+
const topLockedTag = topOwner ? ` · TOP LOCKED ${String(topOwner.name).toUpperCase()} · ${fmtLockedScore(topOwner.lockedScore)}` : '';
36213621
const totalMarketValue = p.editions.reduce((a, e) => a + editionMarketValue(e), 0);
3622-
typeLevelSubtitle(`${String(p.name).toUpperCase()} · ${(p.totalMintedMomentCount || 0).toLocaleString()} MOMENTS · ${(p.lockedLeaderboardCount || p.owners.length).toLocaleString()} LOCKED COLLECTORS · ${p.editions.length} EDITIONS${whaleTag}`);
3622+
typeLevelSubtitle(`${String(p.name).toUpperCase()} · ${(p.totalMintedMomentCount || 0).toLocaleString()} MOMENTS · ${(p.lockedLeaderboardCount || p.owners.length).toLocaleString()} LOCKED COLLECTORS · ${p.editions.length} EDITIONS${topLockedTag}`);
36233623
} else {
36243624
typeLevelSubtitle('');
36253625
}

0 commit comments

Comments
 (0)