variant stat overview per rating type

This commit is contained in:
Maximilian Keßler 2023-12-28 23:13:45 +01:00
parent 4b3c4eb3cf
commit 57a5a6aa35
Signed by: max
GPG key ID: BCC5A619923C0BA5
4 changed files with 20 additions and 7 deletions

View file

@ -559,6 +559,15 @@ def build_variant_stats_by_variant(variant_rows: List[VariantRow]):
return variant_stats, variant_stats_per_player, variant_names return variant_stats, variant_stats_per_player, variant_names
def accumulate_variant_stats_by_rating_type(variant_rows: List[VariantRow]) -> Dict[int, VariantStats]:
res = {}
for row in variant_rows:
if row.rating_type not in res.keys():
res[row.rating_type] = VariantStats(rating=[])
res[row.rating_type] += row.stats
return res
def build_unique_variants(variant_rows: List[VariantRow]): def build_unique_variants(variant_rows: List[VariantRow]):
return [row for row in variant_rows if row.num_players == config.config_manager.get_config().min_player_count] return [row for row in variant_rows if row.num_players == config.config_manager.get_config().min_player_count]
@ -570,6 +579,8 @@ def render_main_site(env: jinja2.Environment, out_dir: Path):
players = get_player_list() players = get_player_list()
variant_rows: List[VariantRow] = get_variant_rows() variant_rows: List[VariantRow] = get_variant_rows()
var_stats = accumulate_variant_stats_by_rating_type(variant_rows)
print(var_stats)
leaderboards = { leaderboards = {
'Player Rating': rating_lists, 'Player Rating': rating_lists,
@ -588,8 +599,8 @@ def render_main_site(env: jinja2.Environment, out_dir: Path):
variants_with_player_nums=variant_rows, variants_with_player_nums=variant_rows,
unique_variants=build_unique_variants(variant_rows), unique_variants=build_unique_variants(variant_rows),
players=players, players=players,
games=[dataclasses.asdict(game) for game in games] games=[dataclasses.asdict(game) for game in games],
# variants=variants, variant_stats=var_stats
) )
output_file = out_dir / 'index.html' output_file = out_dir / 'index.html'

View file

@ -1,5 +1,5 @@
{% extends "layout.html" %} {% extends "layout.html" %}
{% from "stats_table.html" import player_table_js, games_table_js %} {% from "stats_table.html" import player_table_js, games_table_js, stats_list %}
{% block navbar %} {% block navbar %}
<nav class="navbar navbar-expand-lg navbar-light bg-light"> <nav class="navbar navbar-expand-lg navbar-light bg-light">
@ -81,6 +81,8 @@
{% for rating_type, leaders in leaders.items() %} {% for rating_type, leaders in leaders.items() %}
<div class="tab-pane fade" id="leaderboards-{{rating_type}}"> <div class="tab-pane fade" id="leaderboards-{{rating_type}}">
<div class="container my-5"> <div class="container my-5">
<h3>Global Statistics</h3>
{{ stats_list(variant_stats[rating_type], False, False, "{3p,4p,5p}x{5s,6s}") }}
<!-- Leaderboards --> <!-- Leaderboards -->
<h3>Leaderboards</h3> <h3>Leaderboards</h3>

View file

@ -1,10 +1,10 @@
{% macro stats_list(stats, show_rating, show_streaks) %} {% macro stats_list(stats, single_rating, show_streaks, rating_description) %}
<!-- Table for statistics of a variant --> <!-- Table for statistics of a variant -->
<div class="history-bullets"> <div class="history-bullets">
<ul class="stat-list"> <ul class="stat-list">
<li> <li>
<span class="stat-description">Rating{% if not show_rating %} (3p,4p,5p){% endif %}:</span> <span class="stat-description">Rating{% if not single_rating %} {{ rating_description }}{% endif %}:</span>
{% if show_rating %} {% if single_rating %}
{{stats.rating}} {{stats.rating}}
{% else %} {% else %}
{{ stats.rating|join(", ")}} {{ stats.rating|join(", ")}}

View file

@ -35,7 +35,7 @@
<h3> <h3>
League Statistics for {{variant_name}} League Statistics for {{variant_name}}
</h3> </h3>
{{ stats_list(variant_stats, False, False) }} {{ stats_list(variant_stats, False, False, "(3p/4p/5p)") }}
<h4> <h4>
List of Played Games List of Played Games
</h4> </h4>