{% macro stats_list(stats, single_rating, show_streaks, rating_description) %} <!-- Table for statistics of a variant --> <div class="history-bullets"> <ul class="stat-list"> <li> <span class="stat-description">Rating{% if not single_rating %} {{ rating_description }}{% endif %}:</span> {% if single_rating %} {{stats.rating}} {% else %} {{ stats.rating|join(", ")}} {% endif %} </li> {% if show_streaks %} <li> <span class="stat-description">Maximum Streak:</span> {{stats.max_streak}} </li> {% endif %} <li> <span class="stat-description">Total Perfect Scores:</span> {{stats.games_won}} </li> <li> <span class="stat-description">Total Bottom Deck Risk:</span> {{stats.total_bdr}} </li> <li> <span class="stat-description">Total Crits Lost:</span> {{stats.total_crits_lost}} </li> <li> <span class="stat-description">Total Turns Taken:</span> {{stats.total_moves}} </li> </ul> <ul class="stat-list"> <li> <span class="stat-description">Total Games Played:</span> {{stats.games_played}} </li> {% if show_streaks %} <li> <span class="stat-description">Current Streak:</span> {{stats.current_streak}} </li> {% endif %} <li> <span class="stat-description">Winrate:</span> {{stats.winrate}}% </li> <li> <span class="stat-description">Average Bottom Deck Risk:</span> {{stats.average_bdr}} </li> <li> <span class="stat-description">Average Crits Lost:</span> {{stats.average_crits_lost}} </li> <li> <span class="stat-description">Average Turns Taken:</span> {{stats.average_moves}} </li> </ul> </div> {% endmacro %} {% macro games_table_js(data, div_id, show_player_num, show_var_rating, show_user_rating, player_description) %} var table_{{div_id}} = new Tabulator("#table-{{div_id}}", { maxHeight: 400, data: {{data}}, layout: "fitDataStretch", columns: [ {title: "Game", field: "game_id", formatter: "link", formatterParams:{ urlPrefix: "https://hanab.live/replay/", target:"_blank" }}, {title: "Played", field: "datetime_finished", formatter: "datetime", formatterParams:{ inputFormat: "iso", timezone: "system", outputFormat: "dd/MM HH:mm" }}, {% if show_player_num %} {title: "#P", field: "num_players"}, {title: "#S", field: "num_suits"}, {% endif %} {% if show_var_rating %} {title: "+/-", field: "variant_rating_change"}, {title: "ELO", field: "variant_rating_after"}, {% endif %} {% if show_user_rating %} {title: "+/-", field: "user_rating_change"}, {title: "ELO After", field: "user_rating_after"}, {% endif %} {title: "{{player_description}}", field: "users", formatter:function(cell, formatterParams, onRendered) { let links = cell.getValue().map(player => `<a href="/player/${encodeURIComponent(player)}">${player}</a>`); return links.join(", "); }}, {title: "Seed", field: "seed", formatter: "link", formatterParams: { urlPrefix: "https://hanab.live/seed/", target:"_blank" }}, {title: "SCR", field: "score"}, {title: "BDR", field: "num_bdrs"}, {title: "Turns", field: "num_turns"}, {title: "Result", field: "game_outcomes"} ], }); {% endmacro %} {% macro player_table_js(data, div_id) %} var table_{{div_id}} = new Tabulator("#table-{{div_id}}", { data: {{data}}, layout: "fitDataTable", initialSort: [ {column: "name", dir: "asc"}, ], columns: [ {title: "Player", field: "name", formatter: "link", formatterParams:{ urlPrefix: "/player/", }}, {title: "No Variant", headerHozAlign: "center", columns: [ {title: "ELO", field: "novar_rating", headerSortStartingDir: "desc"}, {title: "Games", field: "novar_games_played", headerSortStartingDir: "desc"}, {title: "Win%", field: "novar_winrate", headerSortStartingDir: "desc", formatter:function(cell, formatterParams, onRendered) { return cell.getValue() + "%"; }}, {title: "Max Streak", field: "novar_max_streak", headerSortStartingDir: "desc"}, ]}, {title: "Clue Starved", headerHozAlign: "center", columns: [ {title: "ELO", field: "cs_rating", headerSortStartingDir: "desc"}, {title: "Games", field: "cs_games_played", headerSortStartingDir: "desc"}, {title: "Win%", field: "cs_winrate", headerSortStartingDir: "desc", formatter:function(cell, formatterParams, onRendered) { return cell.getValue() + "%"; }}, {title: "Max Streak", field: "cs_max_streak", headerSortStartingDir: "desc"} ]}, ] }); {% endmacro %}