backend overhaul

This commit is contained in:
SowinskiBraeden committed 2026-06-22 14:17:10 -07:00
1 parent 5349130972
commit 1dc4f0ec36
18 files changed
+1824 -1747

No files matched your search

+11 -11
View File
@@ -45,7 +45,7 @@
<!-- Admin workspace -->
<div class="admin-workspace">
<form class="panel append" method="post" action="{{ url_for('admin_dashboard') }}">
<form class="panel append" method="post" action="{{ url_for('admin.dashboard') }}">
<div class="panel__head">
<h2 class="panel__title">Append ledger event</h2>
<span class="panel__tag">fast entry</span>
@@ -104,7 +104,7 @@
<span>{{ item.player_name }}</span>
<strong>{{ item.amount_cents | money }}</strong>
{% if live_session and item.player_name in live_session_player_names %}
<form method="post" action="{{ url_for('admin_apply_payout_carry_in') }}">
<form method="post" action="{{ url_for('admin.apply_payout_carry_in') }}">
<input type="hidden" name="session_id" value="{{ live_session.session_id }}">
<input type="hidden" name="player_name" value="{{ item.player_name }}">
<button class="table-action-button" type="submit">Apply</button>
@@ -146,7 +146,7 @@
<div><div class="micro">Seated</div><div class="mono16">{{ live_session.entries|length }}</div></div>
<div><div class="micro">Open</div><div class="mono16 mono16--warn">{{ live_unresolved_count }}</div></div>
</div>
<form method="post" action="{{ url_for('admin_session_state') }}"
<form method="post" action="{{ url_for('admin.session_state') }}"
{% if live_unresolved_count > 0 %}data-close-warning="true"{% endif %}>
<input type="hidden" name="session_id" value="{{ live_session.session_id }}">
<button class="btn-close" type="submit" name="state" value="closed">Close session</button>
@@ -167,12 +167,12 @@
</div>
{% endif %}
<form method="post" action="{{ url_for('admin_open_session') }}">
<form method="post" action="{{ url_for('admin.open_session') }}">
<input type="hidden" name="session_date" value="{{ admin_today }}">
<button class="btn-newsession {{ 'btn-newsession--primary' if not live_session else '' }}" type="submit">+ Open new session</button>
</form>
<form method="post" action="{{ url_for('admin_prune_empty_sessions') }}" class="prune-session-form">
<form method="post" action="{{ url_for('admin.prune_empty_sessions') }}" class="prune-session-form">
<button class="secondary-button" type="submit" {% if empty_session_count == 0 %}disabled{% endif %}>
Prune empty sessions{% if empty_session_count > 0 %} ({{ empty_session_count }}){% endif %}
</button>
@@ -182,9 +182,9 @@
<div class="panel panel--pad import-export-panel">
<h2 class="panel__title" style="margin:0 0 4px">Import / export</h2>
<p class="csv__desc">Back up or migrate the raw event ledger.</p>
<form method="post" action="{{ url_for('admin_import_csv') }}" enctype="multipart/form-data" class="import-form">
<form method="post" action="{{ url_for('admin.import_csv') }}" enctype="multipart/form-data" class="import-form">
<div class="csv__btns">
<a class="csv-btn-ghost" href="{{ url_for('admin_export_csv') }}">&darr; Export CSV</a>
<a class="csv-btn-ghost" href="{{ url_for('admin.export_csv') }}">&darr; Export CSV</a>
<label class="csv-btn-ghost" for="csvTopImport">&uarr; Import CSV</label>
</div>
<input id="csvTopImport" type="file" accept=".csv,text/csv" name="csv_file" hidden onchange="this.form.submit()">
@@ -223,7 +223,7 @@
</div>
<div class="debt-action-grid">
<form class="form-card debt-form" method="post" action="{{ url_for('admin_collect_front') }}">
<form class="form-card debt-form" method="post" action="{{ url_for('admin.collect_front') }}">
<h3>Collect debt</h3>
<label>
<span>Outstanding debt</span>
@@ -248,7 +248,7 @@
<button class="primary-button" type="submit">Mark collected</button>
</form>
<form class="form-card debt-form" method="post" action="{{ url_for('admin_write_off_front') }}">
<form class="form-card debt-form" method="post" action="{{ url_for('admin.write_off_front') }}">
<h3>Write off debt</h3>
<label>
<span>Outstanding debt</span>
@@ -308,7 +308,7 @@
<tbody>
{% for s in recent_sessions %}
<tr>
<td><a href="{{ url_for('session_detail', session_id=s.session_id) }}">{{ session_label(s) }}</a></td>
<td><a href="{{ url_for('public.session_detail', session_id=s.session_id) }}">{{ session_label(s) }}</a></td>
<td style="font-family:var(--font-mono);color:var(--num)">{{ s.entries|length }}</td>
<td style="font-family:var(--font-mono);color:var(--num)">{{ s.total_banker_cash_in_cents | money }}</td>
<td style="font-family:var(--font-mono);color:var(--pos)">{{ s.total_banker_cash_out_cents | money }}</td>
@@ -317,7 +317,7 @@
<td class="{% if s.total_net_book_position_cents > 0 %}positive{% elif s.total_net_book_position_cents < 0 %}negative{% endif %}" style="font-family:var(--font-mono)">{{ s.total_net_book_position_cents | money }}</td>
<td><span class="status-badge status-{{ s.status }}">{{ s.status }}</span></td>
<td>
<form method="post" action="{{ url_for('admin_session_state') }}" class="inline-action-form">
<form method="post" action="{{ url_for('admin.session_state') }}" class="inline-action-form">
<input type="hidden" name="session_id" value="{{ s.session_id }}">
{% if s.status == "open" %}
<button class="table-action-button" type="submit" name="state" value="closed">Close</button>
+6 -6
View File
@@ -11,23 +11,23 @@
<body>
<header class="topbar">
<div class="topbar__inner">
<a class="brand" href="{{ url_for('leaderboard') }}">
<a class="brand" href="{{ url_for('public.leaderboard') }}">
<span class="brand__mark"></span>
<span class="brand__name">myboker.org</span>
</a>
<nav class="mainnav">
<a class="navlink {{ 'is-active' if request.endpoint == 'leaderboard' }}" href="{{ url_for('leaderboard') }}">Leaderboard</a>
<a class="navlink {{ 'is-active' if request.endpoint in ('sessions', 'session_detail') }}" href="{{ url_for('sessions') }}">Sessions</a>
<a class="navlink {{ 'is-active' if request.endpoint == 'public.leaderboard' }}" href="{{ url_for('public.leaderboard') }}">Leaderboard</a>
<a class="navlink {{ 'is-active' if request.endpoint in ('public.sessions', 'public.session_detail') }}" href="{{ url_for('public.sessions') }}">Sessions</a>
{% if is_admin %}
<a class="navlink {{ 'is-active' if request.endpoint == 'admin_dashboard' }}" href="{{ url_for('admin_dashboard') }}">Admin</a>
<a class="navlink {{ 'is-active' if request.endpoint == 'admin.dashboard' }}" href="{{ url_for('admin.dashboard') }}">Admin</a>
{% else %}
<a class="navlink {{ 'is-active' if request.endpoint == 'admin_login' }}" href="{{ url_for('admin_login') }}">Admin</a>
<a class="navlink {{ 'is-active' if request.endpoint == 'admin.login' }}" href="{{ url_for('admin.login') }}">Admin</a>
{% endif %}
</nav>
<span class="topbar__spacer"></span>
{% if is_admin %}
<div class="topbar__admin-actions">
<form method="post" action="{{ url_for('admin_logout') }}" style="margin:0">
<form method="post" action="{{ url_for('admin.logout') }}" style="margin:0">
<button class="btn btn--ghost btn--sm" type="submit">Logout</button>
</form>
</div>
+4 -4
View File
@@ -72,7 +72,7 @@
{% endfor %}
</select>
{% if selected_session_id %}
<a class="btn btn--ghost btn--sm" href="{{ url_for('leaderboard', mode=mode) }}">Reset</a>
<a class="btn btn--ghost btn--sm" href="{{ url_for('public.leaderboard', mode=mode) }}">Reset</a>
{% endif %}
</form>
</div>
@@ -101,12 +101,12 @@
{% for player in main_board %}
{% set idx = loop.index %}
<tr data-player-row="true" data-original-rank="{{ idx }}"
onclick="window.location='{{ url_for('player_detail', player_name=player.player_name) }}'">
onclick="window.location='{{ url_for('public.player_detail', player_name=player.player_name) }}'">
<td class="col-rank" data-sort-value="{{ idx }}">
<span class="rank-num {{ 'rank-1' if idx==1 else 'rank-2' if idx==2 else 'rank-3' if idx==3 else '' }}" data-rank-cell>#{{ idx }}</span>
</td>
<td class="col-player" data-sort-value="{{ player.player_name|lower }}">
<a href="{{ url_for('player_detail', player_name=player.player_name) }}">{{ player.player_name }}</a>
<a href="{{ url_for('public.player_detail', player_name=player.player_name) }}">{{ player.player_name }}</a>
</td>
<td class="col-rank-delta" data-sort-value="{{ player.rank_change }}">
{% if player.rank_change > 0 %}
@@ -146,7 +146,7 @@
</div>
<div class="provisional-grid">
{% for player in provisional_board %}
<a class="provisional-card" href="{{ url_for('player_detail', player_name=player.player_name) }}"
<a class="provisional-card" href="{{ url_for('public.player_detail', player_name=player.player_name) }}"
style="display:block;text-decoration:none;">
<p class="provisional-card__name">{{ player.player_name }}</p>
<div class="provisional-card__meta">
+5 -5
View File
@@ -4,15 +4,15 @@
{% block content %}
<div class="breadcrumb">
<a href="{{ url_for('sessions') }}">Sessions</a>
<a href="{{ url_for('public.sessions') }}">Sessions</a>
<span class="breadcrumb__sep">/</span>
<span>{{ session_label(session) }}</span>
<span style="flex:1"></span>
{% if prev_session %}
<a class="btn btn--ghost btn--sm" href="{{ url_for('session_detail', session_id=prev_session.session_id) }}">← Prev</a>
<a class="btn btn--ghost btn--sm" href="{{ url_for('public.session_detail', session_id=prev_session.session_id) }}">← Prev</a>
{% endif %}
{% if next_session %}
<a class="btn btn--ghost btn--sm" href="{{ url_for('session_detail', session_id=next_session.session_id) }}">Next →</a>
<a class="btn btn--ghost btn--sm" href="{{ url_for('public.session_detail', session_id=next_session.session_id) }}">Next →</a>
{% endif %}
</div>
@@ -111,9 +111,9 @@
</thead>
<tbody>
{% for entry in session.entries %}
<tr onclick="window.location='{{ url_for('player_detail', player_name=entry.player_name) }}'">
<tr onclick="window.location='{{ url_for('public.player_detail', player_name=entry.player_name) }}'">
<td class="col-player">
<a href="{{ url_for('player_detail', player_name=entry.player_name) }}">{{ entry.player_name }}</a>
<a href="{{ url_for('public.player_detail', player_name=entry.player_name) }}">{{ entry.player_name }}</a>
</td>
<td>{{ entry.invested_cents | money }}</td>
<td>{{ entry.cash_out_cents | money }}</td>
+2 -2
View File
@@ -29,9 +29,9 @@
</thead>
<tbody>
{% for s in sessions %}
<tr onclick="window.location='{{ url_for('session_detail', session_id=s.session_id) }}'">
<tr onclick="window.location='{{ url_for('public.session_detail', session_id=s.session_id) }}'">
<td class="col-left">
<a href="{{ url_for('session_detail', session_id=s.session_id) }}">{{ session_label(s) }}</a>
<a href="{{ url_for('public.session_detail', session_id=s.session_id) }}">{{ session_label(s) }}</a>
</td>
<td><span class="badge badge--{{ s.status }}">{{ s.status }}</span></td>
<td>{{ s.entries|length }}</td>