@@ -21,7 +21,7 @@ var map1dArray = require('./map_1d_array');
21
21
var makepath = require ( './makepath' ) ;
22
22
var extendFlat = require ( '../../lib/extend' ) . extendFlat ;
23
23
24
- module . exports = function calcGridlines ( trace , axisLetter , crossAxisLetter , xaxis , yaxis ) {
24
+ module . exports = function calcGridlines ( trace , axisLetter , crossAxisLetter ) {
25
25
var i , j , gridline , j0 , i0 ;
26
26
27
27
var data = trace [ axisLetter ] ;
@@ -53,11 +53,24 @@ module.exports = function calcGridlines (trace, axisLetter, crossAxisLetter, xax
53
53
var j , j0 , tj , pxy , i0 , ti , xy , dxydi0 , dxydi1 , i , dxydj0 , dxydj1 ;
54
54
var xpoints = [ ] ;
55
55
var ypoints = [ ] ;
56
+ var ret = { } ;
56
57
// Search for the fractional grid index giving this line:
57
58
if ( axisLetter === 'b' ) {
58
59
j = trace . b2j ( value ) ;
59
60
j0 = Math . floor ( Math . max ( 0 , Math . min ( nb - 2 , j ) ) ) ;
60
61
tj = j - j0 ;
62
+ ret . length = nb ;
63
+ ret . crossLength = na ;
64
+
65
+ ret . xy = function ( i ) {
66
+ var i0 = Math . max ( 0 , Math . min ( crossData . length - 2 , Math . floor ( i ) ) ) ;
67
+ var ti = i - i0 ;
68
+ return trace . _evalxy ( [ ] , i0 , j0 , ti , tj ) ;
69
+ }
70
+
71
+ ret . dxy = function ( i0 , ti ) {
72
+ return trace . dxydi ( [ ] , i0 , j0 , ti , tj ) ;
73
+ } ;
61
74
62
75
for ( var i = 0 ; i < na ; i ++ ) {
63
76
i0 = Math . min ( na - 2 , i ) ;
@@ -85,6 +98,18 @@ module.exports = function calcGridlines (trace, axisLetter, crossAxisLetter, xax
85
98
i = trace . a2i ( value ) ;
86
99
i0 = Math . floor ( Math . max ( 0 , Math . min ( na - 2 , i ) ) ) ;
87
100
ti = i - i0 ;
101
+ ret . length = na ;
102
+ ret . crossLength = nb ;
103
+
104
+ ret . xy = function ( j ) {
105
+ var j0 = Math . max ( 0 , Math . min ( crossData . length - 2 , Math . floor ( j ) ) ) ;
106
+ var tj = j - j0 ;
107
+ return trace . _evalxy ( [ ] , i0 , j0 , ti , tj ) ;
108
+ }
109
+
110
+ ret . dxy = function ( j0 , tj ) {
111
+ return trace . dxydj ( [ ] , i0 , j0 , ti , tj ) ;
112
+ } ;
88
113
89
114
for ( var j = 0 ; j < nb ; j ++ ) {
90
115
j0 = Math . min ( nb - 2 , j ) ;
@@ -110,61 +135,84 @@ module.exports = function calcGridlines (trace, axisLetter, crossAxisLetter, xax
110
135
}
111
136
}
112
137
113
- return {
114
- axisLetter : axisLetter ,
115
- axis : trace [ axisLetter + 'axis' ] ,
116
- value : value ,
117
- constvar : crossAxisLetter ,
118
- index : n ,
119
- x : xpoints ,
120
- y : ypoints ,
121
- //dxy_0: dxy_0,
122
- //dxy_1: dxy_1,
123
- smoothing : crossAxis . smoothing ,
124
- } ;
138
+ ret . axisLetter = axisLetter ;
139
+ ret . axis = axis ;
140
+ ret . crossAxis = crossAxis ;
141
+ ret . value = value ;
142
+ ret . constvar = crossAxisLetter ;
143
+ ret . index = n ;
144
+ ret . x = xpoints ;
145
+ ret . y = ypoints ;
146
+ ret . smoothing = crossAxis . smoothing ;
147
+
148
+ return ret ;
125
149
}
126
150
127
- function constructArrayGridline ( j ) {
128
- var dxy_0 , dxy_1 ;
151
+ function constructArrayGridline ( idx ) {
129
152
var xpoints = [ ] ;
130
153
var ypoints = [ ] ;
154
+ var ret = { } ;
155
+ ret . length = data . length ;
156
+ ret . crossLength = crossData . length ;
131
157
132
158
if ( axisLetter === 'b' ) {
159
+ var j0 = Math . max ( 0 , Math . min ( nb - 2 , idx ) ) ;
160
+ var tj = Math . min ( 1 , Math . max ( 0 , idx - j0 ) ) ;
161
+
162
+ ret . xy = function ( i ) {
163
+ var i0 = Math . max ( 0 , Math . min ( na - 2 , Math . floor ( i ) ) ) ;
164
+ var ti = Math . min ( 1 , Math . max ( 0 , i - i0 ) ) ;
165
+ return trace . _evalxy ( [ ] , i0 , j0 , ti , tj ) ;
166
+ } ;
167
+
168
+ ret . dxy = function ( i ) {
169
+ var i0 = Math . max ( 0 , Math . min ( na - 2 , Math . floor ( i ) ) ) ;
170
+ var ti = Math . min ( 1 , Math . max ( 0 , i - i0 ) ) ;
171
+ return trace . dxydi ( [ ] , i0 , j0 , ti , tj ) ;
172
+ } ;
173
+
133
174
// In the tickmode: array case, this operation is a simple
134
175
// transfer of data:
135
176
for ( i = 0 ; i < nea ; i ++ ) {
136
- xpoints [ i ] = xcp [ i ] [ j * stride ] ;
137
- ypoints [ i ] = ycp [ i ] [ j * stride ] ;
177
+ xpoints [ i ] = xcp [ i ] [ idx * stride ] ;
178
+ ypoints [ i ] = ycp [ i ] [ idx * stride ] ;
138
179
}
139
-
140
- j0 = Math . min ( j , nb - 2 ) ;
141
- dxy_0 = trace . dxydi ( null , 0 , j0 , 0 , j - j0 ) ;
142
- dxy_1 = trace . dxydi ( null , na - 2 , j0 , 1 , j - j0 ) ;
143
180
} else {
181
+ var i0 = Math . max ( 0 , Math . min ( na - 2 , idx ) ) ;
182
+ var ti = Math . min ( 1 , Math . max ( 0 , idx - i0 ) ) ;
183
+
184
+ ret . xy = function ( j ) {
185
+ var j0 = Math . max ( 0 , Math . min ( nb - 2 , Math . floor ( j ) ) ) ;
186
+ var tj = Math . min ( 1 , Math . max ( 0 , j - j0 ) ) ;
187
+ return trace . _evalxy ( [ ] , i0 , j0 , ti , tj ) ;
188
+ }
189
+
190
+
191
+ ret . dxy = function ( j ) {
192
+ var j0 = Math . max ( 0 , Math . min ( nb - 2 , Math . floor ( j ) ) ) ;
193
+ var tj = Math . min ( 1 , Math . max ( 0 , j - j0 ) ) ;
194
+ return trace . dxydj ( [ ] , i0 , j0 , ti , tj ) ;
195
+ } ;
196
+
144
197
// In the tickmode: array case, this operation is a simple
145
198
// transfer of data:
146
199
for ( i = 0 ; i < neb ; i ++ ) {
147
- xpoints [ i ] = xcp [ j * stride ] [ i ] ;
148
- ypoints [ i ] = ycp [ j * stride ] [ i ] ;
200
+ xpoints [ i ] = xcp [ idx * stride ] [ i ] ;
201
+ ypoints [ i ] = ycp [ idx * stride ] [ i ] ;
149
202
}
150
-
151
- i0 = Math . min ( i , na - 2 ) ;
152
- dxy_0 = trace . dxydj ( null , i0 , 0 , i - i0 , 0 ) ;
153
- dxy_1 = trace . dxydj ( null , i0 , nb - 2 , i - i0 , 1 ) ;
154
203
}
155
204
156
- return {
157
- axisLetter : axisLetter ,
158
- axis : trace [ axisLetter + 'axis' ] ,
159
- value : data [ j ] ,
160
- constvar : crossAxisLetter ,
161
- index : j ,
162
- x : xpoints ,
163
- y : ypoints ,
164
- dxy_0 : dxy_0 ,
165
- dxy_1 : dxy_1 ,
166
- smoothing : crossAxis . smoothing ,
167
- } ;
205
+ ret . axisLetter = axisLetter ;
206
+ ret . axis = axis ;
207
+ ret . crossAxis = crossAxis ;
208
+ ret . value = data [ idx ] ;
209
+ ret . constvar = crossAxisLetter ;
210
+ ret . index = idx ;
211
+ ret . x = xpoints ;
212
+ ret . y = ypoints ;
213
+ ret . smoothing = crossAxis . smoothing ;
214
+
215
+ return ret ;
168
216
} ;
169
217
170
218
0 commit comments