@@ -30,6 +30,7 @@ exports.baseLayoutAttrOverrides = overrideAll({
30
30
exports . plot = function ( gd ) {
31
31
var calcData = getModuleCalcData ( gd . calcdata , SANKEY ) [ 0 ] ;
32
32
plot ( gd , calcData ) ;
33
+ exports . updateFx ( gd ) ;
33
34
} ;
34
35
35
36
exports . clean = function ( newFullData , newFullLayout , oldFullData , oldFullLayout ) {
@@ -38,6 +39,7 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout)
38
39
39
40
if ( hadPlot && ! hasPlot ) {
40
41
oldFullLayout . _paperdiv . selectAll ( '.sankey' ) . remove ( ) ;
42
+ oldFullLayout . _paperdiv . selectAll ( '.bgsankey' ) . remove ( ) ;
41
43
}
42
44
} ;
43
45
@@ -47,55 +49,55 @@ exports.updateFx = function(gd) {
47
49
}
48
50
} ;
49
51
50
- var dragOptions = [ ] ;
51
52
function subplotUpdateFx ( gd , index ) {
52
- var i = index ;
53
- var fullData = gd . _fullData [ i ] ;
53
+ var trace = gd . _fullData [ index ] ;
54
54
var fullLayout = gd . _fullLayout ;
55
55
56
56
var dragMode = fullLayout . dragmode ;
57
57
var cursor = fullLayout . dragmode === 'pan' ? 'move' : 'crosshair' ;
58
- var bgRect = fullData . _bgRect ;
58
+ var bgRect = trace . _bgRect ;
59
59
60
60
setCursor ( bgRect , cursor ) ;
61
61
62
62
var xaxis = {
63
63
_id : 'x' ,
64
- c2p : function ( v ) { return v ; } ,
65
- _offset : fullData . _sankey . translateX ,
66
- _length : fullData . _sankey . width
64
+ c2p : Lib . identity ,
65
+ _offset : trace . _sankey . translateX ,
66
+ _length : trace . _sankey . width
67
67
} ;
68
68
var yaxis = {
69
69
_id : 'y' ,
70
- c2p : function ( v ) { return v ; } ,
71
- _offset : fullData . _sankey . translateY ,
72
- _length : fullData . _sankey . height
70
+ c2p : Lib . identity ,
71
+ _offset : trace . _sankey . translateY ,
72
+ _length : trace . _sankey . height
73
73
} ;
74
74
75
75
// Note: dragOptions is needed to be declared for all dragmodes because
76
76
// it's the object that holds persistent selection state.
77
- dragOptions [ i ] = {
77
+ var dragOptions = {
78
78
gd : gd ,
79
79
element : bgRect . node ( ) ,
80
80
plotinfo : {
81
- id : i ,
81
+ id : index ,
82
82
xaxis : xaxis ,
83
83
yaxis : yaxis ,
84
84
fillRangeItems : Lib . noop
85
85
} ,
86
- subplot : i ,
86
+ subplot : index ,
87
87
// create mock x/y axes for hover routine
88
88
xaxes : [ xaxis ] ,
89
89
yaxes : [ yaxis ] ,
90
90
doneFnCompleted : function ( selection ) {
91
+ var traceNow = gd . _fullData [ index ] ;
91
92
var newGroups ;
92
- var oldGroups = gd . _fullData [ i ] . node . groups . slice ( ) ;
93
+ var oldGroups = traceNow . node . groups . slice ( ) ;
93
94
var newGroup = [ ] ;
94
95
95
96
function findNode ( pt ) {
96
- return gd . _fullData [ i ] . _sankey . graph . nodes . find ( function ( n ) {
97
- return n . pointNumber === pt ;
98
- } ) ;
97
+ var nodes = traceNow . _sankey . graph . nodes ;
98
+ for ( var i = 0 ; i < nodes . length ; i ++ ) {
99
+ if ( nodes [ i ] . pointNumber === pt ) return nodes [ i ] ;
100
+ }
99
101
}
100
102
101
103
for ( var j = 0 ; j < selection . length ; j ++ ) {
@@ -109,25 +111,25 @@ function subplotUpdateFx(gd, index) {
109
111
newGroup . push ( node . childrenNodes [ k ] . pointNumber ) ;
110
112
}
111
113
// Flag group for removal from existing list of groups
112
- oldGroups [ node . pointNumber - fullData . node . _count ] = false ;
114
+ oldGroups [ node . pointNumber - traceNow . node . _count ] = false ;
113
115
} else {
114
116
newGroup . push ( node . pointNumber ) ;
115
117
}
116
118
}
117
119
118
120
newGroups = oldGroups
119
- . filter ( function ( g ) { return g ; } )
121
+ . filter ( Boolean )
120
122
. concat ( [ newGroup ] ) ;
121
123
122
124
Registry . call ( '_guiRestyle' , gd , {
123
125
'node.groups' : [ newGroups ]
124
- } , i ) . catch ( Lib . noop ) ; // TODO will this ever fail?
126
+ } , index ) ;
125
127
}
126
128
} ;
127
129
128
- dragOptions [ i ] . prepFn = function ( e , startX , startY ) {
129
- prepSelect ( e , startX , startY , dragOptions [ i ] , dragMode ) ;
130
+ dragOptions . prepFn = function ( e , startX , startY ) {
131
+ prepSelect ( e , startX , startY , dragOptions , dragMode ) ;
130
132
} ;
131
133
132
- dragElement . init ( dragOptions [ i ] ) ;
134
+ dragElement . init ( dragOptions ) ;
133
135
}
0 commit comments