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

87 lines
2.4 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 pathname = $window.location.pathname;
var exclusion = ['/', '/search', '/reset_password', '/sign_up', '/forgot_password', '/repository'];
var isExcluded = false;
for(var i in exclusion) {
if(exclusion[i] === pathname) {
isExcluded = true;
break;
}
}
if(rejection.status === 401 && !isExcluded) {
$window.location.href = '/';
}
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;
}
}
})();