From 21b538625555591e465222fc771a184404cfabe9 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Fri, 23 Oct 2020 15:34:52 +0300 Subject: [PATCH] fix "always shown indicator" for the short requests #4073 --- .../datatables/datatables-extensions.js | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js index 769c0d165e..2bbd1aa7a3 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js @@ -271,7 +271,7 @@ } }); - //Delay for processing indicator + //Delay for processing indicator var defaultDelayForProcessingIndicator = 500; var _existingDefaultFnPreDrawCallback = $.fn.dataTable.defaults.fnPreDrawCallback; $.extend(true, @@ -283,21 +283,38 @@ } var $tableWrapper = $(settings.nTableWrapper); + var $processing = $tableWrapper.find(".dataTables_processing"); + var timeoutHandles = []; + var cancelHandles = []; $tableWrapper.on('processing.dt', function (e, settings, processing) { + if ((settings.oInit.processingDelay !== undefined && settings.oInit.processingDelay < 1) || defaultDelayForProcessingIndicator < 1) { + return; + } + if (processing) { - var $processing = $tableWrapper.find(".dataTables_processing"); $processing.hide(); - + var delay = settings.oInit.processingDelay === undefined ? defaultDelayForProcessingIndicator : settings.oInit.processingDelay; - setTimeout(function () { + cancelHandles[settings.nTableWrapper.id] = false; + + timeoutHandles[settings.nTableWrapper.id] = setTimeout(function () { + if (cancelHandles[settings.nTableWrapper.id] === true) { + return; + } + $processing.show(); }, delay); } + else { + clearTimeout(timeoutHandles[settings.nTableWrapper.id]); + cancelHandles[settings.nTableWrapper.id] = true; + $processing.hide(); + } }); } });