backend overhaul
This commit is contained in:
18 files changed
+1824
-1747
No files matched your search
@@ -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') }}">↓ Export CSV</a>
|
||||
<a class="csv-btn-ghost" href="{{ url_for('admin.export_csv') }}">↓ Export CSV</a>
|
||||
<label class="csv-btn-ghost" for="csvTopImport">↑ 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
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in new issue
Block a user