Share Pastebin
Guest
Public paste!

Sid

By: a guest | Dec 3rd, 2008 | Syntax: JavaScript | Size: 6.14 KB | Hits: 151 | Expires: Never
Copy text to clipboard
  1. var start = 0;
  2. getMaxEntries();
  3.  
  4. function getMaxEntries() {
  5.   var entries = new XMLHttpRequest();
  6.   var max = 0;
  7.   entries.open('GET', '/json-pushes?startID=0&endID=5', true);
  8.   entries.onreadystatechange = function() {
  9.   if(entries.readyState == 4)  {
  10.     if(entries.status != 404) {
  11.       var entryData = new Function("return " + entries.responseText) ();
  12.       max = entryData[1].max;
  13.      
  14.       start = max - 20;
  15.     }
  16.   }
  17.   else
  18.     return 0;
  19.  }
  20.  entries.send(null);
  21. }
  22.  
  23. function renderMorePushLogResults() {
  24.   var end = start;
  25.   start = start - 20
  26.   var pushCheckins = new XMLHttpRequest();
  27.   pushCheckins.open('GET', '/json-pushes?startID=' + start + '&endID=' + end, true);
  28.   pushCheckins.onreadystatechange = function() {
  29.     if(pushCheckins.readyState == 4)  {
  30.       if(pushCheckins.status != 404) {
  31.         var loader = document.getElementById("loader");
  32.         loader.innerHTML = '<img src="{url}static/ajax-loader.gif" align="right" />';
  33.         var pushData = new Function("return " + pushCheckins.responseText) ();
  34.         var counter = 0;
  35.         for(var i = end; i > start; i--) {
  36.           var trScroll = document.createElement("tr");
  37.           if(counter == 0) {
  38.             trScroll.className = "parity0";
  39.             counter = 1;
  40.           } else {
  41.               //trScroll.style.backgroundColor = "#f6f6f0";
  42.               counter = 0;
  43.               trScroll.className = "parity1";
  44.           }      
  45.           var tdScrollUser = document.createElement("td");
  46.           tdScrollUser.width = "184px";
  47.           tdScrollUser.innerHTML += pushData[i].user + '<br />' + pushData[i].formattedDate;
  48.           //Create changset link
  49.           var tdScrollChangeset = document.createElement("td");
  50.           tdScrollChangeset.innerHTML +=
  51.             '<a href=\"/rev/' +
  52.             pushData[i].individualChangeset.substring(0, 12) +
  53.             '\">' +
  54.             pushData[i].individualChangeset.substring(0, 12) +
  55.             '</a>';
  56.           //Create buglink
  57.           var bugInDesc = (pushData[i].desc).toLowerCase().indexOf("bug");
  58.           if(bugInDesc != -1) {
  59.             var bugLinkName = (pushData[i].desc).substring(bugInDesc, bugInDesc + 10);
  60.             var bugNumber = bugLinkName.substring(4, 10);
  61.             var bugLink =
  62.               (pushData[i].desc).substring(0, bugInDesc) +
  63.               '<a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=' +
  64.               bugNumber +
  65.               '\">' +
  66.               bugLinkName +
  67.               '</a>' +
  68.               (pushData[i].desc).substring(bugInDesc + 10, (pushData[i].desc).length);
  69.           } else { //No bug provided
  70.               var bugLink = pushData[i].desc;
  71.           }
  72.           var tdScrollAuthorDesc = document.createElement("td");
  73.           tdScrollAuthorDesc.innerHTML += '<strong>' + pushData[i].author + ' &mdash ' + bugLink + '</strong>';
  74.           trScroll.appendChild(tdScrollUser);
  75.           trScroll.appendChild(tdScrollChangeset);
  76.           trScroll.appendChild(tdScrollAuthorDesc);
  77.           loader.innerHTML = "";
  78.           document.getElementById("titlePush").appendChild(trScroll);
  79.  
  80.           //Check whether it is a merge changeset or not
  81.           if(pushData[i].MergeData != []) {
  82.             for(var j = 0; j < pushData[i].mergeData.length; j++) {
  83.               if(pushData[i].mergeData[j] != "") {
  84.                 var mergeStr = pushData[i].mergeData[j];
  85.                 for(var k = 0; k < pushData[i].mergeData[j].length; k++) {
  86.                   var actualMergeStr = mergeStr[k].split('|-|');
  87.                   var mergeC = actualMergeStr[0];
  88.                   var mergeUser = actualMergeStr[1];
  89.                   var mergeDesc = actualMergeStr[2];
  90.                   if(mergeDesc != pushData[i].desc) {
  91.                     var trScrollMerge = document.createElement("tr");
  92.                     trScrollMerge.style.backgroundColor = trScroll.style.backgroundColor;
  93.                     var tdScroll_MergeUser = document.createElement("td");
  94.                     tdScroll_MergeUser.width = "184px";
  95.                    
  96.                     //Create changset link
  97.                     var tdScroll_MergeC = document.createElement("td");
  98.                     tdScroll_MergeC.innerHTML +=
  99.                       '<a href=\"/rev/' +
  100.                       mergeC.substring(0, 12) +
  101.                       '\">' +
  102.                       mergeC.substring(0, 12) +
  103.                       '</a>';    
  104.                     //Create buglink
  105.                     var merge_bugInDesc = mergeDesc.toLowerCase().indexOf("bug");
  106.                     if(merge_bugInDesc != -1) {
  107.                       var merge_bugLinkName = mergeDesc.substring(merge_bugInDesc, merge_bugInDesc + 10);
  108.                       var merge_bugNumber = merge_bugLinkName.substring(4, 10);
  109.                       var merge_bugLink =
  110.                         mergeDesc.substring(0, merge_bugInDesc) +
  111.                         '<a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=' +
  112.                         merge_bugNumber +
  113.                         '\">' +
  114.                         merge_bugLinkName +
  115.                         '</a>' +
  116.                         mergeDesc.substring(merge_bugInDesc + 10, mergeDesc.length);
  117.                     } else { //No bug provided
  118.                         var merge_bugLink = mergeDesc;
  119.                     }
  120.                     var tdScroll_MergeAuthorDesc = document.createElement("td");
  121.                     tdScroll_MergeAuthorDesc.innerHTML += '<strong>' + mergeUser + ' &mdash ' + merge_bugLink + '</strong>';
  122.                     trScrollMerge.appendChild(tdScroll_MergeUser);
  123.                     trScrollMerge.appendChild(tdScroll_MergeC);
  124.                     trScrollMerge.appendChild(tdScroll_MergeAuthorDesc);
  125.                     document.getElementById("titlePush").appendChild(trScrollMerge);
  126.                   }
  127.                 }
  128.               }
  129.             }
  130.           }
  131.         }    
  132.       }
  133.     }
  134.   }
  135.   pushCheckins.send(null);
  136. }
  137.  
  138. $(window).scroll(function() {
  139.   if(start > 0) {
  140.     if($(window).scrollTop() == $(document).height() - $(window).height()) {
  141.       renderMorePushLogResults();
  142.     }
  143.   }
  144. });