mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-30 17:36:40 +00:00
Leaderboard working with sorting of single column
This commit is contained in:
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>
|
||||
|
||||
Reference in new issue
Block a user