Remove root nodes source edge

This commit is contained in:
Thomas Nordquist
2019-01-01 13:37:59 +01:00
parent 6d9d5fcb0d
commit 4e09ea3d30
4 changed files with 17 additions and 13 deletions

View File

@@ -5,8 +5,8 @@ export class Edge {
public name: string public name: string
public node!: TreeNode public node!: TreeNode
public source: TreeNode | undefined public source?: TreeNode | undefined
public target: TreeNode | undefined private cachedHash?: string
constructor(name: string) { constructor(name: string) {
this.name = name this.name = name
@@ -17,12 +17,16 @@ export class Edge {
} }
public hash(): string { public hash(): string {
let previousHash = this.source ? this.source.sourceEdge.hash() : '' if (!this.cachedHash) {
return 'H' + sha1(previousHash + this.name) let previousHash = (this.source && this.source.sourceEdge) ? this.source.sourceEdge.hash() : ''
this.cachedHash = 'H' + sha1(previousHash + this.name)
}
return this.cachedHash
} }
public firstEdge(): Edge { public firstEdge(): Edge {
if (this.source) { if (this.source && this.source.sourceEdge) {
return this.source.sourceEdge.firstEdge() return this.source.sourceEdge.firstEdge()
} else { } else {
return this return this

View File

@@ -2,8 +2,6 @@ import { Edge, TreeNode } from './'
export class Tree extends TreeNode { export class Tree extends TreeNode {
constructor() { constructor() {
const rootEdge = new Edge('') super(undefined, undefined)
super(rootEdge, undefined)
rootEdge.node = this
} }
} }

View File

@@ -3,15 +3,17 @@ import { EventEmitter } from 'events'
export class TreeNode extends EventEmitter { export class TreeNode extends EventEmitter {
public sourceEdge?: Edge public sourceEdge?: Edge
public value: any | null | undefined = undefined public value?: any | null
public edges: {[s: string]: Edge} = {} public edges: {[s: string]: Edge} = {}
public collapsed = false public collapsed = false
constructor(sourceEdge: Edge, value: any) { constructor(sourceEdge?: Edge, value?: any) {
super() super()
if (sourceEdge) {
this.sourceEdge = sourceEdge this.sourceEdge = sourceEdge
sourceEdge.target = this sourceEdge.target = this
}
this.value = value this.value = value
} }

View File

@@ -25,7 +25,7 @@ export abstract class TreeNodeFactory {
let leaf = reversed[0].node let leaf = reversed[0].node
let sourceTree = new Tree() let sourceTree = new Tree()
sourceTree.addEdge(leaf.firstNode().sourceEdge) sourceTree.updateWithNode(leaf.firstNode())
return leaf return leaf
} }