Replace EventEmitter with typed EventDispatcher

This commit is contained in:
Thomas Nordquist
2019-01-06 13:49:20 +01:00
parent 32c3079821
commit 260f31fea0
5 changed files with 30 additions and 49 deletions

View File

@@ -1,22 +1,18 @@
import { Edge, Message } from './'
import { EventEmitter } from 'events'
import { EventDispatcher } from '../../../events'
export enum TreeNodeUpdateEvents {
edges = 'edges',
message = 'message',
merge = 'merge',
}
export class TreeNode extends EventEmitter {
export class TreeNode {
public sourceEdge?: Edge
public message?: Message
public edges: {[s: string]: Edge} = {}
public collapsed = false
public messages: number = 0
constructor(sourceEdge?: Edge, message?: Message) {
super()
public onMerge = new EventDispatcher<void, TreeNode>(this)
public onEdgesChange = new EventDispatcher<void, TreeNode>(this)
public onMessage = new EventDispatcher<Message, TreeNode>(this)
constructor(sourceEdge?: Edge, message?: Message) {
if (sourceEdge) {
this.sourceEdge = sourceEdge
sourceEdge.target = this
@@ -25,10 +21,6 @@ export class TreeNode extends EventEmitter {
this.setMessage(message)
}
private propagateUpdate(event: TreeNodeUpdateEvents) {
this.emit(event)
}
public setMessage(value: any) {
this.message = value
this.messages += 1
@@ -58,7 +50,7 @@ export class TreeNode extends EventEmitter {
edge.source = this
if (emitUpdate) {
this.propagateUpdate(TreeNodeUpdateEvents.edges)
this.onEdgesChange.dispatch()
}
}
@@ -74,11 +66,11 @@ export class TreeNode extends EventEmitter {
public updateWithNode(node: TreeNode) {
if (node.message) {
this.setMessage(node.message)
this.propagateUpdate(TreeNodeUpdateEvents.message)
this.onMessage.dispatch(node.message)
}
this.mergeEdges(node)
this.propagateUpdate(TreeNodeUpdateEvents.merge)
this.onMerge.dispatch()
}
public leafes(): TreeNode[] {
@@ -106,7 +98,7 @@ export class TreeNode extends EventEmitter {
}
if (edgesDidUpdate) {
this.propagateUpdate(TreeNodeUpdateEvents.edges)
this.onEdgesChange.dispatch()
}
}
}