Leaderboard working with sorting of single column

This commit is contained in:
Simon Pamies committed 2011-06-13 20:30:24 +02:00
1 parent a179aa9fe4
commit 93a8ff9f92
3 files changed
+44 -11

No files matched your search

@@ -540,21 +540,24 @@ def moderatorLiveData(context, request):
view = core.BaseView(context, request)
event = view.currentLeaderboardEvent()
sortby = request.params.get('sortby', '')
sortby = request.params.get('sortby', 'name')
race_range = request.params.get('races', '1:3')
competitor_range = request.params.get('competitors', '1:20')
if race_range in ['null', 'undefined']:
race_range = '1:3'
race_start_index, race_end_index = race_range.split(':')
races_list = event.races[int(race_start_index)-1:int(race_end_index)]
competitors = model.CompetitorImpl.queryBy(event=event.name)
competitors = view.competitorsSortedBy(event.name, sortby.strip())
races = []
for racename in races_list:
races.append(model.RaceImpl.queryOneBy(name=racename, event=event.name))
# list of competitors with corresponding data
data = {}
data = []
for competitor in competitors:
racedata = competitor.races[int(race_start_index)-1:int(race_end_index)]
@@ -582,8 +585,7 @@ def moderatorLiveData(context, request):
racecounter += 1
cd = data.setdefault(competitor.name, {})
cd.update({'raceranks': racedata, 'markranks': markranks, 'legvalues': legvalues,
data.append({'name': competitor.name, 'raceranks': racedata, 'markranks': markranks, 'legvalues': legvalues,
'nationality': competitor.nationality, 'global_rank': competitor.total})
return data
@@ -15,20 +15,26 @@ function loadLeaderboard(races, sortby, competitors) {
);
}
function yieldValue(element, newvalue) {
element.html(newvalue);
}
/**
* Puts data into the right context for the leaderboard
*/
function displayLeaderboard(data) {
rowid = 1;
for (key in data) {
competitor = data[key];
for (cpos in data) {
competitor = data[cpos];
/* always change global rank */
$('#clipping-'+rowid+'-1 span').html(competitor.global_rank);
name_element = $('#clipping-'+rowid+'-3 span');
if (true || name_element.html() == key) {
if (name_element.html() != competitor.name) {
/* competitor position has changed - refresh whole line */
name_element.html(key);
$('#clipping-'+rowid+'-1 span').html(competitor.global_rank);
name_element.html(competitor.name);
$('#clipping-'+rowid+'-2 span').html(competitor.nationality);
/* now set values independent what has been there before */
@@ -55,6 +61,29 @@ function displayLeaderboard(data) {
}
} else {
/* check if values have changed */
name_element.html(competitor.name);
$('#clipping-'+rowid+'-2 span').html(competitor.nationality);
for (racerank in competitor.raceranks) {
yieldValue($('#race-'+racepos+'-rankrow-'+rowid), competitor.raceranks[racerank]);
markpos = 1;
for (markrank in competitor.markranks[racepos-1]) {
yieldValue($('#race-'+racepos+'-mark-'+markpos+'-row-'+rowid), competitor.markranks[racepos-1][markrank]);
legpos = 1;
for (legvalue in competitor.legvalues[racepos-1][markpos-1]) {
if (legvalue == 0) {
yieldValue($('#race-'+racepos+'-mark-'+markpos+'-legrow-'+rowid), parseFloat(competitor.legvalues[racepos-1][markpos-1][legvalue]).toFixed());
} else {
yieldValue($('#race-'+racepos+'-mark-'+markpos+'-valrow-'+rowid+'-pos-'+(legpos-1)+' span'), competitor.legvalues[racepos-1][markpos-1][legvalue]);
}
legpos += 1;
}
markpos += 1;
}
}
}
rowid += 1;
@@ -67,5 +96,7 @@ $(document).ready(function() {
$("#rootwrapper").css("height", wHeight);
$("#appinterface").css("height", wHeight-131);
$.ajaxSetup({cache:false});
loadLeaderboard();
});
@@ -35,7 +35,7 @@
<!-- / MAIN INTERFACE -->
<div id='main-interface'>
<div class='blue-table'>
<a class='refresh-btn' href='javascript:;' onclick='loadLeaderboard();'></a>
<a class='refresh-btn' href='javascript:;' onclick='loadLeaderboard(null, "1,1");'></a>
<a class='sort-rank sort-asc' href='#'></a>
<table id='overall-clipping'>
<tbody>