From 44f4195eee44d2cfac4e7e91afe5d25ec807a6b2 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Thu, 7 Jan 2016 15:48:59 +0100 Subject: Keep scroll position in users page when sorting When sorting, some browsers like Chrome will lose the scroll position, possibly because the sorting code is touching the DOM elements. This fix saves the scroll position before sorting and sets it back afterwards. --- settings/js/users/users.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/settings/js/users/users.js b/settings/js/users/users.js index aea94053572..151ab6cdecc 100644 --- a/settings/js/users/users.js +++ b/settings/js/users/users.js @@ -259,6 +259,10 @@ var UserList = { } }, doSort: function() { + // some browsers like Chrome lose the scrolling information + // when messing with the list elements + var lastScrollTop = this.scrollArea.scrollTop(); + var lastScrollLeft = this.scrollArea.scrollLeft(); var rows = $userListBody.find('tr').get(); rows.sort(function(a, b) { @@ -284,6 +288,8 @@ var UserList = { if(items.length > 0) { $userListBody.append(items); } + this.scrollArea.scrollTop(lastScrollTop); + this.scrollArea.scrollLeft(lastScrollLeft); }, checkUsersToLoad: function() { //30 shall be loaded initially, from then on always 10 upon scrolling @@ -605,10 +611,11 @@ $(document).ready(function () { // Implements User Search OCA.Search.users= new UserManagementFilter(UserList, GroupList); + UserList.scrollArea = $('#app-content'); + UserList.doSort(); UserList.availableGroups = $userList.data('groups'); - UserList.scrollArea = $('#app-content'); UserList.scrollArea.scroll(function(e) {UserList._onScroll(e);}); $userList.after($('')); -- cgit v1.2.3