summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/groups/stores/groups_store.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/groups/stores/groups_store.js')
-rw-r--r--app/assets/javascripts/groups/stores/groups_store.js17
1 files changed, 13 insertions, 4 deletions
diff --git a/app/assets/javascripts/groups/stores/groups_store.js b/app/assets/javascripts/groups/stores/groups_store.js
index 1bba9c3158f..e59aee42400 100644
--- a/app/assets/javascripts/groups/stores/groups_store.js
+++ b/app/assets/javascripts/groups/stores/groups_store.js
@@ -1,3 +1,4 @@
+/* eslint-disable class-methods-use-this */
export default class GroupsStore {
constructor() {
this.state = {};
@@ -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;
@@ -20,6 +21,11 @@ export default class GroupsStore {
return tree;
}
+ resetGroups(parent) {
+ const parentGroup = parent;
+ parentGroup.subGroups = {};
+ }
+
storePagination(pagination = {}) {
let paginationInfo;
@@ -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 = {};
@@ -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