@@ -14,19 +14,29 @@ class DirectedGraphConstructTracer extends Tracer {
1414 constructor ( name , nodePlacement = null ) {
1515 super ( name ) ;
1616 this . nodePlacement = nodePlacement ;
17+ this . nodeCollection = [ ] ;
1718 if ( this . isNew ) initView ( this ) ;
1819 }
1920
20- _addNode ( G , root , element , parentElement = null ) {
21+ _addRoot ( root ) {
22+ this . manager . pushStep ( this . capsule , {
23+ type : 'addRoot' ,
24+ arguments : arguments
25+ } ) ;
26+ return this ;
27+ }
28+
29+ _addNode ( element , parentElement = null ) {
2130 this . manager . pushStep ( this . capsule , {
2231 type : 'addNode' ,
2332 arguments : arguments
2433 } ) ;
2534 return this ;
2635 }
2736
28- _findNode ( G , val ) {
37+ _findNode ( val ) {
2938 var idToFind = this . n ( val ) ;
39+ var G = this . nodeCollection ;
3040 var result = null ;
3141 for ( let i = 0 ; i < G . length ; i ++ ) {
3242 if ( G [ i ] . id === idToFind ) {
@@ -37,10 +47,9 @@ class DirectedGraphConstructTracer extends Tracer {
3747 return result ;
3848 }
3949
40- _visit ( G , target , source ) {
50+ _visit ( target , source ) {
4151 this . manager . pushStep ( this . capsule , {
4252 type : 'visit' ,
43- G : G ,
4453 target : target ,
4554 source : source
4655 } ) ;
@@ -77,13 +86,16 @@ class DirectedGraphConstructTracer extends Tracer {
7786 node . y = position . y ;
7887 } ) ;
7988 break ;
89+ case 'addRoot' :
90+ this . addRoot . apply ( this , step . arguments ) ;
91+ break ;
8092 case 'addNode' :
8193 this . addNode . apply ( this , step . arguments ) ;
8294 break ;
8395 case 'visit' :
8496 case 'leave' :
8597 var visit = step . type == 'visit' ;
86- var nodeObject = this . _findNode ( step . G , step . target ) ;
98+ var nodeObject = this . _findNode ( step . target ) ;
8799 nodeObject . visited = visit ;
88100 nodeObject . isNew = false ;
89101 var targetNode = this . graph . nodes ( this . n ( step . target ) ) ;
@@ -108,9 +120,20 @@ class DirectedGraphConstructTracer extends Tracer {
108120 }
109121 }
110122
111- addNode ( G , root , node , parent ) {
123+ addRoot ( root ) {
124+ if ( this . rootObject ) throw 'Root for this graph is already added' ;
125+ this . rootObject = this . createGraphNode ( root ) ;
126+ this . drawGraph ( this . rootObject . level ) ;
127+ }
128+
129+ addNode ( node , parent ) {
130+ var nodeObject = this . createGraphNode ( node , parent )
131+ this . drawGraph ( nodeObject . level ) ;
132+ }
133+
134+ createGraphNode ( node , parent ) {
112135 var nodeObject = this . nodeConstruct ( node ) ;
113- var parentObject = this . _findNode ( G , parent ) ;
136+ var parentObject = this . _findNode ( parent ) ;
114137 if ( parentObject ) {
115138 nodeObject . parent = parentObject ;
116139 nodeObject . level = parentObject . level + 1 ;
@@ -131,18 +154,14 @@ class DirectedGraphConstructTracer extends Tracer {
131154 }
132155 if ( isSpliced ) {
133156 parentObject . children . splice ( insertIndex , 0 , nodeObject ) ;
134- console . log ( 'exchange Happened' ) ;
135157 } else {
136158 parentObject . children . push ( nodeObject ) ;
137159 }
138160 }
139161 }
140162 nodeObject . updateBreadth ( ) ;
141- G . push ( nodeObject ) ;
142- this . drawGraph ( G , root , nodeObject . level ) ;
143- if ( node === 4 ) {
144- console . log ( this . graph . nodes ) ;
145- }
163+ this . nodeCollection . push ( nodeObject ) ;
164+ return nodeObject ;
146165 }
147166
148167 nodeConstruct ( val ) {
@@ -171,7 +190,7 @@ class DirectedGraphConstructTracer extends Tracer {
171190 return nodeObject ;
172191 }
173192
174- drawGraph ( G , root , nodeLevel ) {
193+ drawGraph ( nodeLevel ) {
175194 const nodes = [ ] ;
176195 const edges = [ ] ;
177196 var tracer = this ;
@@ -210,9 +229,8 @@ class DirectedGraphConstructTracer extends Tracer {
210229 occupiedBreadth += node . breadth ;
211230 }
212231 }
213- }
214- var rootObject = this . _findNode ( G , root ) ;
215- drawNode ( rootObject ) ;
232+ } ;
233+ drawNode ( this . rootObject ) ;
216234
217235 this . graph . clear ( ) ;
218236 this . graph . read ( {
@@ -251,8 +269,10 @@ class DirectedGraphConstructTracer extends Tracer {
251269 }
252270
253271 clearGraphColor ( ) {
254- var tracer = this ;
255-
272+ this . nodeCollection . forEach ( function ( node ) {
273+ node . isNew = false ;
274+ } ) ;
275+
256276 this . graph . nodes ( ) . forEach ( function ( node ) {
257277 node . color = tracer . color . default ;
258278 } ) ;
0 commit comments