Advertisement
CesarBalzer

Untitled

Feb 22nd, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Na configuracao
  2. "sAjaxSource": "controller/metodo",
  3. "fnServerData": fnDataTablesPipeline,
  4.  
  5. //Deixei nas ultimas linhas do meu js
  6. var oCache = {
  7.     iCacheLower: -1
  8. };
  9. function fnSetKey(aoData, sKey, mValue) {
  10.     for (var i = 0, iLen = aoData.length; i < iLen; i++) {
  11.         if (aoData[i].name == sKey) {
  12.             aoData[i].value = mValue;
  13.         }
  14.     }
  15. }
  16.  
  17. function fnGetKey(aoData, sKey) {
  18.     for (var i = 0, iLen = aoData.length; i < iLen; i++) {
  19.         if (aoData[i].name == sKey) {
  20.             return aoData[i].value;
  21.         }
  22.     }
  23.     return null;
  24. }
  25.  
  26. function fnDataTablesPipeline(sSource, aoData, fnCallback, ipipe) {
  27.     var iPipe = 2; /* Quantidade de paginas para executar o ajax */
  28.     var bNeedServer = false;
  29.     var sEcho = fnGetKey(aoData, "sEcho");
  30.     var iRequestStart = fnGetKey(aoData, "iDisplayStart");
  31.     var iRequestLength = fnGetKey(aoData, "iDisplayLength");
  32.     var iRequestEnd = iRequestStart + iRequestLength;
  33.     oCache.iDisplayStart = iRequestStart;
  34.     if (oCache.iCacheLower < 0 || iRequestStart < oCache.iCacheLower || iRequestEnd > oCache.iCacheUpper)
  35.     {
  36.         bNeedServer = true;
  37.     }
  38.     if (oCache.lastRequest && !bNeedServer) {
  39.         for (var i = 0, iLen = aoData.length; i < iLen; i++) {
  40.             if (aoData[i].name != "iDisplayStart" && aoData[i].name != "iDisplayLength" && aoData[i].name != "sEcho") {
  41.                 if (aoData[i].value != oCache.lastRequest[i].value) {
  42.                     bNeedServer = true;
  43.                     break;
  44.                 }
  45.             }
  46.         }
  47.     }
  48.     oCache.lastRequest = aoData.slice();
  49.     if (bNeedServer) {
  50.         if (iRequestStart < oCache.iCacheLower) {
  51.             iRequestStart = iRequestStart - (iRequestLength * (iPipe - 1));
  52.             if (iRequestStart < 0) {
  53.                 iRequestStart = 0;
  54.             }
  55.         }
  56.         oCache.iCacheLower = iRequestStart;
  57.         oCache.iCacheUpper = iRequestStart + (iRequestLength * iPipe);
  58.         oCache.iDisplayLength = fnGetKey(aoData, "iDisplayLength");
  59.         fnSetKey(aoData, "iDisplayStart", iRequestStart);
  60.         fnSetKey(aoData, "iDisplayLength", iRequestLength * iPipe);
  61.  
  62.         $.getJSON(sSource, aoData, function (json) {
  63.             oCache.lastJson = jQuery.extend(true, {}, json);
  64.             if (oCache.iCacheLower != oCache.iDisplayStart) {
  65.                 json.aaData.splice(0, oCache.iDisplayStart - oCache.iCacheLower);
  66.             }
  67.             json.aaData.splice(oCache.iDisplayLength, json.aaData.length);
  68.             fnCallback(json);
  69.         });
  70.     }
  71.     else
  72.     {
  73.         json = jQuery.extend(true, {}, oCache.lastJson);
  74.         json.sEcho = sEcho;
  75.         json.aaData.splice(0, iRequestStart - oCache.iCacheLower);
  76.         json.aaData.splice(iRequestLength, json.aaData.length);
  77.         fnCallback(json);
  78.         return;
  79.     }
  80. }
  81.  
  82. function doRefresh(data) {
  83.     oTable.fnClearTable();
  84.     oTable.fnAddData(data);
  85.     oTable.fnDraw();
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement