fix up tables

master
Aevann 2023-10-29 15:56:44 +03:00
parent a68dcfd5fe
commit 8272599137
7 changed files with 218 additions and 192 deletions

View File

@ -12,40 +12,42 @@
{% if u1 and u2 %}
<h2>Analysis</h2>
<div class="overflow-x-auto"><table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<div class="overflow-x-auto">
<table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr>
<th class="disable-sort-click"></th>
<th class="disable-sort-click">@{{u1.username}} only (% unique)</th>
<th class="disable-sort-click">Both</th>
<th class="disable-sort-click">@{{u2.username}} only (% unique)</th>
</tr>
</thead>
<tr>
<th class="disable-sort-click"></th>
<th class="disable-sort-click">@{{u1.username}} only (% unique)</th>
<th class="disable-sort-click">Both</th>
<th class="disable-sort-click">@{{u2.username}} only (% unique)</th>
<td><b>Post Upvotes</b></td>
<td>{{data['u1_only_post_ups']}} ({{data['u1_post_ups_unique']}}%)</td>
<td>{{data['both_post_ups']}}</td>
<td>{{data['u2_only_post_ups']}} ({{data['u2_post_ups_unique']}}%)</td>
</tr>
</thead>
<tr>
<td><b>Post Upvotes</b></td>
<td>{{data['u1_only_post_ups']}} ({{data['u1_post_ups_unique']}}%)</td>
<td>{{data['both_post_ups']}}</td>
<td>{{data['u2_only_post_ups']}} ({{data['u2_post_ups_unique']}}%)</td>
</tr>
<tr>
<td><b>Post Downvotes</b></td>
<td>{{data['u1_only_post_downs']}} ({{data['u1_post_downs_unique']}}%)</td>
<td>{{data['both_post_downs']}}</td>
<td>{{data['u2_only_post_downs']}} ({{data['u2_post_downs_unique']}}%)</td>
</tr>
<tr>
<td><b>Comment Upvotes</b></td>
<td>{{data['u1_only_comment_ups']}} ({{data['u1_comment_ups_unique']}}%)</td>
<td>{{data['both_comment_ups']}}</td>
<td>{{data['u2_only_comment_ups']}} ({{data['u2_comment_ups_unique']}}%)</td>
</tr>
<tr>
<td><b>Comment Downvotes</b></td>
<td>{{data['u1_only_comment_downs']}} ({{data['u1_comment_downs_unique']}}%)</td>
<td>{{data['both_comment_downs']}}</td>
<td>{{data['u2_only_comment_downs']}} ({{data['u2_comment_downs_unique']}}%)</td>
</tr>
</table>
<tr>
<td><b>Post Downvotes</b></td>
<td>{{data['u1_only_post_downs']}} ({{data['u1_post_downs_unique']}}%)</td>
<td>{{data['both_post_downs']}}</td>
<td>{{data['u2_only_post_downs']}} ({{data['u2_post_downs_unique']}}%)</td>
</tr>
<tr>
<td><b>Comment Upvotes</b></td>
<td>{{data['u1_only_comment_ups']}} ({{data['u1_comment_ups_unique']}}%)</td>
<td>{{data['both_comment_ups']}}</td>
<td>{{data['u2_only_comment_ups']}} ({{data['u2_comment_ups_unique']}}%)</td>
</tr>
<tr>
<td><b>Comment Downvotes</b></td>
<td>{{data['u1_only_comment_downs']}} ({{data['u1_comment_downs_unique']}}%)</td>
<td>{{data['both_comment_downs']}}</td>
<td>{{data['u2_only_comment_downs']}} ({{data['u2_comment_downs_unique']}}%)</td>
</tr>
</table>
</div>
{% if v.admin_level >= PERMS['USER_LINK'] %}
<h2>Link Accounts</h2>

View File

@ -7,26 +7,35 @@
{% block content %}
<p>We received a request to remove two-factor authentication from your account. In 72 hours, click the link below.</p>
<p>If you didn't make this request, change your password and use the Log Out Everywhere feature in your <a href="/settings/security">Security Settings</a> to permanently invalidate the link.</p>
<div class="overflow-x-auto"><table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<div class="overflow-x-auto><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center">
<a href="{{action_url}}" class="f-fallback button" target="_blank">Remove two-factor authentication</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<div class="overflow-x-auto">
<table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<div class="overflow-x-auto">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center">
<a href="{{action_url}}" class="f-fallback button" target="_blank">Remove two-factor authentication</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
<p>Please note that {{SITE_NAME}} will never ask you for your email, password, or two-factor token via email, text, or phone.</p>
<div class="overflow-x-auto"><table class="body-sub">
<tr>
<td>
<p class="f-fallback sub">If you're having trouble with the button above, copy and paste the URL below into your web browser.</p>
<p class="f-fallback sub">{{action_url}}</p>
</td>
</tr>
</table>
<div class="overflow-x-auto">
<table class="body-sub">
<tr>
<td>
<p class="f-fallback sub">If you're having trouble with the button above, copy and paste the URL below into your web browser.</p>
<p class="f-fallback sub">{{action_url}}</p>
</td>
</tr>
</table>
</div>
{% endblock %}

View File

@ -366,39 +366,45 @@
</head>
<body>
<span class="preheader">{% block preheader %}Thanks for joining {{SITE_NAME}}! Please take a sec to verify the email you used to sign up.{% endblock %}</span>
<div class="overflow-x-auto"><table class="email-wrapper" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<div class="overflow-x-auto"><table class="email-content" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="email-masthead">
<a href="/" class="f-fallback email-masthead_name">
{{SITE_NAME}}
</a>
</td>
</tr>
<tr>
<td class="email-body" width="100%" cellpadding="0" cellspacing="0">
<div class="overflow-x-auto"><table class="email-body_inner" align="center" width="570" cellpadding="0" cellspacing="0">
<tr>
<td class="content-cell">
<div class="f-fallback">
<h1>{% block title %}Title Goes Here{% endblock %}</h1>
{% block content %}
{% for entry in data %}
<h3>{{entry[0]}}</h3>
<p>{{entry[1]}}</p>
{% endfor %}
{% endblock %}
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<div class="overflow-x-auto">
<table class="email-wrapper" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<div class="overflow-x-auto">
<table class="email-content" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="email-masthead">
<a href="/" class="f-fallback email-masthead_name">
{{SITE_NAME}}
</a>
</td>
</tr>
<tr>
<td class="email-body" width="100%" cellpadding="0" cellspacing="0">
<div class="overflow-x-auto">
<table class="email-body_inner" align="center" width="570" cellpadding="0" cellspacing="0">
<tr>
<td class="content-cell">
<div class="f-fallback">
<h1>{% block title %}Title Goes Here{% endblock %}</h1>
{% block content %}
{% for entry in data %}
<h3>{{entry[0]}}</h3>
<p>{{entry[1]}}</p>
{% endfor %}
{% endblock %}
</div>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>

View File

@ -21,28 +21,32 @@
</tr>
</table>
<p>For reference, here's your username.</p>
<div class="overflow-x-auto"><table class="attributes" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="attributes_content">
<div class="overflow-x-auto><table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="attributes_item">
<span class="f-fallback">
<strong>Email:</strong> {{v.email}}
</span>
</td>
</tr>
<tr>
<td class="attributes_item">
<span class="f-fallback">
<strong>Username:</strong> {{v.username}}
</span>
</td>
</tr>
</table>
</td>
</tr>
</table>
<div class="overflow-x-auto">
<table class="attributes" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="attributes_content">
<div class="overflow-x-auto">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="attributes_item">
<span class="f-fallback">
<strong>Email:</strong> {{v.email}}
</span>
</td>
</tr>
<tr>
<td class="attributes_item">
<span class="f-fallback">
<strong>Username:</strong> {{v.username}}
</span>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</div>
<p>Please note that {{SITE_NAME}} will never ask you for your email, password, or two-factor token via email, text, or phone.</p>

View File

@ -4,33 +4,35 @@
<script defer src="{{'js/remove_mod.js' | asset}}"></script>
<h5 class="mt-2">/h/{{hole}} Mods</h5>
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr>
<th>#</th>
<th>Name</th>
<th>Mod since</th>
<th class="disable-sort-click"></th>
</tr>
</thead>
{% for user, mod in users %}
<tr>
<td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td>
<td data-time="{{mod.created_utc}}"></td>
<td>
{% if v.id == user.id or v.mod_date(hole.name) and v.mod_date(hole.name) < mod.created_utc %}
<form action="/h/{{hole}}/remove_mod" method="post" data-nonce="{{g.nonce}}" data-onsubmit="removeMod(this)">
<input hidden name="formkey" value="{{v|formkey}}">
<input hidden name="uid" value="{{user.id}}">
<input autocomplete="off" class="btn btn-primary ml-auto" type="submit" value="{% if v.id == user.id %}Resign{% else %}Remove Mod{% endif %}">
</form>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
<div class="overflow-x-auto mt-1">
<table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr>
<th>#</th>
<th>Name</th>
<th>Mod since</th>
<th class="disable-sort-click"></th>
</tr>
</thead>
{% for user, mod in users %}
<tr>
<td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td>
<td data-time="{{mod.created_utc}}"></td>
<td>
{% if v.id == user.id or v.mod_date(hole.name) and v.mod_date(hole.name) < mod.created_utc %}
<form action="/h/{{hole}}/remove_mod" method="post" data-nonce="{{g.nonce}}" data-onsubmit="removeMod(this)">
<input hidden name="formkey" value="{{v|formkey}}">
<input hidden name="uid" value="{{user.id}}">
<input autocomplete="off" class="btn btn-primary ml-auto" type="submit" value="{% if v.id == user.id %}Resign{% else %}Remove Mod{% endif %}">
</form>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</div>
{% if v.mods(hole.name) %}
<form action="/h/{{hole}}/add_mod" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHRReload(this)">

View File

@ -45,39 +45,39 @@
</div>
{% endif %}
<div class="overflow-x-auto mt-3 mb-5"><table class="table table-striped shop">
<thead class="bg-primary text-white">
<div class="overflow-x-auto mt-3 mb-5">
<table class="table table-striped shop">
<thead class="bg-primary text-white">
<tr>
<th class="disable-sort-click">Icon</th>
<th>Title</th>
<th>Price</th>
<th>Owned</th>
<th class="disable-sort-click">Buy</th>
<th>Description</th>
</tr>
</thead>
<tbody>
{% for a in awards %}
{% set kind = a['kind'] %}
{% set price = a['price'] %}
<tr>
<th class="disable-sort-click">Icon</th>
<th>Title</th>
<th>Price</th>
<th>Owned</th>
<th class="disable-sort-click">Buy</th>
<th>Description</th>
</tr>
</thead>
<tbody>
{% for a in awards %}
{% set kind = a['kind'] %}
{% set price = a['price'] %}
<tr>
<td class="shop-table-icon"><i class="{{a['icon']}} {{a['color']}}" style="font-size: 30px"></i></td>
<td class="shop-table-title">{{a['title']}}</td>
{% if a['baseprice'] != price %}
<td data-sort-key="{{price}}" class="shop-table-price">
<span class="discounted-price">{{a['baseprice']}}</span> <em class="text-success">{{price}}</em>
<td class="shop-table-icon"><i class="{{a['icon']}} {{a['color']}}" style="font-size: 30px"></i></td>
<td class="shop-table-title">{{a['title']}}</td>
{% if a['baseprice'] != price %}
<td data-sort-key="{{price}}" class="shop-table-price">
<span class="discounted-price">{{a['baseprice']}}</span> <em class="text-success">{{price}}</em>
</td>
{% else %}
<td class="shop-table-price">{{price}}</td>
{% endif %}
<td class="shop-table-owned">{{a['owned']}}</td>
<td class="shop-table-actions">
<button type="button" id="buy-{{loop.index}}" class="btn btn-success {% if v.coins+v.marseybux < price or (kind == 'grass' and v.coins < price) or (kind == 'benefactor' and v.marseybux < price) %}disabled{% endif %}" data-areyousure="postToastSwitch(this,'/buy/{{kind}}')" data-nonce="{{g.nonce}}" data-onclick="areyousure(this)">Buy</button>
</td>
{% else %}
<td class="shop-table-price">{{price}}</td>
{% endif %}
<td class="shop-table-owned">{{a['owned']}}</td>
<td class="shop-table-actions">
<button type="button" id="buy-{{loop.index}}" class="btn btn-success {% if v.coins+v.marseybux < price or (kind == 'grass' and v.coins < price) or (kind == 'benefactor' and v.marseybux < price) %}disabled{% endif %}" data-areyousure="postToastSwitch(this,'/buy/{{kind}}')" data-nonce="{{g.nonce}}" data-onclick="areyousure(this)">Buy</button>
</td>
<td class="shop-table-description">{{a['description']}}</td>
</tr>
{% endfor %}
</table>
</div>
<td class="shop-table-description">{{a['description']}}</td>
</tr>
{% endfor %}
</table>
</div>
{% endblock %}

View File

@ -2,30 +2,33 @@
{% block pagetitle %}Users blocked by @{{u.username}}{% endblock %}
{% block content %}
<h5 class="my-3">Users blocked by @{{u.username}} ({{total}} user{{macros.plural(total)}})</h5>
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr>
<th>Name</th>
<th class="disable-sort-click">Blocking since</th>
{% if v.id == u.id %}
<th class="disable-sort-click"></th>
{% endif %}
</tr>
</thead>
<tbody id="blockers-table">
{% for block, user in users %}
<tr>
<td>{% include "user_in_table.html" %}</td>
<td {% if block.created_utc > 1599343262 %}data-time="{{block.created_utc}}"{% endif %}></td>
{% if v.id == u.id %}
<td>
<button type="button" class="btn btn-primary" data-nonce="{{g.nonce}}" data-onclick="unblock_user(this, '/unblock_user?username={{user.username}}&formkey={{v|formkey}}')">Unblock</button>
</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
<div class="overflow-x-auto mt-1">
<table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr>
<th>Name</th>
<th class="disable-sort-click">Blocking since</th>
{% if v.id == u.id %}
<th class="disable-sort-click"></th>
{% endif %}
</tr>
</thead>
<tbody id="blockers-table">
{% for block, user in users %}
<tr>
<td>{% include "user_in_table.html" %}</td>
<td {% if block.created_utc > 1599343262 %}data-time="{{block.created_utc}}"{% endif %}></td>
{% if v.id == u.id %}
<td>
<button type="button" class="btn btn-primary" data-nonce="{{g.nonce}}" data-onclick="unblock_user(this, '/unblock_user?username={{user.username}}&formkey={{v|formkey}}')">Unblock</button>
</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% if v.id == u.id %}
<script defer src="{{'js/userpage_blocking.js' | asset}}"></script>