This repository has been archived on 2024-07-18. You can view files and clone it, but cannot push or open issues or pull requests.
lwb5/site/static/beta5/js/pg_rank.js

238 lines
8.1 KiB
JavaScript
Raw Normal View History

2016-01-10 11:01:49 +01:00
var pages = ['Summary','General','Details','Alliance','Round','Damage'];
var comps = ['summary','genListing','detListing','allListing','rndListing','idrListing'];
var rkPage = null;
var summary, genListing, detListing, allListing, rndListing, idrListing;
var currentPage = null;
var rantt;
Rankings = {};
Rankings.Headers = {};
Rankings.makeListing = function(rpc, dataType, nfText, ppText, sText, sMode) {
var ls = new Component.Listing(rpc, 3600, dataType, 'list', 'row', 'hdr');
ls.notFoundText = nfText;
ls.getDocID = function() { return 'rkpage'; }
ls.getElement = function() { return document.getElementById('rkpage'); };
ls.setPageController(new Component.Listing.PageController(Rankings.pageText), true);
var c = new Component.Listing.PageSizeController(ppText, 5, 25, 5);
c.select.select('15');
ls.setPageSizeController(c, true);
c = new Component.Listing.SearchController(sText);
c.addMode(0, sMode);
c.textField.setMaxLength(15); c.textField.setSize(16);
ls.setSearchController(c, true);
return ls;
}
Rankings.setPage = function (page) { Rankings.setPage.ajax.call(page); }
Rankings.setPage.ajax = new Component.Ajax('setPage');
Rankings.GeneralRankings = function (cache) { Component.Listing.Data.apply(this, [cache]); }
Rankings.GeneralRankings.prototype = new Component.Listing.Data;
Rankings.GeneralRankings.prototype.parse = function (data) {
var a = data.shift().split('#');
var isMe = (a.shift() == '1');
var bb = isMe ? "<b>" : "";
var be = isMe ? "</b>" : "";
this.rank = bb + '#' + formatNumber(a.shift()) + ' / '
+ formatNumber(a.shift()) + " " + Rankings.pointsText + be;
this.player = bb + a.join('#') + be;
}
Rankings.DetailedRankings = function (cache) { Component.Listing.Data.apply(this, [cache]); }
Rankings.DetailedRankings.prototype = new Component.Listing.Data;
Rankings.DetailedRankings.prototype.parse = function (data) {
var a = data.shift().split('#');
var isMe = (a.shift() == '1');
var bb = isMe ? "<b>" : "";
var be = isMe ? "</b>" : "";
this.civRank = bb + '#' + formatNumber(a.shift()) + ' / '
+ formatNumber(a.shift()) + " " + Rankings.pointsText + be;
this.milRank = bb + '#' + formatNumber(a.shift()) + ' / '
+ formatNumber(a.shift()) + " " + Rankings.pointsText + be;
this.finRank = bb + '#' + formatNumber(a.shift()) + ' / '
+ formatNumber(a.shift()) + " " + Rankings.pointsText + be;
this.player = bb + a.join('#') + be;
}
Rankings.AllianceRankings = function (cache) { Component.Listing.Data.apply(this, [cache]); }
Rankings.AllianceRankings.prototype = new Component.Listing.Data;
Rankings.AllianceRankings.prototype.parse = function (data) {
var a = data.shift().split('#');
this.rank = '#' + formatNumber(a.shift()) + ' / '
+ formatNumber(a.shift()) + " " + Rankings.pointsText;
this.alliance = a.join('#');
}
Rankings.Summary = function () {
Component.apply(this, [false]);
this.newSlot('dataReceived');
this.newSlot('startUpdate');
this.newSlot('stopUpdate');
this.newSlot('updateData');
this.timer = new Component.Timer(3600*1000, true);
this.ajax = new Component.Ajax('getPlayerData');
this.md5 = '';
this.loading = true;
this.bindEvent('Hide', 'stopUpdate');
this.ajax.bindEvent('Returned', 'dataReceived', this);
this.bindEvent('Show', 'startUpdate');
this.timer.bindEvent('Tick', 'updateData', this);
}
Rankings.Summary.prototype = new Component;
Rankings.Summary.prototype.getDocID = function() { return 'rkpage'; }
Rankings.Summary.prototype.getElement = function() { return document.getElementById('rkpage'); };
Rankings.Summary.prototype.dataReceived = function (data) {
this.loading = false;
if (data != 'KEEP') {
var a = data.split('#');
this.md5 = a.shift();
this.ptGen = a.shift();
this.rkGen = a.shift();
this.ptCiv = a.shift();
this.rkCiv = a.shift();
this.ptMil = a.shift();
this.rkMil = a.shift();
this.ptFin = a.shift();
this.rkFin = a.shift();
this.ptRnd = a.shift();
this.rkRnd = a.shift();
this.ptDam = a.shift();
this.rkDam = a.shift();
}
this.drawAll();
}
Rankings.Summary.prototype.startUpdate = function () {
this.loading = true;
this.timer.start();
this.drawAll();
this.ajax.call(this.md5);
}
Rankings.Summary.prototype.stopUpdate = function () { this.timer.stop(); }
Rankings.Summary.prototype.updateData = function () { this.ajax.call(this.md5); }
Rankings.Summary.prototype.draw = function () {
var e = this.getElement();
if (!e)
return;
var str;
if (this.loading)
str = '<div style="text-align:center;">'
+ Rankings.Summary.loadingText + '</span>';
else
str = this.getText();
e.innerHTML = str;
}
//----------------------------------------------------------------------------------------------
// GENERAL
//----------------------------------------------------------------------------------------------
function initPage() {
var c;
summary = new Rankings.Summary();
// General rankings
genListing = Rankings.makeListing('getGeneralRankings', Rankings.GeneralRankings,
Rankings.noPlayersFound, Rankings.playersPerPageText, Rankings.searchPlayerText,
"player");
genListing.addField(new Component.Listing.Field(Rankings.Headers.player, true, 'player', 0, 0, 1, 1, 'gname'));
genListing.addField(c = new Component.Listing.Field(Rankings.Headers.ranking, true, 'rank', 1, 0, 1, 1, 'grank'));
genListing.dataCache.sortField = c;
genListing.finalizeLayout();
// Detailed rankings
detListing = Rankings.makeListing('getDetailedRankings', Rankings.DetailedRankings,
Rankings.noPlayersFound, Rankings.playersPerPageText, Rankings.searchPlayerText,
"player");
detListing.addField(new Component.Listing.Field(Rankings.Headers.player, true, 'player', 0, 0, 1, 1, 'dname'));
detListing.addField(new Component.Listing.Field(Rankings.Headers.civRanking, true, 'civRank', 1, 0, 1, 1, 'drank'));
detListing.addField(new Component.Listing.Field(Rankings.Headers.milRanking, true, 'milRank', 2, 0, 1, 1, 'drank'));
detListing.addField(new Component.Listing.Field(Rankings.Headers.finRanking, true, 'finRank', 3, 0, 1, 1, 'drank'));
detListing.finalizeLayout();
// Alliance rankings
allListing = Rankings.makeListing('getAllianceRankings', Rankings.AllianceRankings,
Rankings.noAlliancesFound, Rankings.alliancesPerPageText, Rankings.searchAllianceText,
"alliance");
allListing.addField(new Component.Listing.Field(Rankings.Headers.alliance, true, 'alliance', 0, 0, 1, 1, 'dname'));
allListing.addField(c = new Component.Listing.Field(Rankings.Headers.ranking, true, 'rank', 1, 0, 1, 1, 'drank'));
allListing.dataCache.sortField = c;
allListing.finalizeLayout();
// Round rankings
rndListing = Rankings.makeListing('getRoundRankings', Rankings.GeneralRankings,
Rankings.noPlayersFound, Rankings.playersPerPageText, Rankings.searchPlayerText,
"player");
rndListing.addField(new Component.Listing.Field(Rankings.Headers.player, true, 'player', 0, 0, 1, 1, 'gname'));
rndListing.addField(c = new Component.Listing.Field(Rankings.Headers.ranking, true, 'rank', 1, 0, 1, 1, 'grank'));
rndListing.dataCache.sortField = c;
rndListing.finalizeLayout();
// Damage rankings
idrListing = Rankings.makeListing('getDamageRankings', Rankings.GeneralRankings,
Rankings.noPlayersFound, Rankings.playersPerPageText, Rankings.searchPlayerText,
"player");
idrListing.addField(new Component.Listing.Field(Rankings.Headers.player, true, 'player', 0, 0, 1, 1, 'gname'));
idrListing.addField(c = new Component.Listing.Field(Rankings.Headers.ranking, true, 'rank', 1, 0, 1, 1, 'grank'));
idrListing.dataCache.sortField = c;
idrListing.finalizeLayout();
switchToPage(document.getElementById('rkinit').innerHTML);
}
function switchToPage(page)
{
if (rkPage == page)
return;
if (currentPage)
currentPage.hide();
rkPage = page;
drawRankingsMenu();
var i;
for (i=0;i<pages.length;i++) {
if (pages[i] == rkPage) {
eval('currentPage='+comps[i]);
break;
}
}
currentPage.show();
Rankings.setPage(page);
}
function drawRankingsMenu()
{
var i, rkm = new Array();
for (i=0;i<pages.length;i++)
{
var s = (pages[i] == rkPage) ? '<b>' : ('<a href="#" ' + rantt[30] + ' onClick="switchToPage(\''+pages[i]+'\');return false">');
s += menuText[i] + ((pages[i] == rkPage) ? '</b>' : '</a>');
rkm.push(s);
}
document.getElementById('rkpsel').innerHTML = rkm.join(' - ');
}