diff options
author | Patrick Davison <snapwilliam@gmail.com> | 2013-01-08 01:53:05 -0800 |
---|---|---|
committer | Patrick Davison <snapwilliam@gmail.com> | 2013-01-08 01:53:05 -0800 |
commit | 6b8c58ac2d4de502421acef48f4434bee605633f (patch) | |
tree | b6ed4553388d0058952a987734a317ecfaea13f9 /js/scores.js | |
parent | a431308aa3c6c698d23b45bf5e1f905123e0cba5 (diff) | |
download | pathery-6b8c58ac2d4de502421acef48f4434bee605633f.tar.xz |
Challenges Implementation. LOTS of stuff
Fixed an issue with loading best solution from logged out to logged in state.
Commented out a lot of firephp stuff; feel free to uncomment.
Diffstat (limited to 'js/scores.js')
-rw-r--r-- | js/scores.js | 224 |
1 files changed, 218 insertions, 6 deletions
diff --git a/js/scores.js b/js/scores.js index 0c1383f..734683a 100644 --- a/js/scores.js +++ b/js/scores.js @@ -28,10 +28,12 @@ function scoresRequestPage(mapid, page) { ajax.runAJAX();// Do it!
return true;
}
+
function scoresRequestLoading() {
//Signify that it's working in some manner?
//console.log("I'm loading teh page...");
}
+
function scoresRequestPageDone() {
//console.log("Request Page Done", ajax.response);
var JO = decryptJSON(ajax.response);
@@ -46,6 +48,7 @@ function scoresRequestPageDone() { }
}
}
+
function scoresUpdatePage(mapid, page, html) {
// console.log("Updating Page", mapid, page);
scoresPreparePage(mapid, page);
@@ -55,6 +58,7 @@ function scoresUpdatePage(mapid, page, html) { scoresShowPage(mapid, page);
}
}
+
function scoresShowMyPage(mapid) {
//Future use
}
@@ -101,6 +105,7 @@ function scoresPreparePage (mapid, page) { }
return true;
}
+
function scoresFormatPage(JO) {
// console.log("Formating page");
@@ -132,14 +137,14 @@ function scoresFormatPage(JO) { styleClass = 'border-top: 6px solid #777799;';
p = p+ "<tr style='"+styleClass+" background-color: "+u.background+"; color:"+u.displayColor+";' title='Scored "+scoredLocalTime.format("h:MM:ss TT")+"'>";
- p = p+ "<td style='text-align:left;'>";
+ p = p+ "<td class='scoreMedal'>";
if (u.medal == 'gold') {
- p = p+ "<img title='Current Champion' src='../images/MedalGoldCAR.png' style='width:32px;height:32px;vertical-align:middle'>";
+ p = p+ "<img title='Current Champion' src='../images/MedalGoldCAR.png'>";
} else if (u.medal == 'silver') {
- p = p+ "<img title='Tied Top Score' src='../images/MedalSilverCAR.png' style='width:32px;height:32px;vertical-align:middle'>";
+ p = p+ "<img title='Tied Top Score' src='../images/MedalSilverCAR.png'>";
} else {
- p = p+ "<img src='../images/blank.png' style='width:32px;height:32px;vertical-align:middle'>";
+ p = p+ "<img src='../images/blank.png'>";
}
p = p+ i+ "</td>";
p = p+ "<td style='vertical-align: middle;'>";
@@ -148,7 +153,7 @@ function scoresFormatPage(JO) { p = p+ " </div>";
p = p+ " </div>";
p = p+ "";
- p = p+ "<span style='float:left; padding: 5px 0px 3px 3px; width:120px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap; '><a href='achievements?id="+u.ID+"' style='color:"+u.displayColor+"'>"+u.display+"</a></span>";
+ p = p+ "<span class='scoreName'><a href='achievements?id="+u.ID+"' style='color:"+u.displayColor+"'>"+u.display+"</a></span>";
p = p+ "</td>";
p = p+ "<td style='text-align:right;'>"+u.moves+"</td>";
p = p+ "</tr>";
@@ -181,6 +186,7 @@ function scoresFormatPage(JO) { //p = JO.navi+p;
return p;
}
+
function scoresFormatPageNavi(JO) {
var r = '';
var showedPrevPage = true;
@@ -208,4 +214,210 @@ function scoresFormatPageNavi(JO) { }
return r;
-}
\ No newline at end of file +}
+
+
+//Memberlist related functions:
+var membersPages = new Object;
+var membersCurrentPage = 1;
+
+function membersRequestPage(page) {
+ console.log('membersRequestPage', page);
+ if (typeof(ajax) != 'object') {
+ setTimeout(function() {membersRequestPage(page)},200);
+ return false;
+ }
+ // Ask again if it's busy.
+ switch (ajax.xmlhttp.readyState) {
+ case 4:
+ case 0:
+ break;
+ default:
+ setTimeout(function() {membersRequestPage(page)},300);
+ return false;
+ }
+
+ //console.log("Requesting Page", page, ajax.inUse);
+ // == Additionally, check for achievements.
+ ajax.requestFile = "do.php?r=reqMemberPage&reqPage="+page;
+ ajax.onCompletion = membersRequestPageDone; // Specify function to be executed on response.
+ //ajax.onLoading = '';
+ //ajax.onLoaded = '';
+ //ajax.onFail = '';
+ ajax.runAJAX();// Do it!
+ return true;
+}
+
+function membersRequestPageDone() {
+ //console.log("Request Page Done", ajax.response);
+ var JO = decryptJSON(ajax.response);
+ if (JO == undefined)
+ return;
+ membersUpdatePage(JO.page, membersFormatPage(JO));
+}
+
+function membersShowPage(page) {
+ page = page - 0;
+ console.log('membersShowPage', page);
+ if (membersPreparePage(page) == false) {
+ membersCurrentPage = page;
+ //Signify some sort of loadingness?
+ //Request Page
+ membersRequestPage(page);
+ return;
+ }
+
+ if (typeof(membersPages[page].html) === 'undefined') {
+ membersRequestPage(page);
+ membersCurrentPage = page;
+ return;
+ }
+ document.getElementById('members').innerHTML = membersPages[page].html
+
+ //Also; update the page
+
+ if (page != membersCurrentPage) {
+ membersRequestPage(page);
+ }
+ membersCurrentPage = page;
+}
+
+function membersPreparePage (page) {
+ if (typeof(membersPages) != 'object') {
+ membersPages = new Object;
+ membersPages[page] = new Object;
+ return false;
+ }
+ if (typeof(membersPages[page]) != 'object') {
+ membersPages[page] = new Object;
+ return false;
+ }
+ return true;
+}
+
+function membersUpdatePage(page, html) {
+ console.log("Updating Page", page);
+ membersPreparePage(page);
+ membersPages[page].html = html;
+ if (page == membersCurrentPage) {
+ membersShowPage(page);
+ }
+}
+
+function membersFormatPageNavi(JO) {
+ var r = '';
+ var showedPrevPage = true;
+ for (var i = 1; i <= JO.pageCount; i++) {
+ if (
+ (JO.page > i - 3 && JO.page < i + 3)
+ || (i == 1)
+ || (i == JO.pageCount)
+ || (i == JO.userPage)
+ ) {
+
+ if (!showedPrevPage)
+ r = r + ' ... ';
+ if (JO.page == i) {
+ r = r + " <b style='color:#aaaabb; font-size:150%;'>" + i + "</b>";
+ } else if (i == JO.userPage) {
+ r = r + " <a href='javascript:membersShowPage("+i+")' style='color:#99cc99;' title='You are on this page'><i>" + i + '</i></a>';
+ } else {
+ r = r + " <a href='javascript:membersShowPage("+i+")'>" + i + '</a>';
+ }
+ showedPrevPage = true;
+ } else {
+ showedPrevPage = false;
+ }
+ }
+
+ return r;
+}
+
+function membersFormatPage(JO) {
+ // console.log("Formating page");
+
+ var p = "<table class='score'>";
+ if (JO.pageCount > 1) {
+ var navi = membersFormatPageNavi(JO);
+ p = p+"<tr><td colspan='9' style='text-align:center;'>"+navi+"</td></tr>";
+ }
+
+ p = p+"<tr title='Updated "+JO.updateTime+"'>";
+ p = p+"<th>Rank</th>";
+ p = p+"<th style='width:125px; overflow:hidden; text-align:left; padding-left:42px;'>Name</th>";
+ p = p+"<th>Mazes</th>";
+ p = p+"<th>Moves</th>";
+ p = p+"<th>Past Week</th>";
+ p = p+"<th>Wins</th>";
+ p = p+"<th>Ties</th>";
+ p = p+"<th>Joined</th>";
+ p = p+"<th>Last Login</th>";
+ p = p+"</tr>";
+
+ var showedLastUser = true;
+ var x = 0;
+
+ var previousI = 0;
+
+ for (var i in JO.users) {
+ var u = JO.users[i];
+ var scoredLocalTime = new Date();
+ scoredLocalTime.setTime(scoredLocalTime.getTime() - u.secondsSinceScored * 1000);
+
+ var styleClass = '';
+
+ if (previousI != i + 1)
+ if (previousI < i - 1 && previousI != 0)
+ styleClass = 'border-top: 6px solid #777799;';
+
+ p = p+ "<tr style='"+styleClass+" background-color: "+u.background+"; color:"+u.displayColor+";' title='Scored "+scoredLocalTime.format("h:MM:ss TT")+"'>";
+ p = p+ "<td style='text-align:left;'>";
+ p = p+ i+ "</td>";
+ p = p+ "<td style='vertical-align: middle;'>";
+ p = p+ " <div class='grid_td' style='float:left; width:35px; height:35px; background:"+u.wallColor+" url(images/marks/"+u.wallEmblem+");'>";
+ p = p+ " <div style='background-color:transparent;' class='grid_td_inner grid_td_rocks'>";
+ p = p+ " </div>";
+ p = p+ " </div>";
+ p = p+ "";
+ p = p+ "<span class='scoreName'><a href='achievements?id="+u.ID+"' style='color:"+u.displayColor+"'>"+u.display+"</a></span>";
+ p = p+ "</td>";
+
+ p = p+ "<td style='text-align:right;'>"+u.totalMazes+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.totalMoves+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.totalMovesThisWeek+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.totalWins+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.totalTies+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.dateJoined+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.dateLogin+"</td>";
+ p = p+ "</tr>";
+
+ previousI = i;
+ }
+
+ //p = p+"<tr><th colspan='3' style='text-align:center;'>"+navi+"</th></tr>";
+ p = p+"</table>";
+
+ var nextPage = JO.page - 0 + 1;
+ var prevPage = JO.page - 1;
+
+ if (JO.pageCount > 1) {
+ if (JO.page < JO.pageCount) {
+ p = p+"<a href='javascript:membersShowPage("+nextPage+")' class='rightBtn scoreActive'>></a>";
+ } else
+ p = "<div class='rightBtn scoreDisabled'>></div>"+p;
+ if (JO.page > 1) {
+ p = "<a href='javascript:membersShowPage("+prevPage+")' class='leftBtn scoreActive'><</a>"+p;
+ } else
+ p = "<div class='leftBtn scoreDisabled'><</div>"+p;
+ }
+ p = "<div class='scoreContainer1'>"+p+"</div>";
+
+ //console.log(p);
+ //console.log('jo page', JO.page);
+ //console.log('jo pagecount', JO.pageCount);
+ //p = JO.navi+p;
+ return p;
+}
+
+
+
|