]> de.git.xonotic.org Git - xonotic/xonstat.git/commitdiff
Merge branch 'zykure-approved'
authorAnt Zucaro <azucaro@gmail.com>
Sun, 18 Aug 2013 18:32:11 +0000 (14:32 -0400)
committerAnt Zucaro <azucaro@gmail.com>
Sun, 18 Aug 2013 18:32:11 +0000 (14:32 -0400)
xonstat/__init__.py
xonstat/templates/accuracy_graph.mako [new file with mode: 0644]
xonstat/templates/player_info.mako
xonstat/views/game.py

index 0433461732e1160bda14af816e568f164bb600ce..2ddf5095171e02b3cc454d02e2d970a897e0e97e 100644 (file)
@@ -55,10 +55,10 @@ def main(global_config, **settings):
     config.add_route("player_info_json", "/player/{id:\d+}.json")
     config.add_view(player_info_json, route_name="player_info_json", renderer="jsonp")
 
-    config.add_route("player_elo_info_text", "/elo/{hashkey}")
+    config.add_route("player_elo_info_text", "/player/{hashkey}/elo.txt")
     config.add_view(player_elo_info_text, route_name="player_elo_info_text", renderer="player_elo_info_text.mako")
 
-    config.add_route("player_elo_info_json", "/elo/{hashkey}.json") ## FIXME - doesn't seem to work?
+    config.add_route("player_elo_info_json", "/player/{hashkey}/elo.json") ## FIXME - doesn't seem to work?
     config.add_view(player_elo_info_json, route_name="player_elo_info_json", renderer="jsonp")
 
     config.add_route("player_accuracy",      "/player/{id:\d+}/accuracy")
diff --git a/xonstat/templates/accuracy_graph.mako b/xonstat/templates/accuracy_graph.mako
new file mode 100644 (file)
index 0000000..8458b77
--- /dev/null
@@ -0,0 +1,35 @@
+<%def name="accuracy_graph(recent_weapons)">
+### hitscan weapon data is available
+% if 'nex' in recent_weapons or 'rifle' in recent_weapons or 'minstanex' in recent_weapons or 'uzi' in recent_weapons or 'shotgun' in recent_weapons:
+<div class="row">
+  <div class="span12">
+    <h3>Accuracy</h3>
+
+    <div id="acc-graph" class="flot" style="width:95%; height:200px;">
+    </div>
+
+    <div class="weapon-nav accuracy-nav">
+      <ul>
+      % for weapon in ['nex', 'rifle', 'minstanex', 'uzi', 'shotgun']:
+        % if weapon in recent_weapons:
+        <li>
+        ### the nex is underscored first by default (until user selection)
+        % if weapon == 'nex':
+        <div class="acc-weap weapon-active">
+        % else:
+        <div class="acc-weap">
+        % endif
+          <span class="sprite sprite-${weapon}"></span>
+          <p><small>${weapon}</small></p>
+          <a href="${request.route_url('player_accuracy', id=player.player_id, _query={'weapon':weapon})}" title="Show ${weapon} accuracy"></a>
+        </div>
+        </li>
+        % endif
+      % endfor
+      </ul>
+    </div>
+
+  </div> <!-- END SPAN12 -->
+</div> <!-- END ROW -->
+% endif
+</%def>
index 677c0580417e0eb5a3d56ca66a991e62ed4ab2a8..293d1d5370478b8bde8de41962d60df7e87815d7 100644 (file)
@@ -1,6 +1,7 @@
 <%inherit file="base.mako"/>
 <%namespace name="nav" file="nav.mako" />
 <%namespace file="accuracy.mako" import="accuracy" />
+<%namespace file="accuracy_graph.mako" import="accuracy_graph" />
 
 <%block name="navigation">
 ${nav.nav('players')}
@@ -331,71 +332,8 @@ Player Information
 </div>
 
 
-% if 'nex' in recent_weapons or 'rifle' in recent_weapons or 'minstanex' in recent_weapons or 'uzi' in recent_weapons or 'shotgun' in recent_weapons:
-<div class="row">
-  <div class="span12">
-    <h3>Accuracy</h3>
-    <div id="acc-graph" class="flot" style="width:95%; height:200px;">
-    </div>
-
-    <div class="weapon-nav accuracy-nav">
-      <ul>
-        % if 'nex' in recent_weapons:
-        <li>
-        <div class="acc-weap weapon-active">
-          <span class="sprite sprite-nex"></span>
-          <p><small>Nex</small></p>
-          <a href="${request.route_url('player_accuracy', id=player.player_id, _query={'weapon':'nex'})}" title="Show nex accuracy"></a>
-        </div>
-        </li>
-        % endif
-
-        % if 'rifle' in recent_weapons:
-        <li>
-        <div class="acc-weap">
-          <span class="sprite sprite-rifle"></span>
-          <p><small>Rifle</small></p>
-          <a href="${request.route_url('player_accuracy', id=player.player_id, _query={'weapon':'rifle'})}" title="Show rifle accuracy"></a>
-        </div>
-        </li>
-        % endif
-
-        % if 'minstanex' in recent_weapons:
-        <li>
-        <div class="acc-weap">
-          <span class="sprite sprite-minstanex"></span>
-          <p><small>Minstanex</small></p>
-          <a href="${request.route_url('player_accuracy', id=player.player_id, _query={'weapon':'minstanex'})}" title="Show minstanex accuracy"></a>
-        </div>
-        </li>
-        % endif
-
-        % if 'uzi' in recent_weapons:
-        <li>
-        <div class="acc-weap">
-          <span class="sprite sprite-uzi"></span>
-          <p><small>Uzi</small></p>
-          <a href="${request.route_url('player_accuracy', id=player.player_id, _query={'weapon':'uzi'})}" title="Show uzi accuracy"></a>
-        </div>
-        </li>
-        % endif
-
-        % if 'shotgun' in recent_weapons:
-        <li>
-        <div class="acc-weap">
-          <span class="sprite sprite-shotgun"></span>
-          <p><small>Shotgun</small></p>
-          <a href="${request.route_url('player_accuracy', id=player.player_id, _query={'weapon':'shotgun'})}" title="Show shotgun accuracy"></a>
-        </div>
-        </li>
-        % endif
-      </ul>
-    </div>
-
-  </div>
-</div>
-% endif
-
+### ACCURACY GRAPH
+${accuracy_graph(recent_weapons)}
 
 % if 'rocketlauncher' in recent_weapons or 'grenadelauncher' in recent_weapons or 'electro' in recent_weapons or 'crylink' in recent_weapons or 'laser' in recent_weapons:
 <div class="row">
index 58d48f89d4a356dafdc853a390373dc0d13a5286..aace99c48f662ef5f56278d60353e333765e82c3 100644 (file)
@@ -5,82 +5,15 @@ import time
 from collections import OrderedDict
 from pyramid.response import Response
 from sqlalchemy import desc, func, over
-from collections import namedtuple
 from webhelpers.paginate import Page, PageURL
 from xonstat.models import *
 from xonstat.util import page_url
 from xonstat.views.helpers import RecentGame, recent_games_q
 
-import random
 
 log = logging.getLogger(__name__)
 
 
-# DEPRECATED
-def _game_index_data(request):
-    game_type_cd = None
-    game_type_descr = None
-
-    if request.params.has_key('game_type_cd'):
-        game_type_cd = request.params['game_type_cd']
-        try:
-            game_type_descr = DBSession.query(GameType.descr).\
-                filter(GameType.game_type_cd == game_type_cd).\
-                one()[0]
-        except Exception as e:
-            game_type_cd = None
-
-    if request.params.has_key('page'):
-        current_page = request.params['page']
-    else:
-        current_page = 1
-
-    try:
-        rgs_q = recent_games_q(game_type_cd=game_type_cd)
-
-        games = Page(rgs_q, current_page, items_per_page=10, url=page_url)
-
-        # replace the items in the canned pagination class with more rich ones
-        games.items = [RecentGame(row) for row in games.items]
-
-        pgstats = {}
-        for game in games.items:
-            pgstats[game.game_id] = DBSession.query(PlayerGameStat).\
-                    filter(PlayerGameStat.game_id == game.game_id).\
-                    order_by(PlayerGameStat.scoreboardpos).\
-                    order_by(PlayerGameStat.score).all()
-
-    except Exception as e:
-        games           = None
-        pgstats         = None
-        game_type_cd    = None
-        game_type_descr = None
-
-    return {'games':games,
-            'pgstats':pgstats,
-            'game_type_cd':game_type_cd,
-            'game_type_descr':game_type_descr,
-            }
-
-
-def game_index(request):
-    """
-    Provides a list of current games, with the associated game stats.
-    These games are ordered by game_id, with the most current ones first.
-    Paginated.
-    """
-    return _game_index_data(request)
-
-
-def game_index_json(request):
-    """
-    Provides a list of current games, with the associated game stats.
-    These games are ordered by game_id, with the most current ones first.
-    Paginated. JSON.
-    """
-    return [{'status':'not implemented'}]
-
-
 def _game_info_data(request):
     game_id = request.matchdict['id']
 
@@ -136,47 +69,6 @@ def _game_info_data(request):
                     captimes.append(pgstat)
             captimes = sorted(captimes, key=lambda x:x.fastest)
 
-        teamscores = {}
-        for pgstat in pgstats:
-            if pgstat.team in [5,14,13,10]:
-                team = pgstat.team_html_color()
-                if pgstat.teamscore is not None:
-                    if not teamscores.has_key(team):
-                        teamscores[team] = pgstat.teamscore
-                    else:
-                        if teamscores[team] != pgstat.teamscore:  # this should not happen!
-                            teamscores[team] = None
-        if len(teamscores) == 0:
-            teamscores = None
-            
-        ### RANDOM SCORES FOR TESTING
-        teams = ["red","blue","yellow","pink"]
-        random.shuffle(teams)
-        teamscores = {}
-        for k in range(random.randint(2,4)):
-            team = teams[k-1]
-            teamscores[team] = random.randint(-5,150)
-        ### END
-        
-        #TeamInfo = namedtuple('TeamInfo', ['team','scoreboardpos','playercount','teamscore'])
-        #
-        #teams = {}
-        #last_pgs = pgstats[0]
-        #for pgstat in pgstats:
-        #    if pgstat.team != last_pgs.team:
-        #        teams[last_pgs.scoreboardpos] = TeamInfo(
-        #                team=last_pgs.team,
-        #                scoreboardpos=last_pgs.scoreboardpos,
-        #                playercount=pgstat.scoreboardpos-last_pgs.scoreboardpos,
-        #                teamscore=last_pgs.teamscore)
-        #        last_pgs = pgstat
-        #teams[last_pgs.scoreboardpos] = TeamInfo(
-        #        team=last_pgs.team,
-        #        scoreboardpos=last_pgs.scoreboardpos,
-        #        playercount=pgstat.scoreboardpos-last_pgs.scoreboardpos,
-        #        teamscore=last_pgs.teamscore)
-        #print teams
-
         pwstats = {}
         for (pwstat, pgstat, weapon) in DBSession.query(PlayerWeaponStat, PlayerGameStat, Weapon).\
                 filter(PlayerWeaponStat.game_id == game_id).\
@@ -206,7 +98,6 @@ def _game_info_data(request):
         tgstats = None
         pwstats = None
         captimes = None
-        teams = None
         show_elo = False
         show_latency = False
         stats_by_team = None
@@ -220,8 +111,6 @@ def _game_info_data(request):
             'tgstats':tgstats,
             'pwstats':pwstats,
             'captimes':captimes,
-            'teams':teams,
-            'teamscores':teamscores,
             'show_elo':show_elo,
             'show_latency':show_latency,
             'stats_by_team':stats_by_team,