/*
Wikicup Viewer
TODO Highlight cells based on who has the most for each type.
*/
function wikicupSorter()
{
if (mw.config.get('wgPageName') != 'Wikipedia:WikiCup') return false;
mw.util.addCSS('.wikicup-failing td { background-color: #fee; }\
.wikicup-passing td { background-color: #efe; }\
.wikicup-self td { background-color: #ffe; }\
.key-table { float: left; }\
.viewer-information { float: left; margin-left: 2.5em; background-color: #eee; padding: 10px; }\
.viewer-information-header { font-weight: bold; font-size: 1.25em; }\
');
// Script might be broken during the transition periods between rounds
var today = new Date();
var thisYear = today.getFullYear();
// Round 1
var topContestants = 64;
var topWildcards = 0;
function setCutoff(date, contestants, wildcards)
{
if (today >= new Date(thisYear + '-' + date)) topContestants = contestants, topWildcards = wildcards;
}
setCutoff('03-01', 2, 16); // Round 2
setCutoff('05-01', 2, 8); // Round 3
setCutoff('07-01', 2, 4); // Round 4
setCutoff('09-01', 1, 0); // Round 5
var score = $('.headerSort[abbr=Score]').click().click();
var username = mw.config.get('wgUserName');
// Self: #ffe, passing: #efe, failing: #fee
score.each(function()
{
var contestantCount = 0;
$(this).parent().parent().next().children().each(function()
{
var contestant = $(this);
contestant.addClass('wikicup-contestant');
if (contestant.text().match(username)) contestant.addClass('wikicup-self');
if (contestantCount < topContestants) contestant.addClass('wikicup-passing'); // Passing
else contestant.addClass('wikicup-failing'); // Failing
contestantCount++;
});
});
// Now do the wildcards
var failingScores = [];
$('.wikicup-failing').each(function()
{
failingScores.push([$(this), $(this).children(':last').text()]);
});
// Sort failing scores by score
failingScores.sort(function (a, b)
{
if (parseInt(a[1]) < parseInt(b[1])) return 1;
else if (parseInt(a[1]) == parseInt(b[1])) return 0;
else return -1;
});
var wildcards = failingScores.slice(0, topWildcards);
var minWildcardScore;
if (wildcards.length >= 1) minWildcardScore = parseInt(wildcards[wildcards.length - 1][1]);
else minWildcardScore = 'Unknown';
for (var i = 0; i < wildcards.length; i++)
{
wildcards[i][0].addClass('wikicup-passing');
}
/*
Extra data to add next to the Key for the page
*/
var keyTable = $('#Key').parent().next();
keyTable.addClass('key-table');
keyTable.after('<div class="viewer-information"><span class="viewer-information-header">WikiCup Viewer information</span><ul><li><strong>Minimum score required as a wildcard:</strong> ' + minWildcardScore + ' points</li></ul></div><div style="clear: left;"></div>');
}
addOnloadHook(wikicupSorter); // addOnloadHook necessary to allow table to be sortable first