Refactor handling of active user
This commit is contained in:
@ -1,12 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
{# Easy nav-bar entries. When a page sets the active_page variable, the current entry will be underlined #}
|
||||
{% macro nav_selector(page='', text='') %}
|
||||
<a class="nav-link text-nowrap" href="{{ page }}">{% if active_page == page %}<u>{% endif %} {{ text }}
|
||||
{% if active_page == page %}</u>{% endif %}</a>
|
||||
{% endmacro %}
|
||||
|
||||
{# Simple driver dropdown. Requires list of drivers. #}
|
||||
{% macro driver_select(name='', label='') %}
|
||||
<div class="form-floating">
|
||||
@ -83,6 +77,12 @@
|
||||
</div>
|
||||
{% endmacro %}
|
||||
|
||||
{# Easy nav-bar entries. When a page sets the active_page variable, the current entry will be underlined #}
|
||||
{% macro nav_selector(page='', text='') %}
|
||||
<a class="nav-link text-nowrap" href="{{ page }}">{% if active_page == page %}<u>{% endif %} {{ text }}
|
||||
{% if active_page == page %}</u>{% endif %}</a>
|
||||
{% endmacro %}
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
@ -119,8 +119,8 @@
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<div class="navbar-nav me-2">
|
||||
{{ nav_selector("/race/" ~ active_user, "Race Picks") }}
|
||||
{{ nav_selector("/season/" ~ active_user, "Season Picks") }}
|
||||
{{ nav_selector("/race/" ~ active_user.name | default("Everyone"), "Race Picks") }}
|
||||
{{ nav_selector("/season/" ~ active_user.name | default("Everyone"), "Season Picks") }}
|
||||
{{ nav_selector("/graphs", "Statistics") }}
|
||||
{{ nav_selector("/rules", "Rules") }}
|
||||
</div>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{% extends 'base.jinja' %}
|
||||
|
||||
{% set active_page = "/race/" ~ chosenusername %}
|
||||
{% set active_user = chosenusername %}
|
||||
{% set active_page = "/race/" ~ activeuser.name | default("Everyone") %}
|
||||
{% set active_user = activeuser %}
|
||||
|
||||
{% block title %}Formula 10 - Race{% endblock title %}
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-outline-danger dropdown-toggle" type="button" data-bs-toggle="dropdown"
|
||||
aria-expanded="false">
|
||||
{{ chosenusername }}
|
||||
{% if activeuser is not none %}{{ activeuser.name }}{% else %}Everyone{% endif %}
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item" href="/race/Everyone">Everyone</a></li>
|
||||
@ -30,8 +30,10 @@
|
||||
<tr>
|
||||
<th scope="col" rowspan="2" class="text-center" style="width: 200px;">Race</th>
|
||||
|
||||
{% if chosenusers | length > 0 %}
|
||||
<th scope="col" colspan="{{ chosenusers | length }}" class="text-center">Call</th>
|
||||
{% if activeuser is none %}
|
||||
<th scope="col" colspan="{{ users | length }}" class="text-center">Call</th>
|
||||
{% else %}
|
||||
<th scope="col" class="text-center">Call</th>
|
||||
{% endif %}
|
||||
|
||||
<th scope="col" rowspan="2" class="text-center" style="width: 200px;">Result</th>
|
||||
@ -44,83 +46,95 @@
|
||||
<tr>
|
||||
<td> </td>
|
||||
|
||||
{% for user in chosenusers %}
|
||||
<td class="text-center text-nowrap" style="min-width: 100px;">{{ user.name }}</td>
|
||||
{% endfor %}
|
||||
{% if activeuser is none %}
|
||||
{% for user in users %}
|
||||
<td class="text-center text-nowrap" style="min-width: 100px;">{{ user.name }}</td>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<td class="text-center text-nowrap" style="min-width: 100px;">{{ activeuser.name }}</td>
|
||||
{% endif %}
|
||||
|
||||
<td> </td>
|
||||
</tr>
|
||||
|
||||
{# Next Race Guess #}
|
||||
{% if nextrace is not none %}
|
||||
<tr class="table-light">
|
||||
<td class="text-nowrap"><span class="fw-bold">{{ nextrace.id }}:</span> {{ nextrace.grandprix }}</td>
|
||||
{# {% if nextrace is not none %}#}
|
||||
{# <tr class="table-light">#}
|
||||
{# <td class="text-nowrap">#}
|
||||
{# <span class="fw-bold">{{ nextrace.id }}:</span> {{ nextrace.grandprix }}<br>#}
|
||||
{# <small><span class="fw-bold">Guess:</span> P{{ nextrace.pxx }}</small>#}
|
||||
{# </td>#}
|
||||
{##}
|
||||
{# {% for user in users %}#}
|
||||
{# <td>#}
|
||||
{# <form action="/guessrace/{{ nextrace.id }}/{{ user.name }}" method="post">#}
|
||||
{# Driver PXX Select #}
|
||||
{# {{ driver_select_with_preselect(currentselection.get(user.name).pxx.abbr if user.name in currentselection else "",#}
|
||||
{# "pxxselect", "P" ~ nextrace.pxx ~ ":") }}#}
|
||||
{##}
|
||||
{# Driver DNF Select #}
|
||||
{# <div class="mt-2">#}
|
||||
{# {{ driver_select_with_preselect(currentselection.get(user.name).dnf.abbr if user.name in currentselection else "",#}
|
||||
{# "dnfselect", "DNF:") }}#}
|
||||
{# </div>#}
|
||||
{##}
|
||||
{# <input type="submit" class="btn btn-danger mt-2 w-100" value="Save">#}
|
||||
{# </form>#}
|
||||
{# </td>#}
|
||||
{# {% endfor %}#}
|
||||
{##}
|
||||
{# Enter Race Result #}
|
||||
{# <td> </td>#}
|
||||
{# <td>#}
|
||||
{# <form action="/enterresult/{{ nextrace.id }}" method="post">#}
|
||||
{# Driver PXX Select#}
|
||||
{# {{ driver_select("pxxselect", "P" ~ nextrace.pxx ~ ":") }}#}
|
||||
{##}
|
||||
{# Driver DNF Select#}
|
||||
{# <div class="mt-2">#}
|
||||
{# {{ driver_select("dnfselect", "DNF:") }}#}
|
||||
{# </div>#}
|
||||
{##}
|
||||
{# <input type="submit" class="btn btn-danger mt-2 w-100" value="Save">#}
|
||||
{# </form>#}
|
||||
{# </td>#}
|
||||
{# </tr>#}
|
||||
{# {% endif %}#}
|
||||
|
||||
{% for user in chosenusers %}
|
||||
<td>
|
||||
<form action="/guessrace/{{ nextrace.id }}/{{ user.name }}" method="post">
|
||||
{# Driver PXX Select #}
|
||||
{{ driver_select_with_preselect(currentselection.get(user.name).pxx.abbr if user.name in currentselection else "",
|
||||
"pxxselect", "P" ~ nextrace.pxx ~ ":") }}
|
||||
{# Race Results #}
|
||||
{% for raceresult in raceresults %}
|
||||
<tr>
|
||||
<td class="text-nowrap">
|
||||
<span class="fw-bold">{{ raceresult.race.id }}:</span> {{ raceresult.race.grandprix }}<br>
|
||||
<small><span class="fw-bold">Guessed:</span> P{{ raceresult.race.pxx }}</small>
|
||||
</td>
|
||||
|
||||
{# Driver DNF Select #}
|
||||
<div class="mt-2">
|
||||
{{ driver_select_with_preselect(currentselection.get(user.name).dnf.abbr if user.name in currentselection else "",
|
||||
"dnfselect", "DNF:") }}
|
||||
</div>
|
||||
{% if activeuser is not none %}{% set users = [activeuser] %}{% endif %}
|
||||
{% for user in users %}
|
||||
<td class="text-center text-nowrap">
|
||||
{% if (raceresult.race_id in guesses) and (user.name in guesses.get(raceresult.race_id)) %}
|
||||
{% set pxx = guesses.get(raceresult.race_id).get(user.name).pxx.abbr %}
|
||||
{% set dnf = guesses.get(raceresult.race_id).get(user.name).dnf.abbr %}
|
||||
|
||||
<input type="submit" class="btn btn-danger mt-2 w-100" value="Save">
|
||||
</form>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item {% if pxx == raceresult.pxx.abbr %}text-success fw-bold{% endif %}">
|
||||
P{{ raceresult.race.pxx }}: {{ pxx }}</li>
|
||||
<li class="list-group-item {% if dnf == raceresult.dnf.abbr %}text-success fw-bold{% endif %}">
|
||||
DNF: {{ dnf }}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
|
||||
{# Enter Race Result #}
|
||||
<td>
|
||||
<form action="/enterresult/{{ nextrace.id }}" method="post">
|
||||
{# Driver PXX Select #}
|
||||
{{ driver_select("pxxselect", "P" ~ nextrace.pxx ~ ":") }}
|
||||
|
||||
{# Driver DNF Select #}
|
||||
<div class="mt-2">
|
||||
{{ driver_select("dnfselect", "DNF:") }}
|
||||
</div>
|
||||
|
||||
<input type="submit" class="btn btn-danger mt-2 w-100" value="Save">
|
||||
</form>
|
||||
<td class="text-center text-nowrap">
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item">P{{ raceresult.race.pxx }}: {{ raceresult.pxx.abbr }}</li>
|
||||
<li class="list-group-item {% if raceresult.dnf.abbr == 'NON' %}text-muted{% endif %}">
|
||||
DNF: {{ raceresult.dnf.abbr }}</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{# Race Results #}
|
||||
{% for raceresult in raceresults %}
|
||||
<tr>
|
||||
<td class="text-nowrap"><span
|
||||
class="fw-bold">{{ raceresult.race.id }}:</span> {{ raceresult.race.grandprix }}</td>
|
||||
|
||||
{% for user in chosenusers %}
|
||||
<td class="text-center text-nowrap">
|
||||
{% if (raceresult.race_id in pastguesses) and (user.name in pastguesses.get(raceresult.race_id)) %}
|
||||
{% set pxx = pastguesses.get(raceresult.race_id).get(user.name).pxx.abbr %}
|
||||
{% set dnf = pastguesses.get(raceresult.race_id).get(user.name).dnf.abbr %}
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item {% if pxx == raceresult.pxx.abbr %}text-success fw-bold{% endif %}">
|
||||
P{{ raceresult.race.pxx }}: {{ pxx }}</li>
|
||||
<li class="list-group-item {% if dnf == raceresult.dnf.abbr %}text-success fw-bold{% endif %}">
|
||||
DNF: {{ dnf }}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
|
||||
<td class="text-center text-nowrap">
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item">P{{ raceresult.race.pxx }}: {{ raceresult.pxx.abbr }}</li>
|
||||
<li class="list-group-item {% if raceresult.dnf.abbr == 'NON' %}text-muted{% endif %}">
|
||||
DNF: {{ raceresult.dnf.abbr }}</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@ -1,18 +1,21 @@
|
||||
{% extends 'base.jinja' %}
|
||||
|
||||
{% set active_page = "/season/" ~ chosenusername %}
|
||||
{% set active_user = chosenusername %}
|
||||
{% set active_page = "/season/" ~ activeuser.name | default("Everyone") %}
|
||||
{% set active_user = activeuser %}
|
||||
|
||||
{% block title %}Formula 10 - Season{% endblock title %}
|
||||
|
||||
{% block navbar_center %}
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-outline-danger dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
{{ chosenusername }}
|
||||
<button class="btn btn-outline-danger dropdown-toggle" type="button" data-bs-toggle="dropdown"
|
||||
aria-expanded="false">
|
||||
{% if activeuser is not none %}{{ activeuser.name }}{% else %}Everyone{% endif %}
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item" href="/season/Everyone">Everyone</a></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li>
|
||||
<hr class="dropdown-divider">
|
||||
</li>
|
||||
{% for user in users %}
|
||||
<li><a class="dropdown-item" href="/season/{{ user.name }}">{{ user.name }}</a></li>
|
||||
{% endfor %}
|
||||
@ -24,7 +27,10 @@
|
||||
|
||||
|
||||
<div class="grid" style="grid-template-columns: repeat(auto-fit, minmax(450px, 1fr));">
|
||||
{% for user in chosenusers %}
|
||||
|
||||
{% if activeuser is not none %}{% set users = [activeuser] %}{% endif %}
|
||||
{% for user in users %}
|
||||
|
||||
<div class="card mb-2 shadow-sm" style="width: 450px;">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">{{ user.name }}</h5>
|
||||
@ -33,30 +39,30 @@
|
||||
{# Hot Take #}
|
||||
<div class="form-floating">
|
||||
<textarea class="form-control" id="hot-take-input-{{ user.name }}" name="hottakeselect"
|
||||
style="height: 50px">{%- if (user.name in currentselection) -%}
|
||||
{{- currentselection.get(user.name).hot_take -}}{%- endif -%}</textarea>
|
||||
style="height: 50px">{%- if (user.name in guesses) -%}
|
||||
{{- guesses.get(user.name).hot_take -}}{%- endif -%}</textarea>
|
||||
<label for="hot-take-input-{{ user.name }}" class="text-primary">Hot Take:</label>
|
||||
</div>
|
||||
|
||||
{# P2 Constructor #}
|
||||
<div class="mt-2">
|
||||
{{ team_select_with_preselect(currentselection.get(user.name).p2_constructor.name if user.name in currentselection else "",
|
||||
{{ team_select_with_preselect(guesses.get(user.name).p2_constructor.name if user.name in guesses else "",
|
||||
"p2select", "P2 in WCC:") }}
|
||||
</div>
|
||||
|
||||
{# Most Overtakes + DNFs #}
|
||||
<div class="input-group mt-2">
|
||||
{{ driver_select_with_preselect(currentselection.get(user.name).most_overtakes.abbr if user.name in currentselection else "",
|
||||
{{ driver_select_with_preselect(guesses.get(user.name).most_overtakes.abbr if user.name in guesses else "",
|
||||
"overtakeselect", "Most overtakes:") }}
|
||||
{{ driver_select_with_preselect(currentselection.get(user.name).most_dnfs.abbr if user.name in currentselection else "",
|
||||
{{ driver_select_with_preselect(guesses.get(user.name).most_dnfs.abbr if user.name in guesses else "",
|
||||
"dnfselect", "Most DNFs:") }}
|
||||
</div>
|
||||
|
||||
{# Most Gained + Lost #}
|
||||
<div class="input-group mt-2">
|
||||
{{ driver_select_with_preselect(currentselection.get(user.name).most_gained.abbr if user.name in currentselection else "",
|
||||
{{ driver_select_with_preselect(guesses.get(user.name).most_gained.abbr if user.name in guesses else "",
|
||||
"gainedselect", "Most WDC places gained:") }}
|
||||
{{ driver_select_with_preselect(currentselection.get(user.name).most_lost.abbr if user.name in currentselection else "",
|
||||
{{ driver_select_with_preselect(guesses.get(user.name).most_lost.abbr if user.name in guesses else "",
|
||||
"lostselect", "Most WDC places lost:") }}
|
||||
</div>
|
||||
|
||||
@ -73,7 +79,7 @@
|
||||
name="teamwinner-{{ team.name }}"
|
||||
id="teamwinner-{{ team.name }}-1-{{ user.name }}"
|
||||
value="{{ driver_a_name }}"
|
||||
{% if (user.name in currentselection) and (driver_a_name in currentselection.get(user.name).team_winners.winner_ids) %}checked="checked"{% endif %}>
|
||||
{% if (user.name in guesses) and (driver_a_name in guesses.get(user.name).team_winners.winner_ids) %}checked="checked"{% endif %}>
|
||||
<label class="form-check-label"
|
||||
for="teamwinner-{{ team.name }}-1-{{ user.name }}">{{ driver_a_name }}</label>
|
||||
</div>
|
||||
@ -85,7 +91,7 @@
|
||||
name="teamwinner-{{ team.name }}"
|
||||
id="teamwinner-{{ team.name }}-2-{{ user.name }}"
|
||||
value="{{ driver_b_name }}"
|
||||
{% if (user.name in currentselection) and (driver_b_name in currentselection.get(user.name).team_winners.winner_ids) %}checked="checked"{% endif %}>
|
||||
{% if (user.name in guesses) and (driver_b_name in guesses.get(user.name).team_winners.winner_ids) %}checked="checked"{% endif %}>
|
||||
<label class="form-check-label"
|
||||
for="teamwinner-{{ team.name }}-2-{{ user.name }}">{{ driver_b_name }}</label>
|
||||
</div>
|
||||
@ -106,7 +112,7 @@
|
||||
name="podiumdrivers"
|
||||
id="podium-{{ driver_a_name }}-{{ user.name }}"
|
||||
value="{{ driver_a_name }}"
|
||||
{% if (user.name in currentselection) and (driver_a_name in currentselection.get(user.name).podium_drivers.podium_ids) %}checked="checked"{% endif %}>
|
||||
{% if (user.name in guesses) and (driver_a_name in guesses.get(user.name).podium_drivers.podium_ids) %}checked="checked"{% endif %}>
|
||||
<label class="form-check-label"
|
||||
for="podium-{{ driver_a_name }}-{{ user.name }}">{{ driver_a_name }}</label>
|
||||
</div>
|
||||
@ -118,7 +124,7 @@
|
||||
name="podiumdrivers"
|
||||
id="podium-{{ driver_b_name }}-{{ user.name }}"
|
||||
value="{{ driver_b_name }}"
|
||||
{% if (user.name in currentselection) and (driver_b_name in currentselection.get(user.name).podium_drivers.podium_ids) %}checked="checked"{% endif %}>
|
||||
{% if (user.name in guesses) and (driver_b_name in guesses.get(user.name).podium_drivers.podium_ids) %}checked="checked"{% endif %}>
|
||||
<label class="form-check-label"
|
||||
for="podium-{{ driver_b_name }}-{{ user.name }}">{{ driver_b_name }}</label>
|
||||
</div>
|
||||
@ -131,6 +137,7 @@
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
{% extends 'base.jinja' %}
|
||||
|
||||
{% set active_page = "/users" %}
|
||||
{% set active_user = "Everyone" %}
|
||||
|
||||
{% block title %}Formula 10 - Users{% endblock title %}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user