diff --git a/app/scripts/controllers/membership.js b/app/scripts/controllers/membership.js index 663271d36c..c051b7f219 100644 --- a/app/scripts/controllers/membership.js +++ b/app/scripts/controllers/membership.js @@ -70,6 +70,24 @@ angular $scope.newBinding.newRole = null; }; + var refreshServiceAccountsList = function(ctx) { + DataService + .list('serviceaccounts', ctx) + .then(function(resp) { + var serviceAccounts = _.keys(resp.by('metadata.name')).sort(); + angular.extend($scope, { + serviceAccounts: serviceAccounts, + refreshServiceAccounts: function(search) { + if(search && !_.includes($scope.serviceAccounts, search)) { + $scope.serviceAccounts = [search].concat(serviceAccounts); + } else { + $scope.serviceAccounts = serviceAccounts; + } + } + }); + }); + }; + var refreshRoleBindingList = function(toUpdateOnError) { DataService .list('rolebindings', requestContext, null , { @@ -159,6 +177,7 @@ angular }, selectTab: function(selected) { $scope.newBinding.kind = selected; + $scope.newBinding.name = ''; } }); @@ -219,15 +238,18 @@ angular $scope.user = resp; }); - DataService .list('projects', {}) .then(function(resp) { - var projects = _.map(resp.by('metadata.name'), function(project) { - return project.metadata.name; - }); + var projects = _.keys(resp.by('metadata.name')).sort(); angular.extend($scope, { projects: projects, + selectProject: function(projectName) { + $scope.newBinding.name = ''; + refreshServiceAccountsList({ + namespace: projectName + }); + }, refreshProjects: function(search) { if(search && !_.includes($scope.projects, search)) { $scope.projects = [search].concat(projects); @@ -243,6 +265,7 @@ angular .then(_.spread(function(project, context) { requestContext = context; refreshRoleBindingList(); + refreshServiceAccountsList(requestContext); angular.extend($scope, { project: project, subjectKinds: subjectKinds, @@ -364,5 +387,6 @@ angular } }); }); + })); }); diff --git a/app/styles/_membership.less b/app/styles/_membership.less index 2e98ff40bb..dc4838074b 100644 --- a/app/styles/_membership.less +++ b/app/styles/_membership.less @@ -41,9 +41,8 @@ min-width: 50%; } .word-break-all; - min-width: 225px; - max-width: 30%; - padding: 0 5px 10px 0; + width: 100%; + padding: 0 0px 10px 0; input { max-width: 150px; } @@ -71,7 +70,6 @@ width: 150px; } .select-role { - width: 150px; small { color: #999; } @@ -124,7 +122,9 @@ } } .col-name { - width: 30%; + min-width: 225px; + max-width: 30%; + padding: 0 5px 10px 0; input { max-width: 175px; } @@ -134,6 +134,9 @@ display: block; } } + .select-role { + width: 150px; + } } } } diff --git a/app/views/membership.html b/app/views/membership.html index 32bfae2266..72e4e13489 100644 --- a/app/views/membership.html +++ b/app/views/membership.html @@ -167,13 +167,16 @@