| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /************************************************************************
- * Ajax extension for datatables *
- *************************************************************************/
- (function ($) {
- if (!$.fn.dataTableExt) {
- return;
- }
- var doAjax = function (listAction, requestData, callbackFunction, settings) {
- var inputFilter = {};
- //set table defined filters
- if (listAction.inputFilter) {
- inputFilter = $.extend(inputFilter, listAction.inputFilter());
- }
- //set paging filters
- if (settings.oInit.paging) {
- inputFilter = $.extend(inputFilter, {
- maxResultCount: requestData.length,
- skipCount: requestData.start
- });
- }
- //execute ajax function with filter
- if (listAction.ajaxFunction) {
- listAction.ajaxFunction(inputFilter)
- .done(function (result) {
- //store raw server response for custom rendering.
- settings.rawServerResponse = result;
- //html encoding can be disabled by adding "disableResponseHtmlEncoding: true" to "listAction" field
- var dataItems;
- if (listAction.disableResponseHtmlEncoding) {
- dataItems = result.items;
- } else {
- //HTML encodes the response items for XSS protection.
- dataItems = app.htmlUtils.htmlEncodeJson(result.items);
- }
- //invoke callback
- callbackFunction({
- recordsTotal: result.totalCount,
- recordsFiltered: result.totalCount,
- data: dataItems
- });
- })
- .always(function () {
- abp.ui.clearBusy(settings.nTable);
- });
- }
- }
- if (!$.fn.dataTable) {
- return;
- }
- $.extend(true, $.fn.dataTable.defaults, {
- ajax: function (requestData, callbackFunction, settings) {
- if (!settings) {
- return;
- }
- if (!settings.oInit) {
- return;
- }
- if (!settings.oInit.listAction) {
- return;
- }
- abp.ui.setBusy(settings.nTable);
- doAjax(settings.oInit.listAction, requestData, callbackFunction, settings);
- }
- });
- $.fn.dataTable.Api.register('ajax.reloadPage()', function () {
- // user paging is not reset on reload. https://datatables.net/reference/api/ajax.reload()
- this.ajax.reload(null, false);
- });
- })(jQuery);
|