1
+ function WeightedUndirectedGraphTracer ( module ) {
2
+ if ( WeightedDirectedGraphTracer . call ( this , module || WeightedUndirectedGraphTracer ) ) {
3
+ WeightedUndirectedGraphTracer . prototype . init . call ( this ) ;
4
+ return true ;
5
+ }
6
+ return false ;
7
+ }
8
+
9
+ WeightedUndirectedGraphTracer . prototype = $ . extend ( true , Object . create ( WeightedDirectedGraphTracer . prototype ) , {
10
+ constructor : WeightedUndirectedGraphTracer ,
11
+ init : function ( ) {
12
+ var tracer = this ;
13
+
14
+ s . settings ( {
15
+ defaultEdgeType : 'def'
16
+ } ) ;
17
+ sigma . canvas . edges . def = function ( edge , source , target , context , settings ) {
18
+ var color = tracer . getColor ( edge , source , target , settings ) ;
19
+ tracer . drawEdge ( edge , source , target , color , context , settings ) ;
20
+ tracer . drawEdgeWeight ( edge , source , target , color , context , settings ) ;
21
+ } ;
22
+ } ,
23
+ _setData : function ( G ) {
24
+ if ( Tracer . prototype . _setData . call ( this , arguments ) ) return true ;
25
+
26
+ graph . clear ( ) ;
27
+ var nodes = [ ] ;
28
+ var edges = [ ] ;
29
+ var unitAngle = 2 * Math . PI / G . length ;
30
+ var currentAngle = 0 ;
31
+ for ( var i = 0 ; i < G . length ; i ++ ) {
32
+ currentAngle += unitAngle ;
33
+ nodes . push ( {
34
+ id : this . n ( i ) ,
35
+ label : '' + i ,
36
+ x : .5 + Math . sin ( currentAngle ) / 2 ,
37
+ y : .5 + Math . cos ( currentAngle ) / 2 ,
38
+ size : 1 ,
39
+ color : this . color . default ,
40
+ weight : 0
41
+ } ) ;
42
+ }
43
+ for ( var i = 0 ; i < G . length ; i ++ ) {
44
+ for ( var j = 0 ; j <= i ; j ++ ) {
45
+ if ( G [ i ] [ j ] || G [ j ] [ i ] ) {
46
+ edges . push ( {
47
+ id : this . e ( i , j ) ,
48
+ source : this . n ( i ) ,
49
+ target : this . n ( j ) ,
50
+ color : this . color . default ,
51
+ size : 1 ,
52
+ weight : G [ i ] [ j ]
53
+ } ) ;
54
+ }
55
+ }
56
+ }
57
+
58
+ graph . read ( {
59
+ nodes : nodes ,
60
+ edges : edges
61
+ } ) ;
62
+ s . camera . goTo ( {
63
+ x : 0 ,
64
+ y : 0 ,
65
+ angle : 0 ,
66
+ ratio : 1
67
+ } ) ;
68
+ this . refresh ( ) ;
69
+
70
+ return false ;
71
+ } ,
72
+ e : UndirectedGraphTracer . prototype . e ,
73
+ drawOnHover : UndirectedGraphTracer . prototype . drawOnHover ,
74
+ drawEdge : UndirectedGraphTracer . prototype . drawEdge ,
75
+ drawEdgeWeight : function ( edge , source , target , color , context , settings ) {
76
+ var prefix = settings ( 'prefix' ) || '' ;
77
+ if ( source [ prefix + 'x' ] > target [ prefix + 'x' ] ) {
78
+ var temp = source ;
79
+ source = target ;
80
+ target = temp ;
81
+ }
82
+ console . log ( source ) ;
83
+ console . log ( target ) ;
84
+ WeightedDirectedGraphTracer . prototype . drawEdgeWeight . call ( this , edge , source , target , color , context , settings ) ;
85
+ }
86
+ } ) ;
87
+
88
+ var WeightedUndirectedGraph = {
89
+ random : function ( N , ratio , min , max ) {
90
+ if ( ! N ) N = 5 ;
91
+ if ( ! ratio ) ratio = .3 ;
92
+ if ( ! min ) min = 1 ;
93
+ if ( ! max ) max = 5 ;
94
+ var G = new Array ( N ) ;
95
+ for ( var i = 0 ; i < N ; i ++ ) G [ i ] = new Array ( N ) ;
96
+ for ( var i = 0 ; i < N ; i ++ ) {
97
+ for ( var j = 0 ; j < N ; j ++ ) {
98
+ if ( i > j && ( Math . random ( ) * ( 1 / ratio ) | 0 ) == 0 ) {
99
+ G [ i ] [ j ] = G [ j ] [ i ] = ( Math . random ( ) * ( max - min + 1 ) | 0 ) + min ;
100
+ }
101
+ }
102
+ }
103
+ return G ;
104
+ }
105
+ } ;
0 commit comments