2015-02-19 21:21:54 +00:00
|
|
|
/**
|
|
|
|
* An element which shows an icon and a name/title for an entity (user, org, robot, team),
|
|
|
|
* optionally linking to that entity if applicable.
|
|
|
|
*/
|
|
|
|
angular.module('quay').directive('entityReference', function () {
|
|
|
|
var directiveDefinitionObject = {
|
|
|
|
priority: 0,
|
|
|
|
templateUrl: '/static/directives/entity-reference.html',
|
|
|
|
replace: false,
|
|
|
|
transclude: false,
|
|
|
|
restrict: 'C',
|
|
|
|
scope: {
|
|
|
|
'entity': '=entity',
|
|
|
|
'namespace': '=namespace',
|
|
|
|
'showAvatar': '@showAvatar',
|
|
|
|
'avatarSize': '@avatarSize'
|
|
|
|
},
|
2015-04-22 19:26:01 +00:00
|
|
|
controller: function($scope, $element, UserService, UtilService, Config) {
|
2015-02-19 21:21:54 +00:00
|
|
|
$scope.getIsAdmin = function(namespace) {
|
|
|
|
return UserService.isNamespaceAdmin(namespace);
|
|
|
|
};
|
|
|
|
|
|
|
|
$scope.getRobotUrl = function(name) {
|
2015-04-22 19:26:01 +00:00
|
|
|
if (Config.isNewLayout()) {
|
|
|
|
return $scope.getNewRobotUrl(name);
|
|
|
|
} else {
|
|
|
|
return $scope.getOldRobotUrl(name);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
$scope.getNewRobotUrl = function(name) {
|
|
|
|
var namespace = $scope.getPrefix(name);
|
|
|
|
if (!namespace) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!$scope.getIsAdmin(namespace)) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
var org = UserService.getOrganization(namespace);
|
|
|
|
if (!org) {
|
|
|
|
// This robot is owned by the user.
|
|
|
|
return '/user/' + namespace + '?tab=robots&showRobot=' + UtilService.textToSafeHtml(name);
|
|
|
|
}
|
|
|
|
|
|
|
|
return '/organization/' + org['name'] + '?tab=robots&showRobot=' + UtilService.textToSafeHtml(name);
|
|
|
|
};
|
|
|
|
|
|
|
|
// TODO(jschorr): Remove when new layout is in prod.
|
|
|
|
$scope.getOldRobotUrl = function(name) {
|
2015-02-19 21:21:54 +00:00
|
|
|
var namespace = $scope.getPrefix(name);
|
|
|
|
if (!namespace) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!$scope.getIsAdmin(namespace)) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
var org = UserService.getOrganization(namespace);
|
|
|
|
if (!org) {
|
|
|
|
// This robot is owned by the user.
|
|
|
|
return '/user/?tab=robots&showRobot=' + UtilService.textToSafeHtml(name);
|
|
|
|
}
|
|
|
|
|
|
|
|
return '/organization/' + org['name'] + '/admin?tab=robots&showRobot=' + UtilService.textToSafeHtml(name);
|
|
|
|
};
|
|
|
|
|
2015-03-30 21:55:04 +00:00
|
|
|
$scope.getTitle = function(entity) {
|
|
|
|
if (!entity) { return ''; }
|
|
|
|
|
|
|
|
switch (entity.kind) {
|
|
|
|
case 'org':
|
|
|
|
return 'Organization';
|
|
|
|
|
|
|
|
case 'team':
|
|
|
|
return 'Team';
|
|
|
|
|
|
|
|
case 'user':
|
|
|
|
return entity.is_robot ? 'Robot Account' : 'User';
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2015-02-19 21:21:54 +00:00
|
|
|
$scope.getPrefix = function(name) {
|
|
|
|
if (!name) { return ''; }
|
|
|
|
var plus = name.indexOf('+');
|
|
|
|
return name.substr(0, plus);
|
|
|
|
};
|
|
|
|
|
|
|
|
$scope.getShortenedName = function(name) {
|
|
|
|
if (!name) { return ''; }
|
|
|
|
var plus = name.indexOf('+');
|
|
|
|
return name.substr(plus + 1);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
};
|
|
|
|
return directiveDefinitionObject;
|
|
|
|
});
|