-
-
-
-
-
-
- |
- User |
- Groups |
- Actions |
-
-
-
-
- |
-
- |
-
- {{ user.displayName }} {{ user.username }}
- |
-
- {{ user.fallbackEmail }}
- |
-
-
- {{ groupsById[groupId].name }}
-
- |
-
-
-
-
-
- |
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ |
+ User |
+ Groups |
+ Actions |
+
+
+
+
+ |
+
+ |
+
+ {{ user.displayName }} {{ user.username }}
+ |
+
+ {{ user.fallbackEmail }}
+ |
+
+
+ {{ groupsById[groupId].name }}
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
diff --git a/src/views/users.js b/src/views/users.js
index a38079315..81a7f8f1f 100644
--- a/src/views/users.js
+++ b/src/views/users.js
@@ -4,6 +4,7 @@
/* global Clipboard:false */
/* global asyncForEach:false */
/* global asyncSeries:false */
+/* global $:false */
angular.module('Application').controller('UsersController', ['$scope', '$location', '$timeout', 'Client', function ($scope, $location, $timeout, Client) {
Client.onReady(function () { if (!Client.getUserInfo().admin) $location.path('/'); });
@@ -16,6 +17,15 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.config = Client.getConfig();
$scope.userInfo = Client.getUserInfo();
+ $scope.currentPage = 1;
+ $scope.pageItemCount = [
+ { name: 'Show 20 per page', value: 20 },
+ { name: 'Show 50 per page', value: 50 },
+ { name: 'Show 100 per page', value: 100 }
+ ];
+ $scope.pageItems = $scope.pageItemCount[0];
+ $scope.userRefreshBusy = false;
+
$scope.groupMembers = function (group) {
return group.userIds.filter(function (uid) { return !!$scope.usersById[uid]; }).map(function (uid) { return $scope.usersById[uid].username || $scope.usersById[uid].email; }).join(' ');
};
@@ -442,7 +452,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
function getUsers(callback) {
var users = [ ];
- Client.getUsers(function (error, results) {
+ Client.getUsers($scope.currentPage, $scope.pageItems.value, function (error, results) {
if (error) return console.error(error);
asyncForEach(results, function (result, iteratorDone) {
@@ -479,6 +489,23 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
});
}
+ function refreshUsers() {
+ $scope.userRefreshBusy = true;
+
+ getUsers(function (error, result) {
+ if (error) return console.error('Unable to get user listing.', error);
+
+ angular.copy(result, $scope.users);
+ $scope.usersById = { };
+ for (var i = 0; i < result.length; i++) {
+ $scope.usersById[result[i].id] = result[i];
+ }
+
+ $scope.ready = true;
+ $scope.userRefreshBusy = false;
+ });
+ }
+
function refresh() {
getGroups(function (error, result) {
if (error) return console.error('Unable to get group listing.', error);
@@ -489,20 +516,26 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.groupsById[result[i].id] = result[i];
}
- getUsers(function (error, result) {
- if (error) return console.error('Unable to get user listing.', error);
-
- angular.copy(result, $scope.users);
- $scope.usersById = { };
- for (var i = 0; i < result.length; i++) {
- $scope.usersById[result[i].id] = result[i];
- }
-
- $scope.ready = true;
- });
+ refreshUsers();
});
}
+ $scope.showNextPage = function () {
+ $scope.currentPage++;
+ refreshUsers();
+ };
+
+ $scope.showPrevPage = function () {
+ if ($scope.currentPage > 1) $scope.currentPage--;
+ else $scope.currentPage = 1;
+ refreshUsers();
+ };
+
+ $scope.updateFilter = function (fresh) {
+ if (fresh) $scope.currentPage = 1;
+ refreshUsers();
+ };
+
Client.onReady(refresh);
// setup all the dialog focus handling