From 63b3ebaceaa5189d2af45ec92e8f543306ac9be4 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Sat, 14 Oct 2017 23:15:53 +0800 Subject: [PATCH] feat(uses): admin list pagination --- config/env/torrents.js | 4 +- .../admin/list-users.client.controller.js | 73 +++++++------- .../views/admin/list-users.client.view.html | 12 +-- .../controllers/admin.server.controller.js | 97 +++++++++++++++++-- 4 files changed, 139 insertions(+), 47 deletions(-) diff --git a/config/env/torrents.js b/config/env/torrents.js index 78207172..ffdbbdf0 100644 --- a/config/env/torrents.js +++ b/config/env/torrents.js @@ -705,6 +705,7 @@ module.exports = { * @torrentsPerPage: torrents list page settings * @torrentsCommentsPerPage: torrent comments list settings * @tracesPerPage: system traces log list page settings + * @adminUserListPerPage: admin manage users list page settings */ itemsPerPage: { topicsPerPage: 10, @@ -712,7 +713,8 @@ module.exports = { topicsSearchPerPage: 10, torrentsPerPage: 15, torrentsCommentsPerPage: 10, - tracesPerPage: 30 + tracesPerPage: 30, + adminUserListPerPage: 15 }, /** diff --git a/modules/users/client/controllers/admin/list-users.client.controller.js b/modules/users/client/controllers/admin/list-users.client.controller.js index 20bd0eb2..c14dd766 100644 --- a/modules/users/client/controllers/admin/list-users.client.controller.js +++ b/modules/users/client/controllers/admin/list-users.client.controller.js @@ -5,10 +5,12 @@ .module('users.admin') .controller('UserListController', UserListController); - UserListController.$inject = ['$scope', '$filter', 'AdminService', 'DebugConsoleService']; + UserListController.$inject = ['$scope', '$filter', 'AdminService', 'DebugConsoleService', 'MeanTorrentConfig', '$timeout']; - function UserListController($scope, $filter, AdminService, mtDebug) { + function UserListController($scope, $filter, AdminService, mtDebug, MeanTorrentConfig, $timeout) { var vm = this; + vm.itemsPerPageConfig = MeanTorrentConfig.meanTorrentConfig.itemsPerPage; + vm.buildPager = buildPager; vm.figureOutItemsToDisplay = figureOutItemsToDisplay; vm.pageChanged = pageChanged; @@ -16,56 +18,61 @@ vm.searchAdmin = false; vm.searchOper = false; - AdminService.query(function (data) { - vm.users = data; - mtDebug.info(data); - vm.buildPager(); - }); - /** * buildPager */ function buildPager() { vm.pagedItems = []; - vm.itemsPerPage = 15; + vm.itemsPerPage = vm.itemsPerPageConfig.adminUserListPerPage; vm.currentPage = 1; vm.figureOutItemsToDisplay(); } /** * figureOutItemsToDisplay + * @param callback */ - function figureOutItemsToDisplay() { - vm.resultUsers = vm.users; - if (vm.searchVip) { - vm.resultUsers = $filter('filter')(vm.resultUsers, { - isVip: true - }); - } - if (vm.searchAdmin) { - vm.resultUsers = $filter('filter')(vm.resultUsers, { - isAdmin: true - }); - } - if (vm.searchOper) { - vm.resultUsers = $filter('filter')(vm.resultUsers, { - isOper: true - }); - } - vm.filteredItems = $filter('filter')(vm.resultUsers, { - $: vm.search + function figureOutItemsToDisplay(callback) { + vm.getUsers(vm.currentPage, function (items) { + vm.filterLength = items.total; + vm.pagedItems = items.rows; + + if (callback) callback(); }); - vm.filterLength = vm.filteredItems.length; - var begin = ((vm.currentPage - 1) * vm.itemsPerPage); - var end = begin + vm.itemsPerPage; - vm.pagedItems = vm.filteredItems.slice(begin, end); + } + /** + * getUsers + * @param p + * @param callback + */ + vm.getUsers = function (p, callback) { + AdminService.get({ + skip: (p - 1) * vm.itemsPerPage, + limit: vm.itemsPerPage, + isVip: vm.searchVip || undefined, + isOper: vm.searchOper || undefined, + isAdmin: vm.searchAdmin || undefined, + keys: vm.search + }, function (data) { + mtDebug.info(data); + callback(data); + }); + }; + + /** * pageChanged */ function pageChanged() { - vm.figureOutItemsToDisplay(); + var element = angular.element('#top_of_users_list'); + + vm.figureOutItemsToDisplay(function () { + $timeout(function () { + $('html,body').animate({scrollTop: element[0].offsetTop + 15}, 200); + }, 10); + }); } } diff --git a/modules/users/client/views/admin/list-users.client.view.html b/modules/users/client/views/admin/list-users.client.view.html index f60c8053..b2a21678 100644 --- a/modules/users/client/views/admin/list-users.client.view.html +++ b/modules/users/client/views/admin/list-users.client.view.html @@ -1,22 +1,22 @@ -
-