Speed up user listing by performing parallel requests

This commit is contained in:
Johannes Zellner
2019-01-16 14:02:08 +01:00
parent 4ead9cbf6a
commit adf3172ebb
4 changed files with 44 additions and 14 deletions

View File

@@ -2,7 +2,7 @@
/* global angular:false */
/* global Clipboard:false */
/* global asyncForEach:false */
/* global asyncForEachParallel:false */
/* global asyncSeries:false */
/* global $:false */
@@ -17,6 +17,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.config = Client.getConfig();
$scope.userInfo = Client.getUserInfo();
$scope.userSearchString = '';
$scope.currentPage = 1;
$scope.pageItemCount = [
{ name: 'Show 20 per page', value: 20 },
@@ -24,7 +25,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
{ name: 'Show 100 per page', value: 100 }
];
$scope.pageItems = $scope.pageItemCount[0];
$scope.userRefreshBusy = false;
$scope.userRefreshBusy = true;
$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(' ');
@@ -450,12 +451,12 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
};
function getUsers(callback) {
var users = [ ];
var users = [];
Client.getUsers($scope.currentPage, $scope.pageItems.value, function (error, results) {
Client.getUsers($scope.userSearchString, $scope.currentPage, $scope.pageItems.value, function (error, results) {
if (error) return console.error(error);
asyncForEach(results, function (result, iteratorDone) {
asyncForEachParallel(results, function (result, iteratorDone) {
Client.getUser(result.id, function (error, user) {
if (error) return iteratorDone(error);
@@ -470,12 +471,12 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
}
function getGroups(callback) {
var groups = [ ];
var groups = [];
Client.getGroups(function (error, results) {
if (error) return console.error(error);
asyncForEach(results, function (result, iteratorDone) {
asyncForEachParallel(results, function (result, iteratorDone) {
Client.getGroup(result.id, function (error, group) {
if (error) return iteratorDone(error);