forked from Coded/SIPRP
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							77 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							77 lines
						
					
					
						
							1.9 KiB
						
					
					
				//intercepts all inbound/outbound ajax data
 | 
						|
evoapp.factory('httpInterceptor', function ($rootScope, $q){
 | 
						|
 | 
						|
    //http://endlessindirection.wordpress.com/2013/05/19/angularjs-global-loading-message-with-http-interceptors/
 | 
						|
 | 
						|
    var activeRequests = 0;
 | 
						|
 | 
						|
    var started = function(broadcastEvents){
 | 
						|
        
 | 
						|
        if(activeRequests == 0 && broadcastEvents === true) 
 | 
						|
        {            
 | 
						|
            $rootScope.$broadcast('loadingStatusActive');
 | 
						|
        } 
 | 
						|
        
 | 
						|
        activeRequests++;
 | 
						|
    };
 | 
						|
 | 
						|
    var ended = function(response){
 | 
						|
        
 | 
						|
        //intercept exceptions
 | 
						|
        if(response.data.success != undefined)
 | 
						|
        {
 | 
						|
            if(response.data.messages.length > 0)
 | 
						|
            {
 | 
						|
                var firstMessage = response.data.messages[0];
 | 
						|
 | 
						|
                if(firstMessage.type == 'SESSIONTIMEOUT')
 | 
						|
                {
 | 
						|
                    $rootScope.$broadcast('onsessiontimeout', {response: response.data});
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        activeRequests--;
 | 
						|
 | 
						|
        if(activeRequests==0) 
 | 
						|
        {            
 | 
						|
            $rootScope.$broadcast('loadingStatusInactive');
 | 
						|
        }
 | 
						|
    };
 | 
						|
 | 
						|
    return {
 | 
						|
        request: function (config){
 | 
						|
 | 
						|
            started(config.$$broadcastEvents);
 | 
						|
 | 
						|
            return config || $q.when(config);
 | 
						|
        },
 | 
						|
 
 | 
						|
        // On request failure
 | 
						|
        requestError: function (rejection){
 | 
						|
            ended(rejection);
 | 
						|
            return $q.reject(rejection);
 | 
						|
        },
 | 
						|
 
 | 
						|
        // On response success
 | 
						|
        response: function (response){
 | 
						|
            ended(response);
 | 
						|
            return response || $q.when(response);
 | 
						|
        },
 | 
						|
 
 | 
						|
        // On response failure
 | 
						|
        responseError: function (rejection){
 | 
						|
            ended(rejection);
 | 
						|
            return $q.reject(rejection);
 | 
						|
        }
 | 
						|
    };
 | 
						|
});
 | 
						|
 | 
						|
//instantiate httpInterceptor
 | 
						|
evoapp.config(function ($httpProvider){
 | 
						|
 | 
						|
    $httpProvider.interceptors.push('httpInterceptor');
 | 
						|
});
 | 
						|
 | 
						|
 |