Skip to content
This repository has been archived by the owner on Jun 17, 2022. It is now read-only.

Commit

Permalink
store parent node
Browse files Browse the repository at this point in the history
  • Loading branch information
kspearrin committed Oct 26, 2018
1 parent d4b3a16 commit aa0b274
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 8 deletions.
12 changes: 7 additions & 5 deletions src/misc/serviceUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {

export class ServiceUtils {
static nestedTraverse(nodeTree: Array<TreeNode<ITreeNodeObject>>, partIndex: number, parts: string[],
obj: ITreeNodeObject, delimiter: string) {
obj: ITreeNodeObject, parent: ITreeNodeObject, delimiter: string) {
if (parts.length <= partIndex) {
return;
}
Expand All @@ -17,21 +17,23 @@ export class ServiceUtils {
if (nodeTree[i].node.name === parts[partIndex]) {
if (end && nodeTree[i].node.id !== obj.id) {
// Another node with the same name.
nodeTree.push(new TreeNode(obj, partName));
nodeTree.push(new TreeNode(obj, partName, parent));
return;
}
ServiceUtils.nestedTraverse(nodeTree[i].children, partIndex + 1, parts, obj, delimiter);
ServiceUtils.nestedTraverse(nodeTree[i].children, partIndex + 1, parts,
obj, nodeTree[i].node, delimiter);
return;
}
}

if (nodeTree.filter((n) => n.node.name === partName).length === 0) {
if (end) {
nodeTree.push(new TreeNode(obj, partName));
nodeTree.push(new TreeNode(obj, partName, parent));
return;
}
const newPartName = parts[partIndex] + delimiter + parts[partIndex + 1];
ServiceUtils.nestedTraverse(nodeTree, 0, [newPartName, ...parts.slice(partIndex + 2)], obj, delimiter);
ServiceUtils.nestedTraverse(nodeTree, 0, [newPartName, ...parts.slice(partIndex + 2)],
obj, parent, delimiter);
}
}

Expand Down
4 changes: 3 additions & 1 deletion src/models/domain/treeNode.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
export class TreeNode<T extends ITreeNodeObject> {
parent: T;
node: T;
children: Array<TreeNode<T>> = [];

constructor(node: T, name: string) {
constructor(node: T, name: string, parent: T) {
this.parent = parent;
this.node = node;
this.node.name = name;
}
Expand Down
3 changes: 2 additions & 1 deletion src/services/collection.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,8 @@ export class CollectionService implements CollectionServiceAbstraction {
collections.forEach((f) => {
const collectionCopy = new CollectionView();
collectionCopy.id = f.id;
ServiceUtils.nestedTraverse(nodes, 0, f.name.split(NestingDelimiter), collectionCopy, NestingDelimiter);
ServiceUtils.nestedTraverse(nodes, 0, f.name.split(NestingDelimiter), collectionCopy,
null, NestingDelimiter);
});
return nodes;
}
Expand Down
3 changes: 2 additions & 1 deletion src/services/folder.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ export class FolderService implements FolderServiceAbstraction {
const folderCopy = new FolderView();
folderCopy.id = f.id;
folderCopy.revisionDate = f.revisionDate;
ServiceUtils.nestedTraverse(nodes, 0, f.name.split(NestingDelimiter), folderCopy, NestingDelimiter);
ServiceUtils.nestedTraverse(nodes, 0, f.name.split(NestingDelimiter), folderCopy,
null, NestingDelimiter);
});
return nodes;
}
Expand Down

0 comments on commit aa0b274

Please sign in to comment.