Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Na configuracao
- "sAjaxSource": "controller/metodo",
- "fnServerData": fnDataTablesPipeline,
- //Deixei nas ultimas linhas do meu js
- var oCache = {
- iCacheLower: -1
- };
- function fnSetKey(aoData, sKey, mValue) {
- for (var i = 0, iLen = aoData.length; i < iLen; i++) {
- if (aoData[i].name == sKey) {
- aoData[i].value = mValue;
- }
- }
- }
- function fnGetKey(aoData, sKey) {
- for (var i = 0, iLen = aoData.length; i < iLen; i++) {
- if (aoData[i].name == sKey) {
- return aoData[i].value;
- }
- }
- return null;
- }
- function fnDataTablesPipeline(sSource, aoData, fnCallback, ipipe) {
- var iPipe = 2; /* Quantidade de paginas para executar o ajax */
- var bNeedServer = false;
- var sEcho = fnGetKey(aoData, "sEcho");
- var iRequestStart = fnGetKey(aoData, "iDisplayStart");
- var iRequestLength = fnGetKey(aoData, "iDisplayLength");
- var iRequestEnd = iRequestStart + iRequestLength;
- oCache.iDisplayStart = iRequestStart;
- if (oCache.iCacheLower < 0 || iRequestStart < oCache.iCacheLower || iRequestEnd > oCache.iCacheUpper)
- {
- bNeedServer = true;
- }
- if (oCache.lastRequest && !bNeedServer) {
- for (var i = 0, iLen = aoData.length; i < iLen; i++) {
- if (aoData[i].name != "iDisplayStart" && aoData[i].name != "iDisplayLength" && aoData[i].name != "sEcho") {
- if (aoData[i].value != oCache.lastRequest[i].value) {
- bNeedServer = true;
- break;
- }
- }
- }
- }
- oCache.lastRequest = aoData.slice();
- if (bNeedServer) {
- if (iRequestStart < oCache.iCacheLower) {
- iRequestStart = iRequestStart - (iRequestLength * (iPipe - 1));
- if (iRequestStart < 0) {
- iRequestStart = 0;
- }
- }
- oCache.iCacheLower = iRequestStart;
- oCache.iCacheUpper = iRequestStart + (iRequestLength * iPipe);
- oCache.iDisplayLength = fnGetKey(aoData, "iDisplayLength");
- fnSetKey(aoData, "iDisplayStart", iRequestStart);
- fnSetKey(aoData, "iDisplayLength", iRequestLength * iPipe);
- $.getJSON(sSource, aoData, function (json) {
- oCache.lastJson = jQuery.extend(true, {}, json);
- if (oCache.iCacheLower != oCache.iDisplayStart) {
- json.aaData.splice(0, oCache.iDisplayStart - oCache.iCacheLower);
- }
- json.aaData.splice(oCache.iDisplayLength, json.aaData.length);
- fnCallback(json);
- });
- }
- else
- {
- json = jQuery.extend(true, {}, oCache.lastJson);
- json.sEcho = sEcho;
- json.aaData.splice(0, iRequestStart - oCache.iCacheLower);
- json.aaData.splice(iRequestLength, json.aaData.length);
- fnCallback(json);
- return;
- }
- }
- function doRefresh(data) {
- oTable.fnClearTable();
- oTable.fnAddData(data);
- oTable.fnDraw();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement