Add player stats, in-table ranking, host seating and review return
- Stats page (/stats): play style radar (TAG/LAG/rock/fish), VPIP, PFR, ATS, 3bet, WTSD, W$SD, WWSF, per-street fold rate, aggression frequency, hand win rate and net in BB, per table type, each with a bands-and-explanation sheet. Hands are counted per human player when they finish and stored as totals under data/stats/, keyed by a hash of the player ID (sent in a POST body, never in the URL). - Ranking sheet at the table: everyone seated, ordered by stack or by net (stack minus buy-ins), updating live. - The host can reorder seats by dragging (with a mini table preview and shuffle). Takes effect immediately between hands, otherwise at the start of the next hand; the dealer button stays with the same player. - The full-session review opens in the same tab and its back button returns to the table it was opened from. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
49203f202c
commit
dd39c043c4
18 files changed
+2699
-18
No files matched your search
+56
-1
@@ -27,11 +27,18 @@
|
||||
<svg class="i i-fill icon-pause" viewBox="0 0 24 24" aria-hidden="true"><rect x="6.5" y="5" width="4" height="14" rx="1.3"/><rect x="13.5" y="5" width="4" height="14" rx="1.3"/></svg>
|
||||
<svg class="i i-fill icon-play" viewBox="0 0 24 24" aria-hidden="true"><path d="M8 5.6v12.8a1 1 0 0 0 1.5.86l10.2-6.4a1 1 0 0 0 0-1.72L9.5 4.74A1 1 0 0 0 8 5.6z"/></svg>
|
||||
</button>
|
||||
<button class="glass-btn" id="seating-open" aria-label="席順を変更" title="席順を変更">
|
||||
<svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="M7.5 20V5M4 8.5L7.5 5 11 8.5M16.5 4v15M13 15.5l3.5 3.5 3.5-3.5"/></svg>
|
||||
<span class="glass-dot" id="seating-dot" hidden></span>
|
||||
</button>
|
||||
</span>
|
||||
<!-- レビュー付きCPU戦のみ -->
|
||||
<button class="glass-btn" id="review-open" aria-label="直前のハンドのレビュー" title="直前のハンドのレビュー" hidden>
|
||||
<svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="M14 3H7.5A2.5 2.5 0 0 0 5 5.5v13A2.5 2.5 0 0 0 7.5 21h9a2.5 2.5 0 0 0 2.5-2.5V8z"/><path d="M14 3v5h5M9 13h6M9 17h4"/></svg>
|
||||
</button>
|
||||
<button class="glass-btn" id="ranking-open" aria-label="ランキング" title="ランキング">
|
||||
<svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="M8 4h8v5a4 4 0 0 1-8 0z"/><path d="M8 5.5H5.5v1A3 3 0 0 0 8 9.5M16 5.5h2.5v1A3 3 0 0 1 16 9.5M12 13v3.5M8.5 20h7M9.5 20l.5-3.5h4l.5 3.5"/></svg>
|
||||
</button>
|
||||
<button class="glass-btn" id="share" aria-label="サイトのリンクをコピー" title="サイトのリンクをコピー">
|
||||
<svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="M10 14a4.5 4.5 0 0 0 6.4 0l3-3a4.5 4.5 0 0 0-6.4-6.4l-1.2 1.2"/><path d="M14 10a4.5 4.5 0 0 0-6.4 0l-3 3a4.5 4.5 0 0 0 6.4 6.4l1.2-1.2"/></svg>
|
||||
</button>
|
||||
@@ -150,6 +157,54 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 席順の変更(ホストのみ)。自分から時計回りの並びを、行をつかんで並べ替える -->
|
||||
<div class="sheet-backdrop" id="seating-modal" hidden>
|
||||
<div class="sheet seating-sheet" role="dialog" aria-modal="true" aria-labelledby="seating-title" tabindex="-1">
|
||||
<div class="sheet-header" data-sheet-drag>
|
||||
<span class="sheet-grabber" aria-hidden="true"></span>
|
||||
<h2 class="sheet-title" id="seating-title">席順を変更</h2>
|
||||
</div>
|
||||
<div class="sheet-scroll">
|
||||
<div class="seating-preview" id="seating-preview" aria-hidden="true"><div class="seating-felt"></div></div>
|
||||
<div class="seating-tools">
|
||||
<p class="hint" id="seating-note">右端のつまみをつかんで並べ替えます。上から時計回り(あなたの左隣から)に座ります。</p>
|
||||
<button type="button" class="btn btn-sm" id="seating-shuffle">
|
||||
<svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h3.5c4.5 0 4.5 10 9 10H20M4 17h3.5c1.6 0 2.6-1.2 3.4-2.8M13.1 9.8C13.9 8.2 14.9 7 16.5 7H20M17.5 4.5 20 7l-2.5 2.5M17.5 14.5 20 17l-2.5 2.5"/></svg>シャッフル
|
||||
</button>
|
||||
</div>
|
||||
<ol class="list seating-list" id="seating-list"></ol>
|
||||
<p class="hint seating-pending" id="seating-pending" hidden></p>
|
||||
</div>
|
||||
<div class="sheet-footer">
|
||||
<div class="btn-row">
|
||||
<button type="button" class="btn btn-lg" id="seating-cancel">キャンセル</button>
|
||||
<button type="button" class="btn btn-tint btn-lg" id="seating-save">この順に座る</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- テーブル内のランキング(スタック順・収支順を切り替える) -->
|
||||
<div class="sheet-backdrop" id="ranking-modal" hidden>
|
||||
<div class="sheet ranking-sheet" role="dialog" aria-modal="true" aria-labelledby="ranking-title" tabindex="-1">
|
||||
<div class="sheet-header" data-sheet-drag>
|
||||
<span class="sheet-grabber" aria-hidden="true"></span>
|
||||
<h2 class="sheet-title" id="ranking-title">ランキング</h2>
|
||||
</div>
|
||||
<div class="sheet-scroll">
|
||||
<div class="segmented" id="ranking-tabs" aria-label="並べ替え">
|
||||
<button type="button" class="seg-btn active" data-rank="stack" aria-pressed="true">スタック</button>
|
||||
<button type="button" class="seg-btn" data-rank="net" aria-pressed="false">収支</button>
|
||||
</div>
|
||||
<ol class="list ranking-list mt-12" id="ranking-list"></ol>
|
||||
<p class="hint ranking-note" id="ranking-note"></p>
|
||||
</div>
|
||||
<div class="sheet-footer">
|
||||
<button type="button" class="btn btn-lg btn-block" id="ranking-close">閉じる</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 直前のハンドのレビュー(下から出るシート。つまみを下へ払うと閉じる) -->
|
||||
<div class="sheet-backdrop" id="review-modal" hidden>
|
||||
<div class="sheet review-sheet" role="dialog" aria-modal="true" aria-labelledby="review-title" tabindex="-1">
|
||||
@@ -163,7 +218,7 @@
|
||||
<svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="M10 3.5l1.6 4.4L16 9.5l-4.4 1.6L10 15.5l-1.6-4.4L4 9.5l4.4-1.6z"/><path d="M18 14l.8 2.2L21 17l-2.2.8L18 20l-.8-2.2L15 17l2.2-.8z"/></svg>AIに質問する用にコピー
|
||||
</button>
|
||||
<div class="list mt-12">
|
||||
<a class="cell cell-link" id="review-link" href="/review" target="_blank" rel="noopener">
|
||||
<a class="cell cell-link" id="review-link" href="/review">
|
||||
<span class="cell-title">対局全体のレビュー<span class="cell-sub">点数表・成績・リプレイ</span></span>
|
||||
<svg class="i chevron" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 5l7 7-7 7"/></svg>
|
||||
</a>
|
||||
|
||||
Reference in new issue
Block a user