Restore previous tree format

Tree object is an array now.

- All groups are displayed at the top level
- To access subgroups now we have to click every parent which will make a request to fetch sub groups.

[ci skip]
This commit is contained in:
Alfredo Sumaran 2017-05-17 01:28:28 -05:00
parent 07f985bc48
commit a87d447c35
5 changed files with 13 additions and 49 deletions

View file

@ -2,13 +2,13 @@
export default { export default {
props: { props: {
groups: { groups: {
type: Object, type: Array,
required: true, required: true,
}, },
}, },
computed: { computed: {
hasGroups() { hasGroups() {
return Object.keys(this.groups).length > 0; return this.groups.length > 0;
}, },
}, },
}; };

View file

@ -29,7 +29,7 @@ export default {
}; };
}, },
isExpandable() { isExpandable() {
return Object.keys(this.group.subGroups).length > 0; return this.group.subGroups.length > 0;
}, },
}, },
}; };

View file

@ -2,7 +2,7 @@
export default { export default {
props: { props: {
groups: { groups: {
type: Object, type: Array,
required: true, required: true,
}, },
}, },

View file

@ -1,7 +1,7 @@
export default class GroupsStore { export default class GroupsStore {
constructor() { constructor() {
this.state = {}; this.state = {};
this.state.groups = {}; this.state.groups = [];
return this; return this;
} }
@ -10,42 +10,14 @@ export default class GroupsStore {
const parentGroup = parent; const parentGroup = parent;
if (parentGroup) { if (parentGroup) {
parentGroup.subGroups = this.buildTree(rawGroups); parentGroup.subGroups = this.decorateGroups(rawGroups);
} else { } else {
this.state.groups = this.buildTree(rawGroups); this.state.groups = this.decorateGroups(rawGroups);
} }
return rawGroups; return rawGroups;
} }
buildTree(rawGroups) {
const groups = this.decorateGroups(rawGroups);
const tree = {};
const mappedGroups = {};
// Map groups to an object
for (let i = 0, len = groups.length; i < len; i += 1) {
const group = groups[i];
mappedGroups[group.id] = group;
mappedGroups[group.id].subGroups = {};
}
Object.keys(mappedGroups).forEach((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];
if (currentGroup.parentId && parentGroup) {
mappedGroups[currentGroup.parentId].subGroups[currentGroup.id] = currentGroup;
mappedGroups[currentGroup.parentId].isOpen = true; // Expand group if it has subgroups
} else {
// If the group is at the root level, add it to first level elements array.
tree[currentGroup.id] = currentGroup;
}
});
return tree;
}
decorateGroups(rawGroups) { decorateGroups(rawGroups) {
this.groups = rawGroups.map(GroupsStore.decorateGroup); this.groups = rawGroups.map(GroupsStore.decorateGroup);
return this.groups; return this.groups;
@ -62,7 +34,7 @@ export default class GroupsStore {
isOpen: false, isOpen: false,
numberProjects: 10, numberProjects: 10,
numberMembers: 10, numberMembers: 10,
subGroups: {}, subGroups: [],
}; };
} }

View file

@ -307,7 +307,7 @@ ul.indent-list {
border-top: solid 1px $border-white-light; border-top: solid 1px $border-white-light;
position: relative; position: relative;
&:before { &::before {
content: ''; content: '';
display: block; display: block;
width: 0; width: 0;
@ -321,7 +321,7 @@ ul.indent-list {
.group-row { .group-row {
position: relative; position: relative;
&:before { &::before {
content: ""; content: "";
display: block; display: block;
width: 10px; width: 10px;
@ -332,20 +332,12 @@ ul.indent-list {
left: -16px; left: -16px;
} }
&:last-child:before { &:last-child::before {
background: white; background: $white-light;
height: auto; height: auto;
top: 30px; top: 30px;
bottom: 0; bottom: 0;
} }
} }
} }
.branch-connector {
&:after {
content: ' ';
position: absolute;
background-color: red;
}
}
} }