From c38869fb9f1dbe0e89f2dc2270aee39ab7f38beb Mon Sep 17 00:00:00 2001 From: mcramer <m.cramer@pixcept.de> Date: Tue, 09 Oct 2012 09:07:21 -0400 Subject: [PATCH] Bugfix: avoid flickering of loading indicator --- interface/web/js/scrigo.js.php | 45 ++++++++++++++++++++++----------------------- 1 files changed, 22 insertions(+), 23 deletions(-) diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php index 1d5d507..1051905 100644 --- a/interface/web/js/scrigo.js.php +++ b/interface/web/js/scrigo.js.php @@ -12,6 +12,7 @@ var requestsRunning = 0; var indicatorPaddingH = -1; var indicatorPaddingW = -1; +var indicatorCompleted = false; redirect = ''; function reportError(request) { @@ -25,33 +26,31 @@ function showLoadIndicator() { requestsRunning += 1; - var indicator = jQuery('#ajaxloader'); - if(indicator.length < 1) { - indicator = jQuery('<div id="ajaxloader" style="display: none;"></div>'); - indicator.appendTo('body'); + if(requestsRunning < 2) { + var indicator = jQuery('#ajaxloader'); + if(indicator.length < 1) { + indicator = jQuery('<div id="ajaxloader" style="display: none;"></div>'); + indicator.appendTo('body'); + } + var parent = jQuery('#content'); + if(parent.length < 1) return; + indicatorCompleted = false; + + var atx = parent.offset().left + 150; //((parent.outerWidth(true) - indicator.outerWidth(true)) / 2); + var aty = parent.offset().top + 150; + indicator.css( {'left': atx, 'top': aty } ).fadeIn('fast', function() { + // check if loader should be hidden immediately + indicatorCompleted = true; + if(requestsRunning < 1) $(this).fadeOut('fast', function() { $(this).hide();}); + }); } - var parent = jQuery('#content'); - if(parent.length < 1) return; - - var atx = parent.offset().left + 150; //((parent.outerWidth(true) - indicator.outerWidth(true)) / 2); - var aty = parent.offset().top + 150; - indicator.css( {'left': atx, 'top': aty } ).fadeIn('fast'); - - /*var atx = parent.offset().left; - var aty = parent.offset().top; - if(indicatorPaddingW == -1) indicatorPaddingW = parseInt(indicator.css('padding-left')) + parseInt(indicator.css('padding-right')); - if(indicatorPaddingH == -1) indicatorPaddingH = parseInt(indicator.css('padding-top')) + parseInt(indicator.css('padding-bottom')); - var atw = parent.outerWidth() - indicatorPaddingW; - var ath = parent.outerHeight() - indicatorPaddingH; - - indicator.css( {'left': atx, 'top': aty, 'width': atw, 'height': ath } ).fadeIn('fast');*/ } function hideLoadIndicator() { requestsRunning -= 1; if(requestsRunning < 1) { - jQuery('#ajaxloader').fadeOut('fast', function() { jQuery('#ajaxloader').hide(); } ); requestsRunning = 0; // just for the case... + if(indicatorCompleted == true) jQuery('#ajaxloader').fadeOut('fast', function() { jQuery('#ajaxloader').hide(); } ); } } @@ -437,14 +436,14 @@ url: pagename, dataType: "html", beforeSend: function() { - showLoadIndicator(); +// showLoadIndicator(); }, success: function(data, textStatus, jqXHR) { - hideLoadIndicator(); +// hideLoadIndicator(); jQuery('#'+elementid).html(jqXHR.responseText); }, error: function() { - hideLoadIndicator(); +// hideLoadIndicator(); reportError('Ajax Request was not successful. 118'); } }); -- Gitblit v1.9.1