From add0c904ee8950c43d83cdc1d65228f43b37bede Mon Sep 17 00:00:00 2001 From: Ant Zucaro <azucaro@gmail.com> Date: Tue, 26 Jan 2016 20:10:28 -0500 Subject: [PATCH] Add another sorting option to player_captimes. You can now sort by two fields: most recent and fastest. This is done with a line at the bottom of the table that allows you to toggle. Fixes #163. --- xonstat/templates/player_captimes.mako | 11 +++++++++-- xonstat/views/player.py | 17 +++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/xonstat/templates/player_captimes.mako b/xonstat/templates/player_captimes.mako index afe2828..8391fb5 100644 --- a/xonstat/templates/player_captimes.mako +++ b/xonstat/templates/player_captimes.mako @@ -17,11 +17,12 @@ <div class="row"> <div class="small-12 columns"> - <h5>Fastest Flag Captures by + <h4>Fastest Flag Captures by <a href="${request.route_url('player_info', id=player.player_id)}"> ${player.nick_html_colors()|n} </a> - </h5> + </h4> + <table class="table-hover table-condensed"> <thead> @@ -45,6 +46,12 @@ </tbody> </table> + % if sort == "fastest": + <p>* sorted by fastest - sort by <a href="${request.route_url('player_captimes', player_id=player.player_id, _query={"sort":"create_dt", "page":page})}">most recent</a> instead</p> + % else: + <p>* sorted by most recent - sort by <a href="${request.route_url('player_captimes', player_id=player.player_id, _query={"sort":"fastest", "page":page})}">fastest</a> instead</p> + % endif + </div> </div> diff --git a/xonstat/views/player.py b/xonstat/views/player.py index faabcba..439f19d 100644 --- a/xonstat/views/player.py +++ b/xonstat/views/player.py @@ -976,7 +976,9 @@ def player_captimes_data(request): if player_id <= 2: player_id = -1; - current_page = request.params.get("page", 1) + page = request.params.get("page", 1) + + sort = request.params.get("sort", "create_dt") try: player = DBSession.query(Player).filter_by(player_id=player_id).one() @@ -987,13 +989,18 @@ def player_captimes_data(request): filter(PlayerCaptime.player_id==player_id).\ filter(PlayerCaptime.game_id==Game.game_id).\ filter(PlayerCaptime.map_id==Map.map_id).\ - filter(Game.server_id==Server.server_id).\ - order_by(expr.desc(PlayerCaptime.create_dt)) + filter(Game.server_id==Server.server_id) + + if sort == "fastest": + pct_q = pct_q.order_by(PlayerCaptime.fastest_cap) + else: + sort = "create_dt" + pct_q = pct_q.order_by(expr.desc(PlayerCaptime.create_dt)) except Exception as e: raise pyramid.httpexceptions.HTTPNotFound - captimes = Page(pct_q, current_page, items_per_page=20, url=page_url) + captimes = Page(pct_q, page, items_per_page=20, url=page_url) # replace the items in the canned pagination class with more rich ones captimes.items = [PlayerCapTime(row) for row in captimes.items] @@ -1002,6 +1009,8 @@ def player_captimes_data(request): "player_id" : player_id, "player" : player, "captimes" : captimes, + "page" : page, + "sort" : sort, } -- 2.39.5