Escape from infinitive loadingDeferred if the diferred did not get resolved or rejected, and give user a chance to try other tabs

This commit is contained in:
Hadi Nategh 2015-07-13 16:36:45 +00:00
parent 4115fd5a43
commit 3bc178dad0

View File

@ -155,14 +155,25 @@ var fw_browser = Class.extend({
var self = this;
this.ajaxLoaderDiv = jQuery('<div class="loading ui-widget-overlay ui-front">'+egw.lang('please wait...')+'</div>').insertBefore(this.baseDiv);
this.loadingDeferred = new jQuery.Deferred();
// Try to escape from infinitive not resolved loadingDeferred
// At least user can close the broken tab and work with the others.
// Define a escape timeout for 5 sec
this.ajaxLoaderDivTimeout = setTimeout(function(){
self.ajaxLoaderDiv.hide().remove();
self.ajaxLoaderDiv = null;
},5000);
this.loadingDeferred.always(function() {
if(self.ajaxLoaderDiv)
{
self.ajaxLoaderDiv.hide().remove();
self.ajaxLoaderDiv = null;
// Remove escape timeout
clearTimeout(self.ajaxLoaderDivTimeout);
}
});
// Check whether the given url is a pseudo url which should be executed
// by calling the ajax_exec function
// we now send whole url back to server, so apps can use $_GET['ajax']==='true'