Skip to content
Snippets Groups Projects
Commit b4253735 authored by Alfredo Sumaran's avatar Alfredo Sumaran
Browse files

Fix toggling subgroups and pagination

parent 6f859430
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -14,7 +14,7 @@ export default {
},
methods: {
toggleSubGroups(e) {
if (e.target.tagName === 'A' || !this.hasSubgroups ) {
if (e.target.tagName === 'A' || !this.hasSubgroups) {
return false;
}
 
Loading
Loading
Loading
Loading
@@ -34,12 +34,18 @@ $(() => {
fetchGroups(parentGroup) {
let parentId = null;
let getGroups = null;
let page = null;
let pageParam = null;
 
if (parentGroup) {
parentId = parentGroup.id;
}
 
const page = gl.utils.getParameterByName('page');
pageParam = gl.utils.getParameterByName('page');
if (pageParam) {
page = pageParam;
}
 
getGroups = service.getGroups(parentId, page);
getGroups.then((response) => {
Loading
Loading
@@ -53,8 +59,10 @@ $(() => {
},
toggleSubGroups(parentGroup = null) {
if (!parentGroup.isOpen) {
store.resetGroups(parentGroup);
this.fetchGroups(parentGroup);
}
GroupsStore.toggleSubGroups(parentGroup);
},
},
Loading
Loading
Loading
Loading
@@ -8,7 +8,7 @@ export default class GroupsService {
this.groups = Vue.resource(endpoint);
}
 
getGroups(parentId, page = 1) {
getGroups(parentId, page) {
const data = {};
 
if (parentId) {
Loading
Loading
/* eslint-disable class-methods-use-this */
export default class GroupsStore {
constructor() {
this.state = {};
Loading
Loading
@@ -9,7 +10,7 @@ export default class GroupsStore {
 
setGroups(rawGroups, parent = null) {
const parentGroup = parent;
const tree = this.buildTree(rawGroups);
const tree = this.buildTree(rawGroups, parentGroup);
 
if (parentGroup) {
parentGroup.subGroups = tree;
Loading
Loading
@@ -20,6 +21,11 @@ export default class GroupsStore {
return tree;
}
 
resetGroups(parent) {
const parentGroup = parent;
parentGroup.subGroups = {};
}
storePagination(pagination = {}) {
let paginationInfo;
 
Loading
Loading
@@ -33,7 +39,7 @@ export default class GroupsStore {
this.state.pageInfo = paginationInfo;
}
 
buildTree(rawGroups) {
buildTree(rawGroups, parentGroup) {
const groups = this.decorateGroups(rawGroups);
const tree = {};
const mappedGroups = {};
Loading
Loading
@@ -49,11 +55,14 @@ export default class GroupsStore {
Object.keys(mappedGroups).map((key) => {
const currentGroup = mappedGroups[key];
// If the group is not at the root level, add it to its parent array of subGroups.
const parentGroup = mappedGroups[currentGroup.parentId];
const findParentGroup = mappedGroups[currentGroup.parentId];
if (currentGroup.parentId) {
if (parentGroup) {
if (findParentGroup) {
mappedGroups[currentGroup.parentId].subGroups[currentGroup.id] = currentGroup;
mappedGroups[currentGroup.parentId].isOpen = true; // Expand group if it has subgroups
} else if (parentGroup && parentGroup.id === currentGroup.parentId) {
tree[currentGroup.id] = currentGroup;
} else {
// Means the groups hast no direct parent.
// Save for later processing, we will add them to its corresponding base group
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment