harbor/static/resources/js/harbor.config.js

106 lines
2.8 KiB
JavaScript

(function() {
'use strict';
angular
.module('harbor.app')
.config(function($interpolateProvider){
$interpolateProvider.startSymbol('//');
$interpolateProvider.endSymbol('//');
})
.config(function($httpProvider) {
$httpProvider.defaults.headers.common = {'Accept': 'application/json, text/javascript, */*; q=0.01'};
$httpProvider.interceptors.push('redirectInterceptor');
})
.service('redirectInterceptor', RedirectInterceptorService)
.factory('getParameterByName', getParameterByName)
.filter('dateL', localizeDate)
.filter('tr', tr);
RedirectInterceptorService.$inject = ['$q', '$window'];
function RedirectInterceptorService($q, $window) {
return {
'responseError': function(rejection) {
var url = rejection.config.url;
console.log('url:' + url);
var exclusion = [
'/',
'/search',
'/reset_password',
'/sign_up',
'/forgot_password',
'/api/targets/ping',
'/api/users/current',
'/api/repositories',
/^\/api\/projects\/[0-9]+\/members\/current$/
];
var isExcluded = false;
for(var i in exclusion) {
switch(typeof(exclusion[i])) {
case 'string':
isExcluded = (exclusion[i] === url);
break;
case 'object':
isExcluded = exclusion[i].test(url);
break;
}
if(isExcluded) {
break;
}
}
if(!isExcluded && rejection.status === 401) {
$window.location.href = '/';
return;
}
return $q.reject(rejection);
}
};
}
function getParameterByName() {
return get;
function get(name, url) {
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) {
return null;
}
if (!results[2]) {
return '';
}
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
}
function localizeDate() {
return filter;
function filter(input, pattern) {
var d = new Date(input || '');
if(d.getTime() <= 0) return '-';
return moment(d).format(pattern);
}
}
tr.$inject = ['I18nService'];
function tr(I18nService) {
return tr;
function tr(label, params) {
var currentLanguage = I18nService().getCurrentLanguage();
var result = '';
if(label && label.length > 0){
result = I18nService().getValue(label, currentLanguage);
}
if(angular.isArray(params)) {
angular.forEach(params, function(value, index) {
result = result.replace('$' + index, params[index]);
});
}
return result;
}
}
})();