1- var s = null , graph = null , sigmaCanvas = null ;
2-
31function DirectedGraphTracer ( module ) {
42 if ( Tracer . call ( this , module || DirectedGraphTracer ) ) {
53 DirectedGraphTracer . prototype . init . call ( this ) ;
@@ -13,14 +11,9 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
1311 init : function ( ) {
1412 var tracer = this ;
1513
16- if ( sigmaCanvas == null ) {
17- sigmaCanvas = $ . extend ( true , { } , sigma . canvas ) ;
18- } else {
19- sigma . canvas = $ . extend ( true , { } , sigmaCanvas ) ;
20- }
21- s = new sigma ( {
14+ this . s = this . capsule . s = new sigma ( {
2215 renderer : {
23- container : $module_container [ 0 ] ,
16+ container : this . $container [ 0 ] ,
2417 type : 'canvas'
2518 } ,
2619 settings : {
@@ -36,25 +29,26 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
3629 minNodeSize : .5 ,
3730 maxNodeSize : 12 ,
3831 labelSize : 'proportional' ,
39- labelSizeRatio : 1.3
32+ labelSizeRatio : 1.3 ,
33+ funcLabelsDef : function ( node , context , settings ) {
34+ tracer . drawLabel ( node , context , settings ) ;
35+ } ,
36+ funcHoversDef : function ( node , context , settings , next ) {
37+ tracer . drawOnHover ( node , context , settings , next ) ;
38+ } ,
39+ funcEdgesArrow : function ( edge , source , target , context , settings ) {
40+ var color = tracer . getColor ( edge , source , target , settings ) ;
41+ tracer . drawArrow ( edge , source , target , color , context , settings ) ;
42+ }
4043 }
4144 } ) ;
42- graph = s . graph ;
43- sigma . canvas . labels . def = function ( node , context , settings ) {
44- tracer . drawLabel ( node , context , settings ) ;
45- } ;
46- sigma . canvas . hovers . def = function ( node , context , settings , next ) {
47- tracer . drawOnHover ( node , context , settings , next ) ;
48- } ;
49- sigma . canvas . edges . arrow = function ( edge , source , target , context , settings ) {
50- var color = tracer . getColor ( edge , source , target , settings ) ;
51- tracer . drawArrow ( edge , source , target , color , context , settings ) ;
52- } ;
53- sigma . plugins . dragNodes ( s , s . renderers [ 0 ] ) ;
45+ sigma . plugins . dragNodes ( this . s , this . s . renderers [ 0 ] ) ;
46+ this . graph = this . capsule . graph = this . s . graph ;
5447 } ,
5548 resize : function ( ) {
5649 Tracer . prototype . resize . call ( this ) ;
5750
51+ this . s . renderers [ 0 ] . resize ( ) ;
5852 this . refresh ( ) ;
5953 } ,
6054 clear : function ( ) {
@@ -82,7 +76,7 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
8276 if ( this . _setData ( G , root ) ) return true ;
8377
8478 var place = function ( node , x , y ) {
85- var temp = graph . nodes ( tracer . n ( node ) ) ;
79+ var temp = tracer . graph . nodes ( tracer . n ( node ) ) ;
8680 temp . x = x ;
8781 temp . y = y ;
8882 } ;
@@ -107,7 +101,7 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
107101 _setData : function ( G ) {
108102 if ( Tracer . prototype . _setData . call ( this , arguments ) ) return true ;
109103
110- graph . clear ( ) ;
104+ this . graph . clear ( ) ;
111105 var nodes = [ ] ;
112106 var edges = [ ] ;
113107 var unitAngle = 2 * Math . PI / G . length ;
@@ -135,11 +129,11 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
135129 }
136130 }
137131
138- graph . read ( {
132+ this . graph . read ( {
139133 nodes : nodes ,
140134 edges : edges
141135 } ) ;
142- s . camera . goTo ( {
136+ this . s . camera . goTo ( {
143137 x : 0 ,
144138 y : 0 ,
145139 angle : 0 ,
@@ -160,14 +154,14 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
160154 case 'visit' :
161155 case 'leave' :
162156 var visit = step . type == 'visit' ;
163- var targetNode = graph . nodes ( this . n ( step . target ) ) ;
157+ var targetNode = this . graph . nodes ( this . n ( step . target ) ) ;
164158 var color = visit ? this . color . visited : this . color . left ;
165159 targetNode . color = color ;
166160 if ( step . source !== undefined ) {
167161 var edgeId = this . e ( step . source , step . target ) ;
168- var edge = graph . edges ( edgeId ) ;
162+ var edge = this . graph . edges ( edgeId ) ;
169163 edge . color = color ;
170- graph . dropEdge ( edgeId ) . addEdge ( edge ) ;
164+ this . graph . dropEdge ( edgeId ) . addEdge ( edge ) ;
171165 }
172166 var source = step . source ;
173167 if ( source === undefined ) source = '' ;
@@ -178,7 +172,7 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
178172 refresh : function ( ) {
179173 Tracer . prototype . refresh . call ( this ) ;
180174
181- s . refresh ( ) ;
175+ this . s . refresh ( ) ;
182176 } ,
183177 prevStep : function ( ) {
184178 this . clear ( ) ;
@@ -202,10 +196,10 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
202196 clearGraphColor : function ( ) {
203197 var tracer = this ;
204198
205- graph . nodes ( ) . forEach ( function ( node ) {
199+ this . graph . nodes ( ) . forEach ( function ( node ) {
206200 node . color = tracer . color . default ;
207201 } ) ;
208- graph . edges ( ) . forEach ( function ( edge ) {
202+ this . graph . edges ( ) . forEach ( function ( edge ) {
209203 edge . color = tracer . color . default ;
210204 } ) ;
211205 } ,
@@ -308,17 +302,17 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
308302
309303 context . setLineDash ( [ 5 , 5 ] ) ;
310304 var nodeIdx = node . id . substring ( 1 ) ;
311- graph . edges ( ) . forEach ( function ( edge ) {
305+ this . graph . edges ( ) . forEach ( function ( edge ) {
312306 var ends = edge . id . substring ( 1 ) . split ( "_" ) ;
313307 if ( ends [ 0 ] == nodeIdx ) {
314308 var color = '#0ff' ;
315309 var source = node ;
316- var target = graph . nodes ( 'n' + ends [ 1 ] ) ;
310+ var target = tracer . graph . nodes ( 'n' + ends [ 1 ] ) ;
317311 tracer . drawArrow ( edge , source , target , color , context , settings ) ;
318312 if ( next ) next ( edge , source , target , color , context , settings ) ;
319313 } else if ( ends [ 1 ] == nodeIdx ) {
320314 var color = '#ff0' ;
321- var source = graph . nodes ( 'n' + ends [ 0 ] ) ;
315+ var source = tracer . graph . nodes ( 'n' + ends [ 0 ] ) ;
322316 var target = node ;
323317 tracer . drawArrow ( edge , source , target , color , context , settings ) ;
324318 if ( next ) next ( edge , source , target , color , context , settings ) ;
@@ -342,4 +336,29 @@ var DirectedGraph = {
342336 }
343337 return G ;
344338 }
339+ } ;
340+
341+ sigma . canvas . labels . def = function ( node , context , settings ) {
342+ var func = settings ( 'funcLabelsDef' ) ;
343+ if ( func ) {
344+ func ( node , context , settings ) ;
345+ }
346+ } ;
347+ sigma . canvas . hovers . def = function ( node , context , settings ) {
348+ var func = settings ( 'funcHoversDef' ) ;
349+ if ( func ) {
350+ func ( node , context , settings ) ;
351+ }
352+ } ;
353+ sigma . canvas . edges . def = function ( edge , source , target , context , settings ) {
354+ var func = settings ( 'funcEdgesDef' ) ;
355+ if ( func ) {
356+ func ( edge , source , target , context , settings ) ;
357+ }
358+ } ;
359+ sigma . canvas . edges . arrow = function ( edge , source , target , context , settings ) {
360+ var func = settings ( 'funcEdgesArrow' ) ;
361+ if ( func ) {
362+ func ( edge , source , target , context , settings ) ;
363+ }
345364} ;
0 commit comments