]> de.git.xonotic.org Git - xonotic/xonstat.git/blob - xonstat/templates/scoreboard.mako
1f4f51f8321bc74f0420b5601cc1dc81152a6456
[xonotic/xonstat.git] / xonstat / templates / scoreboard.mako
1 <%def name="scoreboard(game_type_cd, pgstats, show_elo=False, show_latency=False)">
2 % if teamscores:
3 <table class="table table-condensed">
4 <!--<thead><tr>
5   <td class="teamscore" colspan="${len(teamscores)}">Teamscores</td>
6 </tr></thead>-->
7 <tbody><tr class="teamscores">
8 % for team,score in sorted(teamscores.items(), key=lambda x:x[1], reverse=True):
9     <td class="${team}">${score}</td>
10 % endfor
11   </tr></tbody>
12 </table>
13 % endif
14 <table class="table table-hover table-condensed">
15   ${scoreboard_header(game_type_cd, pgstats[0])}
16   <tbody>
17   % for pgstat in pgstats:
18   <tr class="${pgstat.team_html_color()}">
19     <td class="player-nick">
20       % if pgstat.player_id > 2:
21       <a href="${request.route_url("player_info", id=pgstat.player_id)}"
22         title="Go to the info page for this player">
23         <span class="nick">${pgstat.nick_html_colors()|n}</span>
24       </a>
25       % else:
26       <span class="nick">${pgstat.nick_html_colors()|n}</span>
27       % endif
28     </td>
29     % if show_latency and pgstat.avg_latency is not None:
30     <td>
31       ${int(round(pgstat.avg_latency))}
32     </td>
33     % elif show_latency:
34     <td></td>
35     % endif
36     ${scoreboard_row(game_type_cd, pgstat)}
37     % if game_type_cd != 'cts':
38     <td>${pgstat.score}</td>
39     % endif
40     % if show_elo:
41     % if pgstat.elo_delta is not None:
42     <td>${round(pgstat.elo_delta,2)}</td>
43     % else:
44     <td>-</td>
45     % endif
46     % endif
47   </tr>
48   % endfor
49   </tbody>
50 </table>
51 </%def>
52
53 ##### SCOREBOARD HEADER #####
54 <%def name="scoreboard_header(game_type_cd, pgstat)">
55 % if game_type_cd == 'as':
56 <thead>
57   <tr>
58     <th class="nick">Nick</th>
59     % if show_latency:
60     <th class="ping">Ping</th>
61     % endif
62     <th class="kills">Kills</th>
63     <th class="deaths">Deaths</th>
64     <th class="suicides">Suicides</th>
65     <th class="objectives">Objectives</th>
66     <th class="score">Score</th>
67     % if show_elo:
68     <th>Elo Change</th>
69     % endif
70   </tr>
71 </thead>
72 % endif
73
74 % if game_type_cd in 'ca' 'dm' 'duel' 'rune' 'tdm':
75 <thead>
76   <tr>
77     <th class="nick">Nick</th>
78     % if show_latency:
79     <th class="ping">Ping</th>
80     % endif
81     <th class="kills">Kills</th>
82     <th class="deaths">Deaths</th>
83     <th class="suicides">Suicides</th>
84     <th class="score">Score</th>
85     % if show_elo:
86     <th>Elo Change</th>
87     % endif
88   </tr>
89 </thead>
90 % endif
91
92 % if game_type_cd == 'cq':
93 <thead>
94   <tr>
95     <th class="nick">Nick</th>
96     % if show_latency:
97     <th class="ping">Ping</th>
98     % endif
99     <th class="kills">Kills</th>
100     <th class="deaths">Deaths</th>
101     <th class="captured">Captured</th>
102     <th class="released">Released</th>
103     <th class="score">Score</th>
104     % if show_elo:
105     <th>Elo Change</th>
106     % endif
107   </tr>
108 </thead>
109 % endif
110
111 % if game_type_cd == 'cts':
112 <thead>
113   <tr>
114     <th class="nick">Nick</th>
115     % if show_latency:
116     <th class="ping">Ping</th>
117     % endif
118     <th class="fastest">Fastest Time</th>
119     <th class="deaths">Deaths</th>
120   </tr>
121 </thead>
122 % endif
123
124 % if game_type_cd == 'ctf':
125 <thead class="ctf ${pgstat.team_html_color()}">
126   <tr>
127     <th class="nick">Nick</th>
128     % if show_latency:
129     <th class="ping">Ping</th>
130     % endif
131     <th class="kills">Kills</th>
132     <th class="captures">Captures</th>
133     <th class="pickups">Pickups</th>
134     <th class="fck" title="Flag Carrier Kill">FCK</th>
135     <th class="returns">Returns</th>
136     <th class="score">Score</th>
137     % if show_elo:
138     <th>Elo Change</th>
139     % endif
140   </tr>
141 </thead>
142 % endif
143
144 % if game_type_cd == 'dom':
145 <thead class="dom ${pgstat.team_html_color()}">
146   <tr>
147     <th class="nick">Nick</th>
148     % if show_latency:
149     <th class="ping">Ping</th>
150     % endif
151     <th class="kills">Kills</th>
152     <th class="deaths">Deaths</th>
153     <th class="takes">Takes</th>
154     <th class="ticks">Ticks</th>
155     <th class="score">Score</th>
156     % if show_elo:
157     <th>Elo Change</th>
158     % endif
159   </tr>
160 </thead>
161 % endif
162
163 % if game_type_cd in 'ft' 'freezetag':
164 <thead class="freezetag ${pgstat.team_html_color()}">
165   <tr>
166     <th class="nick">Nick</th>
167     % if show_latency:
168     <th class="ping">Ping</th>
169     % endif
170     <th class="kills">Kills</th>
171     <th class="deaths">Deaths</th>
172     <th class="revivals">Revivals</th>
173     <th class="score">Score</th>
174     % if show_elo:
175     <th>Elo Change</th>
176     % endif
177   </tr>
178 </thead>
179 % endif
180
181 % if game_type_cd in 'ka' 'keepaway':
182 <thead>
183   <tr>
184     <th class="nick">Nick</th>
185     % if show_latency:
186     <th class="ping">Ping</th>
187     % endif
188     <th class="kills">Kills</th>
189     <th class="deaths">Deaths</th>
190     <th class="pickups">Pickups</th>
191     <th class="bctime">BC Time</th>
192     <th class="bckills">BC Kills</th>
193     % if show_elo:
194     <th>Elo Change</th>
195     % endif
196   </tr>
197 </thead>
198 % endif
199
200 % if game_type_cd == 'kh':
201 <thead class="kh ${pgstat.team_html_color()}">
202   <tr>
203     <th class="nick">Nick</th>
204     % if show_latency:
205     <th class="ping">Ping</th>
206     % endif
207     <th class="kills">Kills</th>
208     <th class="deaths">Deaths</th>
209     <th class="pickups">Pickups</th>
210     <th class="caps">Captures</th>
211     <th class="losses">Losses</th>
212     <th class="pushes">Pushes</th>
213     <th class="destroys">Destroys</th>
214     <th class="kckills">KC Kills</th>
215     <th class="score">Score</th>
216     % if show_elo:
217     <th>Elo Change</th>
218     % endif
219   </tr>
220 </thead>
221 % endif
222
223 % if game_type_cd in 'nb' 'nexball':
224 <thead class="nb ${pgstat.team_html_color()}">
225   <tr>
226     <th class="nick">Nick</th>
227     % if show_latency:
228     <th class="ping">Ping</th>
229     % endif
230     <th class="goals">Goals</th>
231     <th class="faults">Faults</th>
232     <th class="score">Score</th>
233     % if show_elo:
234     <th>Elo Change</th>
235     % endif
236   </tr>
237 </thead>
238 % endif
239
240 % if game_type_cd == 'rc':
241 <thead>
242   <tr>
243     <th class="nick">Nick</th>
244     % if show_latency:
245     <th class="ping">Ping</th>
246     % endif
247     <th class="laps">Laps</th>
248     <th class="fastest">Fastest Lap</th>
249     <th class="time">Time</th>
250   </tr>
251 </thead>
252 % endif
253
254 </%def>
255
256 ##### SCOREBOARD ROWS #####
257 <%def name="scoreboard_row(game_type_cd, pgstat)">
258 % if game_type_cd == 'as':
259 <td>${pgstat.kills}</td>
260 <td>${pgstat.deaths}</td>
261 <td>${pgstat.suicides}</td>
262 <td>${pgstat.collects}</td>
263 % endif
264
265 % if game_type_cd in 'ca' 'dm' 'duel' 'rune' 'tdm':
266 <td>${pgstat.kills}</td>
267 <td>${pgstat.deaths}</td>
268 <td>${pgstat.suicides}</td>
269 % endif
270
271 % if game_type_cd == 'cq':
272 <td>${pgstat.kills}</td>
273 <td>${pgstat.deaths}</td>
274 <td>${pgstat.captures}</td>
275 <td>${pgstat.drops}</td>
276 % endif
277
278 % if game_type_cd == 'cts':
279 % if pgstat.fastest is not None:
280 <td>${round(float(pgstat.fastest.seconds) + (pgstat.fastest.microseconds/1000000.0), 2)}</td>
281 % else:
282 <td>-</td>
283 % endif
284 <td>${pgstat.deaths}</td>
285 % endif
286
287 % if game_type_cd == 'ctf':
288 <td>${pgstat.kills}</td>
289 <td>${pgstat.captures}</td>
290 <td>${pgstat.pickups}</td>
291 <td>${pgstat.carrier_frags}</td>
292 <td>${pgstat.returns}</td>
293 % endif
294
295 % if game_type_cd == 'dom':
296 <td>${pgstat.kills}</td>
297 <td>${pgstat.deaths}</td>
298 <td>${pgstat.pickups}</td>
299 <td>${pgstat.drops}</td>
300 % endif
301
302 % if game_type_cd in 'ft' 'freezetag':
303 <td>${pgstat.kills}</td>
304 <td>${pgstat.deaths}</td>
305 <td>${pgstat.revivals}</td>
306 % endif
307
308 % if game_type_cd in 'ka' 'keepaway':
309 <td>${pgstat.kills}</td>
310 <td>${pgstat.deaths}</td>
311 <td>${pgstat.pickups}</td>
312
313 % if pgstat.time is not None:
314 <td>${round(float(pgstat.time.seconds) + (pgstat.time.microseconds/1000000.0), 2)}</td>
315 % else:
316 <td>-</td>
317 % endif
318
319 <td>${pgstat.fckills}</td>
320 % endif
321
322 % if game_type_cd == 'kh':
323 <td>${pgstat.kills}</td>
324 <td>${pgstat.deaths}</td>
325 <td>${pgstat.pickups}</td>
326 <td>${pgstat.captures}</td>
327 <td>${pgstat.drops}</td>
328 <td>${pgstat.pushes}</td>
329 <td>${pgstat.destroys}</td>
330 <td>${pgstat.carrier_frags}</td>
331 % endif
332
333 % if game_type_cd in 'nb' 'nexball':
334 <td>${pgstat.captures}</td>
335 <td>${pgstat.drops}</td>
336 % endif
337
338 % if game_type_cd == 'rc':
339 <td>${pgstat.laps}</td>
340
341 % if pgstat.fastest is not None:
342 <td>${round(float(pgstat.fastest.seconds) + (pgstat.fastest.microseconds/1000000.0), 2)}</td>
343 % else:
344 <td>-</td>
345 % endif
346
347 % if pgstat.time is not None:
348 <td>${round(float(pgstat.time.seconds) + (pgstat.time.microseconds/1000000.0), 2)}</td>
349 % else:
350 <td>-</td>
351 % endif
352 % endif
353
354 </%def>