move leader cards to summary page

This commit is contained in:
Maximilian Keßler 2023-12-04 23:49:42 +01:00
parent 0b67cea089
commit 55148c48ab
Signed by: max
GPG Key ID: BCC5A619923C0BA5
4 changed files with 37 additions and 15 deletions

View File

@ -1,11 +1,14 @@
.player-name { .player-name {
font-size: 1.25rem; font-size: 1.5rem;
font-weight: bold; font-weight: bold;
} }
.alt-name { .alt-name {
font-size: 0.75rem; font-size: 0.75rem;
color: #777; color: #777;
} }
.leaderboard-category {
font-size: 1.25rem;
}
.score { .score {
font-size: 1.5rem; font-size: 1.5rem;
font-weight: bold; font-weight: bold;

View File

@ -1,6 +1,9 @@
import shutil
from pathlib import Path from pathlib import Path
from typing import Dict, List from typing import Dict, List
import subprocess
import jinja2 import jinja2
import datetime import datetime
import psycopg2.extras import psycopg2.extras
@ -28,6 +31,7 @@ class PlayerStreakEntry(PlayerEntry):
@dataclass @dataclass
class Leader: class Leader:
title: str title: str
category: str
entry: PlayerEntry entry: PlayerEntry
@ -112,14 +116,14 @@ def get_leaders(rating_lists: Dict, streak_lists: Dict) -> Dict[int, Dict[str, L
if len(rating_list) != 0: if len(rating_list) != 0:
leader = rating_list[0] leader = rating_list[0]
leaders[rating_type] = { leaders[rating_type] = {
'Player Rating': Leader('Highest Rating', leader) 'Player Rating': Leader('Highest Rating', utils.describe_rating_type(rating_type), leader)
} }
for rating_type, streak_list in streak_lists.items(): for rating_type, streak_list in streak_lists.items():
if len(streak_list) != 0: if len(streak_list) != 0:
leader = streak_list[0] leader = streak_list[0]
if rating_type not in leaders.keys(): if rating_type not in leaders.keys():
leaders[rating_type] = {} leaders[rating_type] = {}
leaders[rating_type]['Top Streak'] = Leader('Longest Win Streak', leader) leaders[rating_type]['Top Streak'] = Leader('Longest Win Streak', utils.describe_rating_type(rating_type), leader)
return leaders return leaders
@ -254,7 +258,9 @@ def render_leaderboard():
# variants=variants, # variants=variants,
) )
output_file = Path(constants.WEBSITE_OUTPUT_DIRECTORY) / 'index.html' out_dir = Path(constants.WEBSITE_OUTPUT_DIRECTORY)
output_file = out_dir / 'index.html'
output_file.parent.mkdir(exist_ok=True, parents=True) output_file.parent.mkdir(exist_ok=True, parents=True)
with open(output_file, 'w') as f: with open(output_file, 'w') as f:
f.write(rendered_html) f.write(rendered_html)
@ -269,11 +275,14 @@ def render_leaderboard():
variant_name=variant_names[variant_id] variant_name=variant_names[variant_id]
) )
output_file = Path(constants.WEBSITE_OUTPUT_DIRECTORY) / 'variant' / str(variant_id) / 'index.html' output_file = out_dir / 'variant' / str(variant_id) / 'index.html'
output_file.parent.mkdir(exist_ok=True, parents=True) output_file.parent.mkdir(exist_ok=True, parents=True)
with open(output_file, 'w') as f: with open(output_file, 'w') as f:
f.write(rendered_var) f.write(rendered_var)
# Copy CSS to output directory
shutil.copytree('css', 'build/css', dirs_exist_ok=True)
render_leaderboard() render_leaderboard()

View File

@ -75,3 +75,10 @@ def get_rating_type(clue_starved: bool):
return 1 return 1
else: else:
return 0 return 0
def describe_rating_type(rating_type: int):
if rating_type == 0:
return "Standard"
elif rating_type == 1:
return "Clue Starved"

View File

@ -2,20 +2,23 @@
{% block content %} {% block content %}
<div class="tab-content" id="myTabContent"> <div class="tab-content" id="myTabContent">
<div class="tab-pane fade active show" id="summary"> <div class="tab-pane fade active show" id="summary">
<!-- Leader Cards --> <div class="container my-5">
<div class="card-deck mb-5"> <!-- Leader Cards -->
{% for rating_type, leaders in leaders.items() %} {% for rating_type, leaders in leaders.items() %}
{% for category, data in leaders.items() %} <div class="card-deck mb-5">
<div class="card text-center"> {% for category, data in leaders.items() %}
<div class="card-body"> <div class="card text-center">
<h5 class="card-title mb-4">{{ data.title }}</h5> <div class="card-body">
<p class="mb-0 player-name">{{ data.entry.player_name }}</p> <h5 class="card-title mb-2">{{ data.title }}</h5>
<p class="mt-1 alt-name">{{ data.entry.user_accounts }}</p> <p class="leaderboard-category">({{data.category}})</p>
<p class="score-large">{{ data.entry.score }}</p> <p class="mb-0 player-name">{{ data.entry.player_name }}</p>
<p class="mt-1 alt-name">{{ data.entry.user_accounts }}</p>
<p class="score-large">{{ data.entry.score }}</p>
</div>
</div> </div>
{% endfor %}
</div> </div>
{% endfor %} {% endfor %}
{% endfor %}
</div> </div>
</div> </div>