mercurial/templates/static/mercurial.js
changeset 19746 9ad7dd9574a9
parent 19743 fdd41257def8
child 19754 c35e8805cf53
equal deleted inserted replaced
19745:22a70f31e3e9 19746:9ad7dd9574a9
   343 }
   343 }
   344 
   344 
   345 function appendFormatHTML(element, formatStr, replacements) {
   345 function appendFormatHTML(element, formatStr, replacements) {
   346     element.insertAdjacentHTML('beforeend', format(formatStr, replacements));
   346     element.insertAdjacentHTML('beforeend', format(formatStr, replacements));
   347 }
   347 }
       
   348 
       
   349 function ajaxScrollInit(urlFormat,
       
   350                         nextHash,
       
   351                         nextHashRegex,
       
   352                         containerSelector,
       
   353                         messageFormat) {
       
   354     updateInitiated = false;
       
   355     container = document.querySelector(containerSelector);
       
   356 
       
   357     function scrollHandler() {
       
   358         if (updateInitiated) {
       
   359             return;
       
   360         }
       
   361 
       
   362         var scrollHeight = document.documentElement.scrollHeight;
       
   363         var clientHeight = document.documentElement.clientHeight;
       
   364         var scrollTop = document.body.scrollTop
       
   365             || document.documentElement.scrollTop;
       
   366 
       
   367         if (scrollHeight - (scrollTop + clientHeight) < 50) {
       
   368             updateInitiated = true;
       
   369 
       
   370             if (!nextHash) {
       
   371                 return;
       
   372             }
       
   373 
       
   374             makeRequest(
       
   375                 format(urlFormat, {hash: nextHash}),
       
   376                 'GET',
       
   377                 function onstart() {
       
   378                 },
       
   379                 function onsuccess(htmlText) {
       
   380                     var m = htmlText.match(nextHashRegex);
       
   381                     nextHash = m ? m[1] : null;
       
   382 
       
   383                     var doc = docFromHTML(htmlText);
       
   384                     var nodes = doc.querySelector(containerSelector).children;
       
   385                     while (nodes.length) {
       
   386                         var node = nodes[0];
       
   387                         node = document.adoptNode(node);
       
   388                         container.appendChild(node);
       
   389                     }
       
   390                     process_dates();
       
   391                 },
       
   392                 function onerror(errorText) {
       
   393                 },
       
   394                 function oncomplete() {
       
   395                     updateInitiated = false;
       
   396                     scrollHandler();
       
   397                 }
       
   398             );
       
   399         }
       
   400     }
       
   401 
       
   402     window.addEventListener('scroll', scrollHandler);
       
   403     window.addEventListener('resize', scrollHandler);
       
   404     scrollHandler();
       
   405 }