Advertisement
Guest User

Untitled

a guest
May 13th, 2012
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     function fnDataTablesPipeline ( sSource, aoData, fnCallback ) {
  2.         var iPipe = 5; /* Ajust the pipe size */
  3.          
  4.         var bNeedServer = false;
  5.         var sEcho = fnGetKey(aoData, "sEcho");
  6.         var iRequestStart = fnGetKey(aoData, "iDisplayStart");
  7.         var iRequestLength = fnGetKey(aoData, "iDisplayLength");
  8.         var iRequestEnd = iRequestStart + iRequestLength;
  9.         oCache.iDisplayStart = iRequestStart;
  10.          
  11.         /* outside pipeline? */
  12.         if ( oCache.iCacheLower < 0 || iRequestStart < oCache.iCacheLower || iRequestEnd > oCache.iCacheUpper )
  13.         {
  14.             bNeedServer = true;
  15.         }
  16.          
  17.         /* sorting etc changed? */
  18.         if ( oCache.lastRequest && !bNeedServer )
  19.         {
  20.             for( var i=0, iLen=aoData.length ; i<iLen ; i++ )
  21.             {
  22.                 if ( aoData[i].name != "iDisplayStart" && aoData[i].name != "iDisplayLength" && aoData[i].name != "sEcho" )
  23.                 {
  24.                     if ( aoData[i].value != oCache.lastRequest[i].value )
  25.                     {
  26.                         bNeedServer = true;
  27.                         break;
  28.                     }
  29.                 }
  30.             }
  31.         }
  32.          
  33.         /* Store the request for checking next time around */
  34.         oCache.lastRequest = aoData.slice();
  35.          
  36.         if ( bNeedServer )
  37.         {
  38.             if ( iRequestStart < oCache.iCacheLower )
  39.             {
  40.                 iRequestStart = iRequestStart - (iRequestLength*(iPipe-1));
  41.                 if ( iRequestStart < 0 )
  42.                 {
  43.                     iRequestStart = 0;
  44.                 }
  45.             }
  46.              
  47.             oCache.iCacheLower = iRequestStart;
  48.             oCache.iCacheUpper = iRequestStart + (iRequestLength * iPipe);
  49.             oCache.iDisplayLength = fnGetKey( aoData, "iDisplayLength" );
  50.             fnSetKey( aoData, "iDisplayStart", iRequestStart );
  51.             fnSetKey( aoData, "iDisplayLength", iRequestLength*iPipe );
  52.              
  53.             jQuery.post( sSource, aoData, function (data) {
  54.                 /* Callback processing */
  55.                 oCache.lastJson = jQuery.extend(true, {}, data);
  56.    
  57.                 if ( oCache.iCacheLower != oCache.iDisplayStart )
  58.                 {
  59.                     data.aaData.splice( 0, oCache.iDisplayStart-oCache.iCacheLower );
  60.                 }
  61.                 data.aaData.splice( oCache.iDisplayLength, data.aaData.length );
  62.    
  63.                 fnCallback(data)
  64.             },"json" );
  65.         }
  66.         else
  67.         {
  68.             json = jQuery.extend(true, {}, oCache.lastJson);
  69.             json.sEcho = sEcho; /* Update the echo for each response */
  70.             json.aaData.splice( 0, iRequestStart-oCache.iCacheLower ); // <- this line
  71.             json.aaData.splice( iRequestLength, json.aaData.length );
  72.             fnCallback(json);
  73.             return;
  74.         }
  75.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement