@@ -94,17 +94,16 @@ function drawGrid(gd) {
94
94
if ( ! splomGrid ) {
95
95
splomGrid = fullLayout . _splomGrid = createLine ( regl ) ;
96
96
}
97
- splomGrid . update ( makeGridData ( gd ) ) ;
97
+
98
+ splomGrid . _data = makeGridData ( gd ) ;
99
+ splomGrid . update ( splomGrid . _data ) ;
98
100
splomGrid . draw ( ) ;
99
101
}
100
102
101
- // this clocks in at ~30ms at 50x50 - we could perf this up!
102
103
function makeGridData ( gd ) {
103
104
var fullLayout = gd . _fullLayout ;
104
105
var gs = fullLayout . _size ;
105
106
var fullView = [ 0 , 0 , fullLayout . width , fullLayout . height ] ;
106
- var splomXa = Object . keys ( fullLayout . _splomAxes . x ) ;
107
- var splomYa = Object . keys ( fullLayout . _splomAxes . y ) ;
108
107
var lookup = { } ;
109
108
var k ;
110
109
@@ -128,45 +127,39 @@ function makeGridData(gd) {
128
127
}
129
128
}
130
129
131
- for ( var i = 0 ; i < splomXa . length ; i ++ ) {
132
- var xa = AxisIDs . getFromId ( gd , splomXa [ i ] ) ;
130
+ for ( k in fullLayout . _splomSubplots ) {
131
+ var sp = fullLayout . _plots [ k ] ;
132
+ var xa = sp . xaxis ;
133
+ var ya = sp . yaxis ;
133
134
var xVals = xa . _vals ;
134
- var xShowZl = showZeroLine ( xa ) ;
135
-
136
- for ( var j = 0 ; j < splomYa . length ; j ++ ) {
137
- var ya = AxisIDs . getFromId ( gd , splomYa [ j ] ) ;
138
- var yVals = ya . _vals ;
139
- var yShowZl = showZeroLine ( ya ) ;
140
-
141
- // ya.l2p assumes top-to-bottom coordinate system (a la SVG),
142
- // we need to compute bottom-to-top offsets and slopes:
143
- var yOffset = gs . b + ya . domain [ 0 ] * gs . h ;
144
- var ym = - ya . _m ;
145
- var yb = - ym * ya . r2l ( ya . range [ 0 ] , ya . calendar ) ;
146
-
147
- var x , y ;
148
-
149
- if ( xa . showgrid ) {
150
- for ( k = 0 ; k < xVals . length ; k ++ ) {
151
- x = xa . _offset + xa . l2p ( xVals [ k ] . x ) ;
152
- push ( 'grid' , xa , x , yOffset , x , yOffset + ya . _length ) ;
153
- }
154
- }
155
- if ( xShowZl ) {
156
- x = xa . _offset + xa . l2p ( 0 ) ;
157
- push ( 'zeroline' , xa , x , yOffset , x , yOffset + ya . _length ) ;
158
- }
159
- if ( ya . showgrid ) {
160
- for ( k = 0 ; k < yVals . length ; k ++ ) {
161
- y = yOffset + yb + ym * yVals [ k ] . x ;
162
- push ( 'grid' , ya , xa . _offset , y , xa . _offset + xa . _length , y ) ;
163
- }
135
+ var yVals = ya . _vals ;
136
+ // ya.l2p assumes top-to-bottom coordinate system (a la SVG),
137
+ // we need to compute bottom-to-top offsets and slopes:
138
+ var yOffset = gs . b + ya . domain [ 0 ] * gs . h ;
139
+ var ym = - ya . _m ;
140
+ var yb = - ym * ya . r2l ( ya . range [ 0 ] , ya . calendar ) ;
141
+ var x , y ;
142
+
143
+ if ( xa . showgrid ) {
144
+ for ( k = 0 ; k < xVals . length ; k ++ ) {
145
+ x = xa . _offset + xa . l2p ( xVals [ k ] . x ) ;
146
+ push ( 'grid' , xa , x , yOffset , x , yOffset + ya . _length ) ;
164
147
}
165
- if ( yShowZl ) {
166
- y = yOffset + yb + 0 ;
167
- push ( 'zeroline' , ya , xa . _offset , y , xa . _offset + xa . _length , y ) ;
148
+ }
149
+ if ( showZeroLine ( xa ) ) {
150
+ x = xa . _offset + xa . l2p ( 0 ) ;
151
+ push ( 'zeroline' , xa , x , yOffset , x , yOffset + ya . _length ) ;
152
+ }
153
+ if ( ya . showgrid ) {
154
+ for ( k = 0 ; k < yVals . length ; k ++ ) {
155
+ y = yOffset + yb + ym * yVals [ k ] . x ;
156
+ push ( 'grid' , ya , xa . _offset , y , xa . _offset + xa . _length , y ) ;
168
157
}
169
158
}
159
+ if ( showZeroLine ( ya ) ) {
160
+ y = yOffset + yb + 0 ;
161
+ push ( 'zeroline' , ya , xa . _offset , y , xa . _offset + xa . _length , y ) ;
162
+ }
170
163
}
171
164
172
165
var gridBatches = [ ] ;
@@ -178,7 +171,6 @@ function makeGridData(gd) {
178
171
}
179
172
180
173
// just like in Axes.doTicks but without the loop over traces
181
- // TODO dry this up
182
174
function showZeroLine ( ax ) {
183
175
var rng = Lib . simpleMap ( ax . range , ax . r2l ) ;
184
176
var p0 = ax . l2p ( 0 ) ;
0 commit comments