Sorting now seems to work correctly

This commit is contained in:
Simon Pamies committed 2011-06-13 22:17:08 +02:00
1 parent fe35d208d0
commit 72a0ec1d9d
3 files changed
+48 -16

No files matched your search

@@ -543,6 +543,7 @@ def moderatorLiveData(context, request):
sortby = request.params.get('sortby', 'name')
race_range = request.params.get('races', '1:3')
competitor_range = request.params.get('competitors', '1:20')
direction = request.params.get('direction', 'asc');
if race_range in ['null', 'undefined']:
race_range = '1:3'
@@ -552,6 +553,9 @@ def moderatorLiveData(context, request):
competitors = view.competitorsSortedBy(event.name, sortby.strip())
if direction == 'asc':
competitors.reverse()
races = []
for racename in races_list:
races.append(model.RaceImpl.queryOneBy(name=racename, event=event.name))
@@ -592,5 +596,6 @@ def moderatorLiveData(context, request):
data.append({'name': competitor.name, 'raceranks': racedata, 'markranks': markranks, 'legvalues': legvalues,
'nationality': competitor.nationality, 'global_rank': competitor.total})
return data
c_range_start, c_range_end = competitor_range.split(':')
return data[int(c_range_start)-1:int(c_range_end)]
@@ -1,20 +1,47 @@
var global_sortkey = 'name';
var global_direction = 'desc';
var global_race = '1:3';
var global_competitors = '1:20';
var loader_image = "<img style='margin: 3px 0px 3px 3px' src='/static/images/ajax-loader-greybg.gif'/>";
/*
* Loads leaderboard data. Parameters:
*
* races: Slice that indicates which data to load (e.g. "0:2")
* races: Slice that indicates which data to load (e.g. "1:3")
* sortby: Sorting parameters (e.g "1,1,1")
* competitors: Slice indicating which competitors to show (e.g. "0:20")
* competitors: Slice indicating which competitors to show (e.g. "1:20")
*/
function loadLeaderboard(races, sortby, competitors) {
function loadLeaderboard(races, sortby, competitors, direction) {
showLoader();
$.getJSON('/++/moderatorLiveData',
{races:races, sortby:sortby, competitors:competitors},
{races:races, sortby:sortby, competitors:competitors, direction:direction},
function(data) {
displayLeaderboard(data);
hideLoader();
}
);
}
function showLoader() {
$('.refresh-btn').html(loader_image);
}
function hideLoader() {
$('.refresh-btn').html('');
}
function sortBy(param, element) {
element.toggleClass('sort-asc').toggleClass('sort-desc');
if (element.hasClass('sort-asc'))
global_direction = 'asc';
else global_direction = 'desc';
global_sortkey = param;
loadLeaderboard(global_race, param, global_competitors, global_direction);
}
function yieldValue(element, newvalue) {
element.html(newvalue);
}
@@ -35,8 +35,8 @@
<!-- / MAIN INTERFACE -->
<div id='main-interface'>
<div class='blue-table'>
<a class='refresh-btn' href='javascript:;' onclick='loadLeaderboard(null, "1,1");'></a>
<a class='sort-rank sort-asc' href='#'></a>
<a class='refresh-btn' href='javascript:;' onclick=''><img src='/static/images/ajax-loader-greybg.gif'/></a>
<a class='sort-rank sort-asc' href='javascript:;' onclick='sortBy("total", $(this))'></a>
<table id='overall-clipping'>
<tbody>
<tal:for repeat="clpos range(1,21)">
@@ -77,7 +77,7 @@
</ul>
<span>1</span>
</a>
<a class='main-box-sort sort-asc' href='#'></a>
<a class='main-box-sort sort-asc' href='javascript:;' onclick='sortBy("${raceid}", $(this))'></a>
</div>
<tal:for repeat="leg event.marks[int(raceid)-1]">
@@ -85,7 +85,7 @@
<!-- / SECOND ELEMENT WITH LIST -->
<div class='leg-box'>
<span>M${markid}</span>
<a class='leg-box-sort sort-asc' href='#'></a>
<a class='leg-box-sort sort-asc' href='javascript:;' onclick='sortBy("${raceid},${markid}", $(this))'></a>
<a class='leg-box-active' href='javascript:;' onclick='$(this).closest(".leg-wrap").find(".table-box, .race-table").toggle();'>
<ul>
<tal:for repeat="markrow range(1,21)">
@@ -100,7 +100,7 @@
<li id='race-${raceid}-mark-${markid}-legrow-${legrow}'></li>
</tal:for>
</ul>
<a class='table-box-sort sort-asc' href='#'></a>
<a class='table-box-sort sort-asc' href='javascript:;' onclick='sortBy("${raceid},${markid},1", $(this))'></a>
</div>
<table class='race-table' id='r1-m1' style="display:none;">
<thead>
@@ -128,22 +128,22 @@
<tbody>
<tr rowid='0'>
<td class='table-sorting' colid='1'>
<a class='sort-asc' href='#'></a>
<a class='sort-asc' href='javascript:;' onclick='sortBy("${raceid},${markid},3", $(this))'></a>
</td>
<td class='table-sorting' colid='2'>
<a class='sort-asc' href='#'></a>
<a class='sort-asc' href='javascript:;' onclick='sortBy("${raceid},${markid},2", $(this))'></a>
</td>
<td class='table-sorting' colid='3'>
<a class='sort-asc' href='#'></a>
<a class='sort-asc' href='javascript:;' onclick='sortBy("${raceid},${markid},4", $(this))'></a>
</td>
<td class='table-sorting' colid='4'>
<a class='sort-asc' href='#'></a>
<a class='sort-asc' href='javascript:;' onclick='sortBy("${raceid},${markid},6", $(this))'></a>
</td>
<td class='table-sorting' colid='5'>
<a class='sort-asc' href='#'></a>
<a class='sort-asc' href='javascript:;' onclick='sortBy("${raceid},${markid},8", $(this))'></a>
</td>
<td class='table-sorting' colid='6'>
<a class='sort-asc' href='#'></a>
<a class='sort-asc' href='javascript:;' onclick='sortBy("${raceid},${markid},7", $(this))'></a>
</td>
</tr>
<tal:for repeat="valrow range(1,21)">