Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlfredo Sumaran <alfredo@gitlab.com>2017-06-06 08:06:08 +0300
committerAlfredo Sumaran <alfredo@gitlab.com>2017-06-06 12:31:40 +0300
commit323a326c73f4aabf37bf79f8e42350c128983c2d (patch)
treefb21b276fac004c817871c68af5a349bc8ed012f /app/assets/javascripts/groups/index.js
parentea531e1effa51bcec84e50a69901e6eec7c789c1 (diff)
Improve pagination when searching or filtering
[ci skip]
Diffstat (limited to 'app/assets/javascripts/groups/index.js')
-rw-r--r--app/assets/javascripts/groups/index.js35
1 files changed, 31 insertions, 4 deletions
diff --git a/app/assets/javascripts/groups/index.js b/app/assets/javascripts/groups/index.js
index 21a1c71ca77..9c2e37dd5f1 100644
--- a/app/assets/javascripts/groups/index.js
+++ b/app/assets/javascripts/groups/index.js
@@ -37,7 +37,9 @@ document.addEventListener('DOMContentLoaded', () => {
let parentId = null;
let getGroups = null;
let page = null;
+ let sort = null;
let pageParam = null;
+ let sortParam = null;
let filterGroups = null;
let filterGroupsParam = null;
@@ -55,9 +57,14 @@ document.addEventListener('DOMContentLoaded', () => {
filterGroups = filterGroupsParam;
}
- getGroups = this.service.getGroups(parentId, page, filterGroups);
+ sortParam = gl.utils.getParameterByName('sort');
+ if (sortParam) {
+ sort = sortParam;
+ }
+
+ getGroups = this.service.getGroups(parentId, page, filterGroups, sort);
getGroups.then((response) => {
- eventHub.$emit('updateGroups', response.json(), parentGroup);
+ this.updateGroups(response.json(), parentGroup);
})
.catch(() => {
// TODO: Handle error
@@ -65,6 +72,17 @@ document.addEventListener('DOMContentLoaded', () => {
return getGroups;
},
+ fetchPage(page, filterGroups, sort) {
+ this.service.getGroups(null, page, filterGroups, sort)
+ .then((response) => {
+ this.updateGroups(response.json());
+ this.updatePagination(response.headers);
+ $.scrollTo(0);
+ })
+ .catch(() => {
+ // TODO: Handle error
+ });
+ },
toggleSubGroups(parentGroup = null) {
if (!parentGroup.isOpen) {
this.store.resetGroups(parentGroup);
@@ -95,9 +113,18 @@ document.addEventListener('DOMContentLoaded', () => {
const filter = document.querySelector('.js-groups-list-filter');
const holder = document.querySelector('.js-groups-list-holder');
- groupFilterList = new GroupFilterableList(form, filter, holder);
+ const opts = {
+ form,
+ filter,
+ holder,
+ filterEndpoint: el.dataset.endpoint,
+ pagePath: el.dataset.path,
+ };
+
+ groupFilterList = new GroupFilterableList(opts);
groupFilterList.initSearch();
+ eventHub.$on('fetchPage', this.fetchPage);
eventHub.$on('toggleSubGroups', this.toggleSubGroups);
eventHub.$on('leaveGroup', this.leaveGroup);
eventHub.$on('updateGroups', this.updateGroups);
@@ -106,7 +133,7 @@ document.addEventListener('DOMContentLoaded', () => {
mounted() {
this.fetchGroups()
.then((response) => {
- eventHub.$emit('updatePagination', response.headers);
+ this.updatePagination(response.headers);
})
.catch(() => {
// TODO: Handle error