Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

define(['angular', 'angularAnimate', 'angularBusy'], function (angular) {
'use strict';


angular.element("body").attr('cg-busy', 'delayed');

angular.module('cgBusy').value('cgBusyDefaults', {
templateUrl: 'angular-busy.html',
delay: 0,
minDuration: 500, // is seems to start on init, leave it 0
backdrop: false,
message: ''
});

angular.module('delayManager', ['ngAnimate', 'cgBusy'])
.factory('globalDelayTracker', function () {
var globalDelayTracker = {};
globalDelayTracker.tracker = {};
globalDelayTracker.active = function() {
return Object.keys(globalDelayTracker.tracker).length > 0;
};

globalDelayTracker.add = function(url) {
globalDelayTracker.tracker[url] = globalDelayTracker.tracker[url] ? globalDelayTracker.tracker[url] + 1 : 1;
};

globalDelayTracker.remove = function(url) {
if(globalDelayTracker.tracker[url] > 1) {
globalDelayTracker.tracker[url] = globalDelayTracker.tracker[url] - 1;
} else {
delete globalDelayTracker.tracker[url];
}
};

return globalDelayTracker;
})

.factory('busyHttpInterceptor', function ($q, globalDelayTracker) {

return {
// On request success
request: function (config) {
if (!config.background) {
globalDelayTracker.add(config.url);
}
// Return the config or wrap it in a promise if blank.
return $q.when(config);
},
// On request failure
requestError: function (rejection) {
return $q.reject(rejection);
},
// On response success
response: function (response) {
globalDelayTracker.remove(response.config.url);
return $q.when(response);
},
// On response failture
responseError: function (rejection) {
globalDelayTracker.remove(rejection.config.url);
return $q.reject(rejection);
}
};
});
});