-
+
|
-
- You
- Superuser
- Disabled
-
+
+ You
+ Superuser
+ Disabled
+
{{ current_user.username }}
|
diff --git a/static/js/directives/ui/manage-user-tab.js b/static/js/directives/ui/manage-user-tab.js
index 6193925f9..7695936b4 100644
--- a/static/js/directives/ui/manage-user-tab.js
+++ b/static/js/directives/ui/manage-user-tab.js
@@ -9,30 +9,61 @@ angular.module('quay').directive('manageUserTab', function () {
transclude: true,
restrict: 'C',
scope: {
- 'isEnabled': '=isEnabled'
+ 'isEnabled': '=isEnabled'
},
- controller: function ($scope, $timeout, $location, $element, ApiService, UserService) {
+ controller: function ($scope, $timeout, $location, $element, ApiService, UserService, TableService) {
+ $scope.user = UserService.currentUser();
+ $scope.users = null;
+ $scope.orderedUsers = [];
+ $scope.usersPerPage = 10;
$scope.newUser = {};
$scope.createdUser = null;
$scope.takeOwnershipInfo = null;
-
+ $scope.options = {
+ 'predicate': 'username',
+ 'reverse': false,
+ 'filter': null,
+ 'page': 0
+ };
$scope.showCreateUser = function () {
$scope.createdUser = null;
$('#createUserModal').modal('show');
};
+ var sortUsers = function() {
+ if (!$scope.users) {return;}
+ $scope.orderedUsers = TableService.buildOrderedItems($scope.users, $scope.options,
+ ['username', 'email'], []);
+ };
+
var loadUsersInternal = function () {
ApiService.listAllUsers().then(function (resp) {
$scope.users = resp['users'];
+ sortUsers();
$scope.showInterface = true;
}, function (resp) {
$scope.users = [];
$scope.usersError = ApiService.getErrorMessage(resp);
});
};
+ $scope.tablePredicateClass = function(name, predicate, reverse) {
+ if (name != predicate) {
+ return '';
+ }
+ return 'current ' + (reverse ? 'reversed' : '');
+ };
+
+ $scope.orderBy = function(predicate) {
+ if (predicate == $scope.options.predicate) {
+ $scope.options.reverse = !$scope.options.reverse;
+ return;
+ }
+ $scope.options.reverse = false;
+ $scope.options.predicate = predicate;
+ };
$scope.createUser = function () {
$scope.creatingUser = true;
$scope.createdUser = null;
@@ -224,6 +255,10 @@ angular.module('quay').directive('manageUserTab', function () {
loadUsersInternal();
}
});
+
+ $scope.$watch('options.predicate', sortUsers);
+ $scope.$watch('options.reverse', sortUsers);
+ $scope.$watch('options.filter', sortUsers);
}
};
return directiveDefinitionObject;
diff --git a/static/js/pages/superuser.js b/static/js/pages/superuser.js
index 91bee789a..4751c0b67 100644
--- a/static/js/pages/superuser.js
+++ b/static/js/pages/superuser.js
@@ -10,7 +10,7 @@
})
}]);
- function SuperuserCtrl($scope, ApiService, Features, UserService, ContainerService, AngularPollChannel, CoreDialog) {
+ function SuperuserCtrl($scope, ApiService, Features, UserService, ContainerService, AngularPollChannel, CoreDialog, TableService) {
if (!Features.SUPER_USERS) {
return;
}
@@ -31,6 +31,14 @@
$scope.serviceKeysActive = false;
$scope.globalMessagesActive = false;
$scope.manageUsersActive = false;
+ $scope.orderedOrgs = [];
+ $scope.orgsPerPage = 10;
+ $scope.options = {
+ 'predicate': 'name',
+ 'reverse': false,
+ 'filter': null,
+ 'page': 0,
+ }
$scope.loadMessageOfTheDay = function () {
$scope.globalMessagesActive = true;
@@ -106,9 +114,16 @@
$scope.loadOrganizationsInternal();
};
+ var sortOrgs = function() {
+ if (!$scope.organizations) {return;}
+ $scope.orderedOrgs = TableService.buildOrderedItems($scope.organizations, $scope.options,
+ ['name', 'email'], []);
+ };
+
$scope.loadOrganizationsInternal = function() {
$scope.organizationsResource = ApiService.listAllOrganizationsAsResource().get(function(resp) {
$scope.organizations = resp['organizations'];
+ sortOrgs();
return $scope.organizations;
});
};
@@ -117,6 +132,21 @@
$scope.manageUsersActive = true;
};
+ $scope.tablePredicateClass = function(name, predicate, reverse) {
+ if (name != predicate) {
+ return '';
+ }
+ return 'current ' + (reverse ? 'reversed' : '');
+ };
+
+ $scope.orderBy = function(predicate) {
+ if (predicate == $scope.options.predicate) {
+ $scope.options.reverse = !$scope.options.reverse;
+ return;
+ }
+ $scope.options.reverse = false;
+ $scope.options.predicate = predicate;
+ };
$scope.askDeleteOrganization = function(org) {
bootbox.confirm('Are you sure you want to delete this organization? Its data will be deleted with it.',
function(result) {
@@ -185,5 +215,9 @@
// Load the initial status.
$scope.checkStatus();
+ $scope.$watch('options.predicate', sortOrgs);
+ $scope.$watch('options.reverse', sortOrgs);
+ $scope.$watch('options.filter', sortOrgs);
+
}
}());
diff --git a/static/partials/super-user.html b/static/partials/super-user.html
index 4e9eaa943..68605654c 100644
--- a/static/partials/super-user.html
+++ b/static/partials/super-user.html
@@ -111,17 +111,29 @@
-
+
+
+
+
+
+
- |