134 lines
6.6 KiB
HTML
134 lines
6.6 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Leagues · myboker.org{% endblock %}
|
|
{% block content %}
|
|
|
|
<div class="page-header">
|
|
<div>
|
|
<h1 class="page-header__title">Your leagues</h1>
|
|
{% if leagues %}
|
|
<p class="page-header__sub">
|
|
{{ page_summary.league_count }} league{{ 's' if page_summary.league_count != 1 else '' }}
|
|
{% if page_summary.live_count > 0 %} · <span style="color:var(--pos);">{{ page_summary.live_count }} live</span>{% endif %}
|
|
· {{ page_summary.sessions_count }} session{{ 's' if page_summary.sessions_count != 1 else '' }}
|
|
</p>
|
|
{% endif %}
|
|
</div>
|
|
<div class="page-header__actions">
|
|
<a class="btn btn--primary btn--sm" href="{{ url_for('leagues.new') }}">New league</a>
|
|
</div>
|
|
</div>
|
|
|
|
{% if leagues %}
|
|
|
|
<div class="li-board">
|
|
{% for item in leagues %}
|
|
{% set league = item.league %}
|
|
{% set membership = item.membership %}
|
|
<article class="li-card{% if item.live_session %} li-card--live{% endif %}">
|
|
|
|
<div class="li-card__aside">
|
|
<span class="li-card__initial">{{ league.name[0]|upper }}</span>
|
|
</div>
|
|
|
|
<div class="li-card__body">
|
|
<div class="li-card__head">
|
|
<div class="li-card__info">
|
|
<div class="li-card__name-row">
|
|
<a class="li-card__name" href="{{ url_for('leagues.dashboard', league_ref=league.url_ref) }}">{{ league.name }}</a>
|
|
{% if item.live_session %}
|
|
<span class="live-badge">{{ session_label(item.live_session) }}</span>
|
|
{% else %}
|
|
<span class="status-pill status-pill--closed">idle</span>
|
|
{% endif %}
|
|
</div>
|
|
<div class="li-card__chips">
|
|
<span class="db-chip db-chip--accent">{{ membership.role }}</span>
|
|
<span class="db-chip {% if league.visibility == 'public' %}db-chip--public{% endif %}">
|
|
{% if league.visibility == 'public' %}
|
|
<svg width="10" height="10" viewBox="0 0 20 20" fill="none" aria-hidden="true">
|
|
<circle cx="10" cy="10" r="8" stroke="currentColor" stroke-width="1.6"/>
|
|
<path d="M10 2c-2.5 3-2.5 13 0 16" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" fill="none"/>
|
|
<path d="M10 2c2.5 3 2.5 13 0 16" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" fill="none"/>
|
|
<path d="M2.5 10h15" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/>
|
|
</svg>
|
|
public
|
|
{% else %}
|
|
<svg width="9" height="11" viewBox="0 0 10 12" fill="none" aria-hidden="true">
|
|
<rect x="1" y="5" width="8" height="6.5" rx="1.5" stroke="currentColor" stroke-width="1.5"/>
|
|
<path d="M3 5V3.5A2 2 0 0 1 7 3.5V5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
|
</svg>
|
|
private
|
|
{% endif %}
|
|
</span>
|
|
</div>
|
|
{% if league.description %}
|
|
<p class="li-card__desc">{{ league.description }}</p>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<div class="li-card__stats">
|
|
<div class="li-stat">
|
|
<span>Players</span>
|
|
<strong>{{ item.players_count }}</strong>
|
|
</div>
|
|
<div class="li-stat">
|
|
<span>Sessions</span>
|
|
<strong>{{ item.sessions_count }}</strong>
|
|
</div>
|
|
<div class="li-stat">
|
|
<span>Paid out</span>
|
|
<strong>{{ item.cash_paid_out_cents | money }}</strong>
|
|
</div>
|
|
<div class="li-stat">
|
|
<span>Open</span>
|
|
<strong class="{{ 'num-neg' if item.open_items_cents > 0 else 'num-muted' }}">{{ item.open_items_cents | money }}</strong>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% if item.top_players %}
|
|
<div class="li-card__leaders">
|
|
<span class="li-card__leaders-label">Leaders</span>
|
|
<div class="li-podium">
|
|
{% for player in item.top_players %}
|
|
<div class="li-podium-item li-podium-item--{{ loop.index }}">
|
|
<span class="li-podium-rank">#{{ loop.index }}</span>
|
|
<span class="li-podium-name">{{ player.player_name }}</span>
|
|
<strong class="li-podium-net {{ 'num-pos' if player.total_net_cents > 0 else 'num-neg' if player.total_net_cents < 0 else 'num-muted' }}">
|
|
{{ '+' if player.total_net_cents > 0 else '' }}{{ player.total_net_cents | money }}
|
|
</strong>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="li-card__footer">
|
|
<span class="li-card__meta">
|
|
{% if item.latest_session %}Latest {{ session_label(item.latest_session) }}{% elif not item.top_players %}No sessions yet{% endif %}
|
|
</span>
|
|
<div class="li-card__actions">
|
|
<a class="btn btn--primary btn--sm" href="{{ url_for('leagues.dashboard', league_ref=league.url_ref) }}">Open league</a>
|
|
<a class="li-action-link" href="{{ url_for('leagues.sessions', league_ref=league.url_ref) }}">Sessions</a>
|
|
<a class="li-action-link" href="{{ url_for('leagues.leaderboard', league_ref=league.url_ref) }}">Leaderboard</a>
|
|
{% if membership.role in ('owner', 'manager') %}
|
|
<a class="li-action-link" href="{{ url_for('leagues.ledger', league_ref=league.url_ref) }}">Ledger</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</article>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
{% else %}
|
|
<div class="panel empty-panel">
|
|
<h2 class="panel__title">No leagues yet</h2>
|
|
<p class="muted-text">Create your first league to start adding players, sessions, and ledger events.</p>
|
|
<a class="btn btn--primary" href="{{ url_for('leagues.new') }}">Create league</a>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% endblock %}
|