MarseyWorld/files/templates/leaderboard.html

100 lines
4.3 KiB
HTML

{% extends "settings2.html" %}
{% block pagetitle %}Leaderboard{% endblock %}
{% block content %}
{%- set LEADERBOARDS = [
('coins', 'Coins', True, True), ('spent', 'Spent in shop', True, True), ('truescore', 'Truescore', True, True), ('followers', 'Followers', True, True),
('posts', 'Posts', True, True), ('comments', 'Comments', True, True), ('awards', 'Awards', True, True), ('badges', 'Badges', True, True),
('marseys', 'Marseys', SITE_NAME == 'rDrama', True), ('blocked', 'Blocked', True, True), ('owned-hats', 'Owned hats', True, True), ('designed-hats', 'Designed hats', True, False)
] -%}
<pre class="d-none d-md-inline-block"></pre>
<div id="leaderboard-contents" style="text-align: center; margin-bottom: 1.5rem; font-size: 1.2rem;">
{% for lb in LEADERBOARDS %}
{% if lbs[2] %}
<a href="#leaderboard-{{lb[0]}}">{{lb[1]}}</a>{% if lb[3] %} &bull;{% endif %}
{% endif %}
{% endfor %}
</div>
{% macro format_user_in_table(user, style, position_no, value, user_relative_url) %}
<tr {{style}}>
<td>{{position_no}}</td>
<td>{% include "user_in_table.html" %}</td>
{% if user_relative_url %}
<td><a href="/@{{user.username}}/{{user_relative_url}}">{{"{:,}".format(value)}}</a></td>
{% else %}
<td>{{"{:,}".format(value)}}</td>
{% endif %}
</tr>
{% endmacro %}
{% macro leaderboard_table_header(column_name) %}
<thead class="bg-primary text-white">
<tr>
<th>#</th>
<th>Name</th>
<th>{{column_name}}</th>
</tr>
</thead>
{% endmacro %}
{% macro leaderboard_table(lb, position, id, total_count, header_name, column_name, attr_name) %}
<h5 class="font-weight-bolder text-center pt-2 pb-3"><a id="leaderboard-{{id}}">Top {{total_count}} by {{header_name}}</a></h5>
<div class="overflow-x-auto">
<# TODO: check at some point if the nesting divs are intentional #>
<table class="table table-striped mb-5">
{{leaderboard_table_header(column_name)}}
<tbody>
{% for user in lb %}
{% if v.id == user.id %}
{% set style="class=\"self\"" %}
{% endif %}
{{format_user_in_table(user, style, loop.index, getattr(user, attr_name))}}
{% endfor %}
{% if position %}
{{format_user_in_table(v, "style=\"border-top:2px solid var(--primary)\"", position, getattr(v, attr_name))}}
{% endif %}
</tbody>
</table>
{% endmacro %}
{{leaderboard_table(users1, pos1, 'coins', 25, 'coins', 'Coins', 'coins')}}
{{leaderboard_table(users7, pos7, 'spent', 25, 'coins spent in shop', 'Coins', 'coins_spent')}}
{{leaderboard_table(users10, pos10, 'truescore', 25, 'truescore', 'Truescore', 'truecoins')}}
{{leaderboard_table(users2, pos2, 'followers', 25, 'followers', 'Followers', 'stored_subscriber_count')}}
{{leaderboard_table(users3, pos3, 'posts', 25, 'post count', 'Posts', 'post_count')}}
{{leaderboard_table(users4, pos4, 'comments', 25, 'comment count', 'Comments', 'comment_count')}}
{{leaderboard_table(users5, pos5, 'awards', 25, 'received awards', 'Awards', 'awards')}}
{% macro leaderboard_table_2(lb, position, id, total_count, header_name, column_name, user_relative_url) %}
<h5 class="font-weight-bolder text-center pt-2 pb-3"><a id="leaderboard-{{id}}">Top {{total_count}} by {{header_name}}</a></h5>
<div class="overflow-x-auto">
<table class="table table-striped mb-5">
{{leaderboard_table_header(column_name)}}
<tbody>
{% for user, num in lb %}
{% if v.id == user.id %}
{% set style="class=\"self\"" %}
{% endif %}
{{format_user_in_table(user, style, loop.index, num, user_relative_url)}}
{% endfor %}
{% if position and (position[0] > total_count or not position[1]) %}
{{format_user_in_table(v, "style=\"border-top:2px solid var(--primary)\"", position, position[1], user_relative_url)}}
{% endif %}
</tbody>
</table>
{% endmacro %}
{{leaderboard_table_2(users11, pos11, 'badges', 25, 'badges', 'Badges')}}
{% if users12 %}
{{leaderboard_table_2(users12, pos12, 'marseys', 25, 'Marseys made', 'Marseys')}}
{% endif %}
{{leaderboard_table_2(users16, pos16, 'blocked', 25, 'most blocked', 'Blocked By', 'blockers')}}
{{leaderboard_table_2(users17, pos17, 'owned-hats', 25, 'owned hats', 'Owned Hats')}}
{{leaderboard_table_2(users18, pos18, 'designed-hats', 25, 'designed hats', 'Designed Hats')}}
<a id="leader--top-btn" href="#leaderboard-contents" role="button"
style="position: fixed; bottom: 5rem; right: 2rem; font-size: 3rem;">
<i class="fas fa-arrow-alt-circle-up"></i>
</a>
{% endblock %}