var start = 0;
getMaxEntries();
function getMaxEntries() {
var entries = new XMLHttpRequest();
var max = 0;
entries.open('GET', '/json-pushes?startID=0&endID=5', true);
entries.onreadystatechange = function() {
if(entries.readyState == 4) {
if(entries.status != 404) {
var entryData = new Function("return " + entries.responseText) ();
max = entryData[1].max;
start = max - 20;
}
}
else
return 0;
}
entries.send(null);
}
function renderMorePushLogResults() {
var end = start;
start = start - 20
var pushCheckins = new XMLHttpRequest();
pushCheckins.open('GET', '/json-pushes?startID=' + start + '&endID=' + end, true);
pushCheckins.onreadystatechange = function() {
if(pushCheckins.readyState == 4) {
if(pushCheckins.status != 404) {
var loader = document.getElementById("loader");
loader.innerHTML = '<img src="{url}static/ajax-loader.gif" align="right" />';
var pushData = new Function("return " + pushCheckins.responseText) ();
var counter = 0;
for(var i = end; i > start; i--) {
var trScroll = document.createElement("tr");
if(counter == 0) {
trScroll.className = "parity0";
counter = 1;
} else {
//trScroll.style.backgroundColor = "#f6f6f0";
counter = 0;
trScroll.className = "parity1";
}
var tdScrollUser = document.createElement("td");
tdScrollUser.width = "184px";
tdScrollUser.innerHTML += pushData[i].user + '<br />' + pushData[i].formattedDate;
//Create changset link
var tdScrollChangeset = document.createElement("td");
tdScrollChangeset.innerHTML +=
'<a href=\"/rev/' +
pushData[i].individualChangeset.substring(0, 12) +
'\">' +
pushData[i].individualChangeset.substring(0, 12) +
'</a>';
//Create buglink
var bugInDesc = (pushData[i].desc).toLowerCase().indexOf("bug");
if(bugInDesc != -1) {
var bugLinkName = (pushData[i].desc).substring(bugInDesc, bugInDesc + 10);
var bugNumber = bugLinkName.substring(4, 10);
var bugLink =
(pushData[i].desc).substring(0, bugInDesc) +
'<a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=' +
bugNumber +
'\">' +
bugLinkName +
'</a>' +
(pushData[i].desc).substring(bugInDesc + 10, (pushData[i].desc).length);
} else { //No bug provided
var bugLink = pushData[i].desc;
}
var tdScrollAuthorDesc = document.createElement("td");
tdScrollAuthorDesc.innerHTML += '<strong>' + pushData[i].author + ' &mdash ' + bugLink + '</strong>';
trScroll.appendChild(tdScrollUser);
trScroll.appendChild(tdScrollChangeset);
trScroll.appendChild(tdScrollAuthorDesc);
loader.innerHTML = "";
document.getElementById("titlePush").appendChild(trScroll);
//Check whether it is a merge changeset or not
if(pushData[i].MergeData != []) {
for(var j = 0; j < pushData[i].mergeData.length; j++) {
if(pushData[i].mergeData[j] != "") {
var mergeStr = pushData[i].mergeData[j];
for(var k = 0; k < pushData[i].mergeData[j].length; k++) {
var actualMergeStr = mergeStr[k].split('|-|');
var mergeC = actualMergeStr[0];
var mergeUser = actualMergeStr[1];
var mergeDesc = actualMergeStr[2];
if(mergeDesc != pushData[i].desc) {
var trScrollMerge = document.createElement("tr");
trScrollMerge.style.backgroundColor = trScroll.style.backgroundColor;
var tdScroll_MergeUser = document.createElement("td");
tdScroll_MergeUser.width = "184px";
//Create changset link
var tdScroll_MergeC = document.createElement("td");
tdScroll_MergeC.innerHTML +=
'<a href=\"/rev/' +
mergeC.substring(0, 12) +
'\">' +
mergeC.substring(0, 12) +
'</a>';
//Create buglink
var merge_bugInDesc = mergeDesc.toLowerCase().indexOf("bug");
if(merge_bugInDesc != -1) {
var merge_bugLinkName = mergeDesc.substring(merge_bugInDesc, merge_bugInDesc + 10);
var merge_bugNumber = merge_bugLinkName.substring(4, 10);
var merge_bugLink =
mergeDesc.substring(0, merge_bugInDesc) +
'<a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=' +
merge_bugNumber +
'\">' +
merge_bugLinkName +
'</a>' +
mergeDesc.substring(merge_bugInDesc + 10, mergeDesc.length);
} else { //No bug provided
var merge_bugLink = mergeDesc;
}
var tdScroll_MergeAuthorDesc = document.createElement("td");
tdScroll_MergeAuthorDesc.innerHTML += '<strong>' + mergeUser + ' &mdash ' + merge_bugLink + '</strong>';
trScrollMerge.appendChild(tdScroll_MergeUser);
trScrollMerge.appendChild(tdScroll_MergeC);
trScrollMerge.appendChild(tdScroll_MergeAuthorDesc);
document.getElementById("titlePush").appendChild(trScrollMerge);
}
}
}
}
}
}
}
}
}
pushCheckins.send(null);
}
$(window).scroll(function() {
if(start > 0) {
if($(window).scrollTop() == $(document).height() - $(window).height()) {
renderMorePushLogResults();
}
}
});