{"version":3,"sourceRoot":"/cv/scripts/DAC0/eng/include/lib","sources":["dataTables.pipeLine.js"],"sourcesContent":["//\r\n// Pipelining function for DataTables. To be used to the `ajax` option of DataTables\r\n// Originally from https://datatables.net/examples/server_side/pipeline.html\r\n//\r\n$.fn.dataTable.pipeline = function ( opts ) {\r\n // Configuration options\r\n var conf = $.extend( {\r\n pages: 5, // number of pages to cache\r\n url: '', // script url\r\n data: null, // function or object with parameters to send to the server\r\n // matching how `ajax.data` works in DataTables\r\n method: 'GET', // Ajax HTTP method\r\n success: null, // callback on ajax success before table is drawn\r\n }, opts );\r\n \r\n // Private variables for storing the cache\r\n var cacheLower = -1;\r\n var cacheUpper = null;\r\n var cacheLastRequest = null;\r\n var cacheLastJson = null;\r\n \r\n return function ( request, drawCallback, settings ) {\r\n // HACK alert: when using a pipeline cache for ajax data, \"All Data\" means \"a lot of data\", but not\r\n // really \"all data\". In this case, a single page of length 32767.\r\n var ajax = false;\r\n var requestStart = request.start;\r\n var drawStart = request.start;\r\n var requestLength = request.length==-1?32767:request.length;\r\n var requestEnd = requestStart + requestLength;\r\n var confPages = request.length==-1?1:conf.pages;\r\n \r\n if ( settings.clearCache ) {\r\n // API requested that the cache be cleared\r\n ajax = true;\r\n settings.clearCache = false;\r\n }\r\n else if ( cacheLower < 0 || requestStart < cacheLower || requestEnd > cacheUpper ) {\r\n // outside cached data - need to make a request\r\n ajax = true;\r\n }\r\n else if ( JSON.stringify( request.order ) !== JSON.stringify( cacheLastRequest.order ) ||\r\n JSON.stringify( request.columns ) !== JSON.stringify( cacheLastRequest.columns ) ||\r\n JSON.stringify( request.search ) !== JSON.stringify( cacheLastRequest.search )\r\n ) {\r\n // properties changed (ordering, columns, searching)\r\n ajax = true;\r\n }\r\n \r\n // Store the request for checking next time around\r\n cacheLastRequest = $.extend( true, {}, request );\r\n \r\n if ( ajax ) {\r\n // Need data from the server\r\n // this block seems unnecessary for pagination changes.\r\n if ( requestStart < cacheLower && (requestStart % requestLength) > 0) {\r\n requestStart = requestStart - (requestLength*(confPages-1)); \r\n \r\n if ( requestStart < 0 ) {\r\n requestStart = 0;\r\n }\r\n }\r\n\r\n // Paging_Workaround: Because many of the data producers request data as a single monolithic \"page\" (because page number\r\n // equals (int)(rowStart/rowsPerPage) and the result consists of the entirity of confPages*requestLength), requests must be \r\n // aligned to those boundries where rowsPerPage is an exact divisor of rowStart.\r\n // eg: if you're on drawStart 1900 of a 10000 row data set size with cache size = 1000 rows (10 pages, 100 rows per page), then\r\n // in order to stay aligned on 1000-row boundaries, the data request will use requestStart=1000 and requestLength=1000.\r\n // This means no floating cache pages - some cache results will be optimized towards data \"behind\" where drawStart is set.\r\n requestStart -= requestStart % (requestLength * confPages);\r\n \r\n cacheLower = requestStart;\r\n cacheUpper = requestStart + (requestLength * confPages);\r\n \r\n // Keep the initial request separate from the request passed to data provider ajax call\r\n var dataProviderRequest = $.extend(true, {}, request);\r\n dataProviderRequest.start = requestStart;\r\n dataProviderRequest.length = requestLength * confPages;\r\n \r\n // Provide the same `data` options as DataTables.\r\n if ( $.isFunction ( conf.data ) ) {\r\n // As a function it is executed with the data object as an arg\r\n // for manipulation. If an object is returned, it is used as the\r\n // data object to submit\r\n var d = conf.data( dataProviderRequest );\r\n if ( d ) {\r\n $.extend( dataProviderRequest, d );\r\n }\r\n }\r\n else if ( $.isPlainObject( conf.data ) ) {\r\n // As an object, the data given extends the default\r\n $.extend( dataProviderRequest, conf.data );\r\n }\r\n \r\n return $.ajax( {\r\n \"type\": conf.method,\r\n \"url\": conf.url,\r\n \"data\": dataProviderRequest,\r\n \"dataType\": \"json\",\r\n \"cache\": false,\r\n \"success\": function ( json ) {\r\n if (typeof conf.success==='function') {\r\n json = conf.success(json);\r\n }\r\n\r\n cacheLastJson = $.extend(true, {}, json);\r\n \r\n if ( cacheLower != drawStart ) {\r\n json.data.splice( 0, drawStart-cacheLower );\r\n }\r\n if ( requestLength >= -1 ) {\r\n json.data.splice( requestLength, json.data.length );\r\n }\r\n \r\n drawCallback( json );\r\n }\r\n } );\r\n }\r\n else {\r\n json = $.extend( true, {}, cacheLastJson );\r\n json.draw = request.draw; // Update the echo for each response\r\n json.data.splice( 0, request.start-cacheLower );\r\n json.data.splice( requestLength, json.data.length );\r\n \r\n drawCallback(json);\r\n }\r\n }\r\n};\r\n\r\n// Register an API method that will empty the pipelined data, forcing an Ajax\r\n// fetch on the next draw (i.e. `table.clearPipeline().draw()`)\r\n$.fn.dataTable.Api.register( 'clearPipeline()', function () {\r\n return this.iterator( 'table', function ( settings ) {\r\n settings.clearCache = true;\r\n } );\r\n} );"],"names":["$","fn","dataTable","pipeline","opts","conf","extend","pages","url","data","method","success","cacheLower","cacheUpper","cacheLastRequest","cacheLastJson","request","drawCallback","settings","ajax","requestStart","start","drawStart","requestLength","length","requestEnd","confPages","clearCache","JSON","stringify","order","columns","search","dataProviderRequest","isFunction","d","isPlainObject","type","dataType","cache","json","splice","draw","Api","register","this","iterator"],"mappings":"AAIAA,EAAEC,GAAGC,UAAUC,SAAW,SAAWC,GAEjC,IAAIC,EAAOL,EAAEM,OAAQ,CACjBC,MAAO,EACPC,IAAK,GACLC,KAAM,KAENC,OAAQ,MACRC,QAAS,IACb,EAAGP,CAAK,EAGJQ,EAAa,CAAC,EACdC,EAAa,KACbC,EAAmB,KACnBC,EAAgB,KAEpB,OAAO,SAAWC,EAASC,EAAcC,GAGrC,IAAIC,EAAgB,CAAA,EAChBC,EAAgBJ,EAAQK,MACxBC,EAAgBN,EAAQK,MACxBE,EAAgC,CAAC,GAAjBP,EAAQQ,OAAW,MAAMR,EAAQQ,OACjDC,EAAgBL,EAAeG,EAC/BG,EAAgC,CAAC,GAAjBV,EAAQQ,OAAW,EAAEnB,EAAKE,MAsB9C,GApBKW,EAASS,WAGVT,EAASS,WAAa,EADtBR,EAAO,CAAA,IAGDP,EAAa,GAAKQ,EAAeR,GAA2BC,EAAbY,GAI/CG,KAAKC,UAAWb,EAAQc,KAAM,IAAQF,KAAKC,UAAWf,EAAiBgB,KAAM,GAC7EF,KAAKC,UAAWb,EAAQe,OAAQ,IAAMH,KAAKC,UAAWf,EAAiBiB,OAAQ,GAC/EH,KAAKC,UAAWb,EAAQgB,MAAO,IAAOJ,KAAKC,UAAWf,EAAiBkB,MAAO,KAGpFb,EAAO,CAAA,GAIXL,EAAmBd,EAAEM,OAAQ,CAAA,EAAM,GAAIU,CAAQ,EAE1CG,EA0CD,OAvCKC,EAAeR,GAA+C,EAAhCQ,EAAeG,IAC9CH,GAA+BG,GAAeG,EAAU,IAEpC,IAChBN,EAAe,GAavBP,GADAD,EAFAQ,GAAgBA,GAAgBG,EAAgBG,IAGnBH,EAAgBG,GAGzCO,EAAsBjC,EAAEM,OAAO,CAAA,EAAM,GAAIU,CAAO,GAChCK,MAAQD,EAC5Ba,EAAoBT,OAASD,EAAgBG,EAGxC1B,EAAEkC,WAAa7B,EAAKI,IAAK,GAItB0B,EAAI9B,EAAKI,KAAMwB,CAAoB,IAEnCjC,EAAEM,OAAQ2B,EAAqBE,CAAE,EAG/BnC,EAAEoC,cAAe/B,EAAKI,IAAK,GAEjCT,EAAEM,OAAQ2B,EAAqB5B,EAAKI,IAAK,EAGtCT,EAAEmB,KAAM,CACXkB,KAAYhC,EAAKK,OACjBF,IAAYH,EAAKG,IACjBC,KAAYwB,EACZK,SAAY,OACZC,MAAY,CAAA,EACZ5B,QAAY,SAAW6B,GACO,YAAtB,OAAOnC,EAAKM,UACd6B,EAAOnC,EAAKM,QAAQ6B,CAAI,GAG1BzB,EAAgBf,EAAEM,OAAO,CAAA,EAAM,GAAIkC,CAAI,EAElC5B,GAAcU,GACfkB,EAAK/B,KAAKgC,OAAQ,EAAGnB,EAAUV,CAAW,EAExB,CAAC,GAAlBW,GACDiB,EAAK/B,KAAKgC,OAAQlB,EAAeiB,EAAK/B,KAAKe,MAAO,EAGtDP,EAAcuB,CAAK,CACvB,CACJ,CAAE,GAGFA,KAAOxC,EAAEM,OAAQ,CAAA,EAAM,GAAIS,CAAc,GACpC2B,KAAO1B,EAAQ0B,KACpBF,KAAK/B,KAAKgC,OAAQ,EAAGzB,EAAQK,MAAMT,CAAW,EAC9C4B,KAAK/B,KAAKgC,OAAQlB,EAAeiB,KAAK/B,KAAKe,MAAO,EAElDP,EAAauB,IAAI,CAEzB,CACJ,EAIAxC,EAAEC,GAAGC,UAAUyC,IAAIC,SAAU,kBAAmB,WAC5C,OAAOC,KAAKC,SAAU,QAAS,SAAW5B,GACtCA,EAASS,WAAa,CAAA,CAC1B,CAAE,CACN,CAAE"}