Add collaborators view to teams manager
Adds a view of an organization's outside collaborators to the team manager interface.
This commit is contained in:
parent
e8429f9194
commit
452379c603
2 changed files with 99 additions and 42 deletions
|
@ -17,6 +17,12 @@ angular.module('quay').directive('teamsManager', function () {
|
|||
$scope.Config = Config;
|
||||
$scope.Features = Features;
|
||||
|
||||
$scope.views = Object.freeze({
|
||||
TEAMS: 0,
|
||||
MEMBERS: 1,
|
||||
COLLABORATORS: 2
|
||||
});
|
||||
|
||||
$scope.options = {
|
||||
'predicate': 'ordered_team_index',
|
||||
'reverse': false,
|
||||
|
@ -35,8 +41,11 @@ angular.module('quay').directive('teamsManager', function () {
|
|||
$scope.orderedTeams = null;
|
||||
$scope.showingMembers = false;
|
||||
$scope.fullMemberList = null;
|
||||
$scope.collaboratorList = null;
|
||||
$scope.userView = null;
|
||||
$scope.feedback = null;
|
||||
$scope.createTeamInfo = null;
|
||||
$scope.activeView = $scope.views.TEAMS;
|
||||
|
||||
var getRoleIndex = function(name) {
|
||||
for (var i = 0; i < $scope.teamRoles.length; ++i) {
|
||||
|
@ -67,6 +76,62 @@ angular.module('quay').directive('teamsManager', function () {
|
|||
['ordered_team_index', 'member_count', 'repo_count', 'role_index']);
|
||||
};
|
||||
|
||||
var loadMembers = function(callback) {
|
||||
var params = {
|
||||
'orgname': $scope.organization.name
|
||||
};
|
||||
|
||||
ApiService.getOrganizationMembers(null, params).then(function(resp) {
|
||||
$scope.fullMemberList = resp['members'];
|
||||
callback();
|
||||
}, ApiService.errorDisplay('Could not load full membership list'));
|
||||
};
|
||||
|
||||
var loadCollaborators = function(callback) {
|
||||
var params = {
|
||||
'orgname': $scope.organization.name
|
||||
};
|
||||
|
||||
ApiService.getOrganizationCollaborators(null, params).then(function(resp) {
|
||||
$scope.collaboratorList = resp['collaborators'];
|
||||
callback();
|
||||
}, ApiService.errorDisplay('Could not load collaborators list'));
|
||||
};
|
||||
|
||||
$scope.setActiveView = function(view) {
|
||||
switch(view) {
|
||||
case $scope.views.TEAMS:
|
||||
// Nothing to do here.
|
||||
break;
|
||||
|
||||
case $scope.views.MEMBERS:
|
||||
if (!$scope.fullMemberList) {
|
||||
loadMembers(function() {
|
||||
$scope.usersView = $scope.fullMemberList;
|
||||
});
|
||||
}
|
||||
|
||||
$scope.usersView = $scope.fullMemberList;
|
||||
break;
|
||||
|
||||
case $scope.views.COLLABORATORS:
|
||||
if (!$scope.collaboratorList) {
|
||||
loadCollaborators(function() {
|
||||
$scope.usersView = $scope.collaboratorList;
|
||||
});
|
||||
}
|
||||
|
||||
$scope.usersView = $scope.collaboratorList;
|
||||
break;
|
||||
|
||||
default:
|
||||
console.error('Invalid team-manager view: ' + view);
|
||||
return;
|
||||
}
|
||||
|
||||
$scope.activeView = view;
|
||||
}
|
||||
|
||||
$scope.setRole = function(role, teamname) {
|
||||
var previousRole = $scope.organization.teams[teamname].role;
|
||||
$scope.organization.teams[teamname].role = role;
|
||||
|
@ -158,19 +223,6 @@ angular.module('quay').directive('teamsManager', function () {
|
|||
$location.path('/organization/' + $scope.organization.name + '/teams/' + teamName);
|
||||
};
|
||||
|
||||
$scope.showMembers = function(value) {
|
||||
$scope.showingMembers = value;
|
||||
if (value && !$scope.fullMemberList) {
|
||||
var params = {
|
||||
'orgname': $scope.organization.name
|
||||
};
|
||||
|
||||
ApiService.getOrganizationMembers(null, params).then(function(resp) {
|
||||
$scope.fullMemberList = resp['members'];
|
||||
}, ApiService.errorDisplay('Could not load full membership list'));
|
||||
}
|
||||
};
|
||||
|
||||
$scope.removeMember = function(memberInfo, callback) {
|
||||
var params = {
|
||||
'orgname': $scope.organization.name,
|
||||
|
@ -184,7 +236,8 @@ angular.module('quay').directive('teamsManager', function () {
|
|||
ApiService.removeOrganizationMember(null, params).then(function(resp) {
|
||||
// Reset the state of the directive.
|
||||
$scope.fullMemberList = null;
|
||||
$scope.showMembers(true);
|
||||
$scope.collaboratorList = null;
|
||||
$scope.setActiveView($scope.activeView);
|
||||
|
||||
callback(true);
|
||||
|
||||
|
@ -226,4 +279,4 @@ angular.module('quay').directive('teamsManager', function () {
|
|||
};
|
||||
|
||||
return directiveDefinitionObject;
|
||||
});
|
||||
});
|
||||
|
|
Reference in a new issue