@@ -144,40 +144,44 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
144
144
var dragOptions = {
145
145
element : dragger ,
146
146
gd : gd ,
147
- plotinfo : plotinfo ,
148
- prepFn : function ( e , startX , startY ) {
149
- var dragModeNow = gd . _fullLayout . dragmode ;
150
-
151
- recomputeAxisLists ( ) ;
152
-
153
- if ( ! allFixedRanges ) {
154
- if ( isMainDrag ) {
155
- // main dragger handles all drag modes, and changes
156
- // to pan (or to zoom if it already is pan) on shift
157
- if ( e . shiftKey ) {
158
- if ( dragModeNow === 'pan' ) dragModeNow = 'zoom' ;
159
- else if ( ! isSelectOrLasso ( dragModeNow ) ) dragModeNow = 'pan' ;
160
- }
161
- else if ( e . ctrlKey ) {
162
- dragModeNow = 'pan' ;
163
- }
147
+ plotinfo : plotinfo
148
+ } ;
149
+
150
+ dragOptions . prepFn = function ( e , startX , startY ) {
151
+ var dragModeNow = gd . _fullLayout . dragmode ;
152
+
153
+ recomputeAxisLists ( ) ;
154
+
155
+ if ( ! allFixedRanges ) {
156
+ if ( isMainDrag ) {
157
+ // main dragger handles all drag modes, and changes
158
+ // to pan (or to zoom if it already is pan) on shift
159
+ if ( e . shiftKey ) {
160
+ if ( dragModeNow === 'pan' ) dragModeNow = 'zoom' ;
161
+ else if ( ! isSelectOrLasso ( dragModeNow ) ) dragModeNow = 'pan' ;
162
+ }
163
+ else if ( e . ctrlKey ) {
164
+ dragModeNow = 'pan' ;
164
165
}
165
- // all other draggers just pan
166
- else dragModeNow = 'pan' ;
167
166
}
167
+ // all other draggers just pan
168
+ else dragModeNow = 'pan' ;
169
+ }
168
170
169
- if ( dragModeNow === 'lasso' ) dragOptions . minDrag = 1 ;
170
- else dragOptions . minDrag = undefined ;
171
+ if ( dragModeNow === 'lasso' ) dragOptions . minDrag = 1 ;
172
+ else dragOptions . minDrag = undefined ;
171
173
172
- if ( isSelectOrLasso ( dragModeNow ) ) {
173
- dragOptions . xaxes = xaxes ;
174
- dragOptions . yaxes = yaxes ;
175
- prepSelect ( e , startX , startY , dragOptions , dragModeNow ) ;
176
- }
177
- else if ( allFixedRanges ) {
174
+ if ( isSelectOrLasso ( dragModeNow ) ) {
175
+ dragOptions . xaxes = xaxes ;
176
+ dragOptions . yaxes = yaxes ;
177
+ // this attaches moveFn, clickFn, doneFn on dragOptions
178
+ prepSelect ( e , startX , startY , dragOptions , dragModeNow ) ;
179
+ } else {
180
+ dragOptions . clickFn = clickFn ;
181
+
182
+ if ( allFixedRanges ) {
178
183
clearSelect ( zoomlayer ) ;
179
- }
180
- else if ( dragModeNow === 'zoom' ) {
184
+ } else if ( dragModeNow === 'zoom' ) {
181
185
dragOptions . moveFn = zoomMove ;
182
186
dragOptions . doneFn = zoomDone ;
183
187
@@ -187,58 +191,58 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
187
191
dragOptions . minDrag = 1 ;
188
192
189
193
zoomPrep ( e , startX , startY ) ;
190
- }
191
- else if ( dragModeNow === 'pan' ) {
194
+ } else if ( dragModeNow === 'pan' ) {
192
195
dragOptions . moveFn = plotDrag ;
193
196
dragOptions . doneFn = dragTail ;
194
197
clearSelect ( zoomlayer ) ;
195
198
}
196
- } ,
197
- clickFn : function ( numClicks , evt ) {
198
- removeZoombox ( gd ) ;
199
+ }
200
+ } ;
199
201
200
- if ( numClicks === 2 && ! singleEnd ) doubleClick ( ) ;
202
+ function clickFn ( numClicks , evt ) {
203
+ removeZoombox ( gd ) ;
201
204
202
- if ( isMainDrag ) {
203
- Fx . click ( gd , evt , plotinfo . id ) ;
205
+ if ( numClicks === 2 && ! singleEnd ) doubleClick ( ) ;
206
+
207
+ if ( isMainDrag ) {
208
+ Fx . click ( gd , evt , plotinfo . id ) ;
209
+ }
210
+ else if ( numClicks === 1 && singleEnd ) {
211
+ var ax = ns ? ya0 : xa0 ,
212
+ end = ( ns === 's' || ew === 'w' ) ? 0 : 1 ,
213
+ attrStr = ax . _name + '.range[' + end + ']' ,
214
+ initialText = getEndText ( ax , end ) ,
215
+ hAlign = 'left' ,
216
+ vAlign = 'middle' ;
217
+
218
+ if ( ax . fixedrange ) return ;
219
+
220
+ if ( ns ) {
221
+ vAlign = ( ns === 'n' ) ? 'top' : 'bottom' ;
222
+ if ( ax . side === 'right' ) hAlign = 'right' ;
204
223
}
205
- else if ( numClicks === 1 && singleEnd ) {
206
- var ax = ns ? ya0 : xa0 ,
207
- end = ( ns === 's' || ew === 'w' ) ? 0 : 1 ,
208
- attrStr = ax . _name + '.range[' + end + ']' ,
209
- initialText = getEndText ( ax , end ) ,
210
- hAlign = 'left' ,
211
- vAlign = 'middle' ;
212
-
213
- if ( ax . fixedrange ) return ;
214
-
215
- if ( ns ) {
216
- vAlign = ( ns === 'n' ) ? 'top' : 'bottom' ;
217
- if ( ax . side === 'right' ) hAlign = 'right' ;
218
- }
219
- else if ( ew === 'e' ) hAlign = 'right' ;
220
-
221
- if ( gd . _context . showAxisRangeEntryBoxes ) {
222
- d3 . select ( dragger )
223
- . call ( svgTextUtils . makeEditable , {
224
- gd : gd ,
225
- immediate : true ,
226
- background : gd . _fullLayout . paper_bgcolor ,
227
- text : String ( initialText ) ,
228
- fill : ax . tickfont ? ax . tickfont . color : '#444' ,
229
- horizontalAlign : hAlign ,
230
- verticalAlign : vAlign
231
- } )
232
- . on ( 'edit' , function ( text ) {
233
- var v = ax . d2r ( text ) ;
234
- if ( v !== undefined ) {
235
- Registry . call ( 'relayout' , gd , attrStr , v ) ;
236
- }
237
- } ) ;
238
- }
224
+ else if ( ew === 'e' ) hAlign = 'right' ;
225
+
226
+ if ( gd . _context . showAxisRangeEntryBoxes ) {
227
+ d3 . select ( dragger )
228
+ . call ( svgTextUtils . makeEditable , {
229
+ gd : gd ,
230
+ immediate : true ,
231
+ background : gd . _fullLayout . paper_bgcolor ,
232
+ text : String ( initialText ) ,
233
+ fill : ax . tickfont ? ax . tickfont . color : '#444' ,
234
+ horizontalAlign : hAlign ,
235
+ verticalAlign : vAlign
236
+ } )
237
+ . on ( 'edit' , function ( text ) {
238
+ var v = ax . d2r ( text ) ;
239
+ if ( v !== undefined ) {
240
+ Registry . call ( 'relayout' , gd , attrStr , v ) ;
241
+ }
242
+ } ) ;
239
243
}
240
244
}
241
- } ;
245
+ }
242
246
243
247
dragElement . init ( dragOptions ) ;
244
248
0 commit comments