87 lines
4.9 KiB
HTML
87 lines
4.9 KiB
HTML
{% extends 'tablepage.html' %}
|
|
{% block head %}
|
|
{{ super() }}
|
|
<title>Multiworld Tracker</title>
|
|
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename="styles/tracker.css") }}"/>
|
|
<script type="application/ecmascript" src="{{ url_for('static', filename="assets/trackerCommon.js") }}"></script>
|
|
{% endblock %}
|
|
|
|
{% block body %}
|
|
{% include 'header/dirtHeader.html' %}
|
|
{% include 'multiTrackerNavigation.html' %}
|
|
<div id="tracker-wrapper" data-tracker="{{ room.tracker|suuid }}">
|
|
<div id="tracker-header-bar">
|
|
<input placeholder="Search" id="search"/>
|
|
<span{% if not video %} hidden{% endif %} id="multi-stream-link">
|
|
<a target="_blank" href="https://multistream.me/
|
|
{%- for platform, link in video.values()|unique(False, 1)-%}
|
|
{%- if platform == "Twitch" -%}t{%- else -%}yt{%- endif -%}:{{- link -}}/
|
|
{%- endfor -%}">
|
|
Multistream
|
|
</a>
|
|
</span>
|
|
<span class="info">Clicking on a slot's number will bring up a slot-specific auto-tracker. This tracker will automatically update itself periodically.</span>
|
|
</div>
|
|
<div id="tables-container">
|
|
{% for team, players in checks_done.items() %}
|
|
<div class="table-wrapper">
|
|
<table id="checks-table" class="table non-unique-item-table">
|
|
<thead>
|
|
<tr>
|
|
<th>#</th>
|
|
<th>Name</th>
|
|
<th>Game</th>
|
|
<th>Status</th>
|
|
{% block custom_table_headers %}
|
|
{# implement this block in game-specific multi trackers #}
|
|
{% endblock %}
|
|
<th class="center-column">Checks</th>
|
|
<th class="center-column">%</th>
|
|
<th class="center-column hours last-activity">Last<br>Activity</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{%- for player, checks in players.items() -%}
|
|
<tr>
|
|
<td><a href="{{ url_for("get_player_tracker", tracker=room.tracker,
|
|
tracked_team=team, tracked_player=player)}}">{{ loop.index }}</a></td>
|
|
<td>{{ player_names[(team, loop.index)]|e }}</td>
|
|
<td>{{ games[player] }}</td>
|
|
<td>{{ {0: "Disconnected", 5: "Connected", 10: "Ready", 20: "Playing",
|
|
30: "Goal Completed"}.get(states[team, player], "Unknown State") }}</td>
|
|
{% block custom_table_row scoped %}
|
|
{# implement this block in game-specific multi trackers #}
|
|
{% endblock %}
|
|
<td class="center-column" data-sort="{{ checks["Total"] }}">
|
|
{{ checks["Total"] }}/{{ locations[player] | length }}
|
|
</td>
|
|
<td class="center-column">{{ percent_total_checks_done[team][player] }}</td>
|
|
{%- if activity_timers[team, player] -%}
|
|
<td class="center-column">{{ activity_timers[team, player].total_seconds() }}</td>
|
|
{%- else -%}
|
|
<td class="center-column">None</td>
|
|
{%- endif -%}
|
|
</tr>
|
|
{%- endfor -%}
|
|
</tbody>
|
|
{% if not self.custom_table_headers() | trim %}
|
|
<tfoot>
|
|
<tr>
|
|
<td></td>
|
|
<td>Total</td>
|
|
<td>All Games</td>
|
|
<td>{{ completed_worlds }}/{{ players|length }} Complete</td>
|
|
<td class="center-column">{{ players.values()|sum(attribute='Total') }}/{{ total_locations[team] }}</td>
|
|
<td class="center-column">{{ (players.values()|sum(attribute='Total') / total_locations[team] * 100) | int }}</td>
|
|
<td class="center-column last-activity"></td>
|
|
</tr>
|
|
</tfoot>
|
|
{% endif %}
|
|
</table>
|
|
</div>
|
|
{% endfor %}
|
|
{% include "hintTable.html" with context %}
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|