| 
									
										
										
										
											2023-11-18 12:29:35 -06:00
										 |  |  | {% 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" %} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 17:07:58 +02:00
										 |  |  |     <div id="tracker-wrapper" data-tracker="{{ room.tracker | suuid }}" data-second="{{ saving_second }}"> | 
					
						
							| 
									
										
										
										
											2023-11-18 12:29:35 -06:00
										 |  |  |         <div id="tracker-header-bar"> | 
					
						
							|  |  |  |             <input placeholder="Search" id="search" /> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             <div | 
					
						
							|  |  |  |                 id="multi-stream-link" | 
					
						
							|  |  |  |                 class="tracker-navigation-bar" | 
					
						
							|  |  |  |                 {% if not videos %}style="display: none"{% endif %} | 
					
						
							|  |  |  |             > | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 <a | 
					
						
							|  |  |  |                     class="tracker-navigation-button" | 
					
						
							|  |  |  |                     href="https://multistream.me/ | 
					
						
							|  |  |  |                         {%- for platform, link in videos.values() | unique(False, 1) -%} | 
					
						
							|  |  |  |                             {%- if platform == "Twitch" -%}t{%- else -%}yt{%- endif -%}:{{- link -}}/ | 
					
						
							|  |  |  |                         {%- endfor -%}" | 
					
						
							|  |  |  |                     target="_blank" | 
					
						
							|  |  |  |                 > | 
					
						
							|  |  |  |                     ► Multistream | 
					
						
							|  |  |  |                 </a> | 
					
						
							|  |  |  |             </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             <div class="info"> | 
					
						
							|  |  |  |                 Clicking on a slot's number will bring up the slot-specific tracker. | 
					
						
							|  |  |  |                 This tracker will automatically update itself periodically. | 
					
						
							|  |  |  |             </div> | 
					
						
							|  |  |  |         </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         <div id="tables-container"> | 
					
						
							|  |  |  |         {%- for team, players in room_players.items() -%} | 
					
						
							|  |  |  |             <div class="table-wrapper"> | 
					
						
							|  |  |  |                 <table id="checks-table" class="table non-unique-item-table"> | 
					
						
							|  |  |  |                     <thead> | 
					
						
							|  |  |  |                         <tr> | 
					
						
							|  |  |  |                             <th>#</th> | 
					
						
							|  |  |  |                             <th>Name</th> | 
					
						
							|  |  |  |                             {% if current_tracker == "Generic" %}<th>Game</th>{% endif %} | 
					
						
							|  |  |  |                             <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 in players -%} | 
					
						
							|  |  |  |                         {%- if current_tracker == "Generic" or games[(team, player)] == current_tracker -%} | 
					
						
							|  |  |  |                             <tr> | 
					
						
							|  |  |  |                                 <td> | 
					
						
							|  |  |  |                                     <a href="{{ url_for("get_player_tracker", tracker=room.tracker, tracked_team=team, tracked_player=player) }}"> | 
					
						
							|  |  |  |                                         {{ player }} | 
					
						
							|  |  |  |                                     </a> | 
					
						
							|  |  |  |                                 </td> | 
					
						
							|  |  |  |                                 <td>{{ player_names_with_alias[(team, player)] | e }}</td> | 
					
						
							|  |  |  |                                 {%- if current_tracker == "Generic" -%} | 
					
						
							|  |  |  |                                     <td>{{ games[(team, player)] }}</td> | 
					
						
							|  |  |  |                                 {%- endif -%} | 
					
						
							|  |  |  |                                 <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 %} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                 {% set location_count = locations[(team, player)] | length %} | 
					
						
							|  |  |  |                                 <td class="center-column" data-sort="{{ locations_complete[(team, player)] }}"> | 
					
						
							|  |  |  |                                     {{ locations_complete[(team, player)] }}/{{ location_count }} | 
					
						
							|  |  |  |                                 </td> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                 <td class="center-column"> | 
					
						
							|  |  |  |                                 {%- if locations[(team, player)] | length > 0 -%} | 
					
						
							|  |  |  |                                     {% set percentage_of_completion = locations_complete[(team, player)] / location_count * 100 %} | 
					
						
							|  |  |  |                                     {{ "{0:.2f}".format(percentage_of_completion) }} | 
					
						
							|  |  |  |                                 {%- else -%} | 
					
						
							|  |  |  |                                     100.00 | 
					
						
							|  |  |  |                                 {%- endif -%} | 
					
						
							|  |  |  |                                 </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> | 
					
						
							|  |  |  |                         {%- endif -%} | 
					
						
							|  |  |  |                     {%- endfor -%} | 
					
						
							|  |  |  |                     </tbody> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     {%- if not self.custom_table_headers() | trim -%} | 
					
						
							|  |  |  |                         <tfoot> | 
					
						
							|  |  |  |                             <tr> | 
					
						
							|  |  |  |                                 <td colspan="2" style="text-align: right">Total</td> | 
					
						
							|  |  |  |                                 <td>All Games</td> | 
					
						
							|  |  |  |                                 <td>{{ completed_worlds[team] }}/{{ players | length }} Complete</td> | 
					
						
							|  |  |  |                                 <td class="center-column"> | 
					
						
							|  |  |  |                                     {{ total_team_locations_complete[team] }}/{{ total_team_locations[team] }} | 
					
						
							|  |  |  |                                 </td> | 
					
						
							|  |  |  |                                 <td class="center-column"> | 
					
						
							|  |  |  |                                     {%- if total_team_locations[team] == 0 -%} | 
					
						
							|  |  |  |                                         100 | 
					
						
							|  |  |  |                                     {%- else -%} | 
					
						
							|  |  |  |                                         {{ "{0:.2f}".format(total_team_locations_complete[team] / total_team_locations[team] * 100) }} | 
					
						
							|  |  |  |                                     {%- endif -%} | 
					
						
							|  |  |  |                                 </td> | 
					
						
							|  |  |  |                                 <td class="center-column last-activity"></td> | 
					
						
							|  |  |  |                             </tr> | 
					
						
							|  |  |  |                         </tfoot> | 
					
						
							|  |  |  |                     {%- endif -%} | 
					
						
							|  |  |  |                 </table> | 
					
						
							|  |  |  |             </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         {%- endfor -%} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         {% block custom_tables %} | 
					
						
							|  |  |  |         {# Implement this block to create custom tables in game-specific multi-trackers. #} | 
					
						
							|  |  |  |         {% endblock %} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         {% include "multitrackerHintTable.html" with context %} | 
					
						
							|  |  |  |         </div> | 
					
						
							|  |  |  |     </div> | 
					
						
							|  |  |  | {% endblock %} |