@@ -27,6 +27,7 @@ var newSelections = require('./draw_newselection/newselections');
2727var activateLastSelection = require ( './draw' ) . activateLastSelection ;
2828
2929var Lib = require ( '../../lib' ) ;
30+ var ascending = Lib . sorterAsc ;
3031var polygon = require ( '../../lib/polygon' ) ;
3132var throttle = require ( '../../lib/throttle' ) ;
3233var getFromId = require ( '../../plots/cartesian/axis_ids' ) . getFromId ;
@@ -85,7 +86,6 @@ function prepSelect(evt, startX, startY, dragOptions, mode) {
8586 var pw = xAxis . _length ;
8687 var ph = yAxis . _length ;
8788
88- var allAxes = dragOptions . xaxes . concat ( dragOptions . yaxes ) ;
8989 var subtract = evt . altKey &&
9090 ! ( drawMode ( mode ) && isOpenMode ) ;
9191
@@ -141,53 +141,9 @@ function prepSelect(evt, startX, startY, dragOptions, mode) {
141141 var searchTraces = determineSearchTraces ( gd , dragOptions . xaxes ,
142142 dragOptions . yaxes , dragOptions . subplot ) ;
143143
144- function ascending ( a , b ) { return a - b ; }
145-
146144 // allow subplots to override fillRangeItems routine
147- var fillRangeItems ;
148-
149- if ( plotinfo . fillRangeItems ) {
150- fillRangeItems = plotinfo . fillRangeItems ;
151- } else {
152- fillRangeItems = function ( eventData , poly , filterPoly ) {
153- var range = { } ;
154- var ranges = { } ;
155-
156- var hasRange = false ;
157- var hasRanges = false ;
158-
159- for ( i = 0 ; i < allAxes . length ; i ++ ) {
160- var ax = allAxes [ i ] ;
161- var axLetter = ax . _id . charAt ( 0 ) ;
162-
163- var min = poly [ axLetter + 'min' ] ;
164- var max = poly [ axLetter + 'max' ] ;
165-
166- if ( min !== undefined && max !== undefined ) {
167- range [ ax . _id ] = [
168- p2r ( ax , min ) ,
169- p2r ( ax , max )
170- ] . sort ( ascending ) ;
171-
172- hasRange = true ;
173- }
174-
175- if ( filterPoly . filtered ) {
176- ranges [ ax . _id ] = filterPoly . filtered . map ( axValue ( ax ) ) ;
177-
178- hasRanges = true ;
179- }
180- }
181-
182- if ( hasRange ) {
183- eventData . range = range ;
184- }
185-
186- if ( hasRanges ) {
187- eventData . lassoPoints = ranges ;
188- }
189- } ;
190- }
145+ var fillRangeItems = plotinfo . fillRangeItems ||
146+ makeFillRangeItems ( dragOptions . xaxes . concat ( dragOptions . yaxes ) ) ;
191147
192148 dragOptions . moveFn = function ( dx0 , dy0 ) {
193149 x1 = Math . max ( 0 , Math . min ( pw , scaleX * dx0 + x0 ) ) ;
@@ -1310,6 +1266,47 @@ function convert(ax, d) {
13101266 return ax . type === 'log' ? ax . c2p ( d ) : ax . r2p ( d , null , ax . calendar ) ;
13111267}
13121268
1269+ function makeFillRangeItems ( allAxes ) {
1270+ return function ( eventData , poly , filterPoly ) {
1271+ var range = { } ;
1272+ var ranges = { } ;
1273+
1274+ var hasRange = false ;
1275+ var hasRanges = false ;
1276+
1277+ for ( var i = 0 ; i < allAxes . length ; i ++ ) {
1278+ var ax = allAxes [ i ] ;
1279+ var axLetter = ax . _id . charAt ( 0 ) ;
1280+
1281+ var min = poly [ axLetter + 'min' ] ;
1282+ var max = poly [ axLetter + 'max' ] ;
1283+
1284+ if ( min !== undefined && max !== undefined ) {
1285+ range [ ax . _id ] = [
1286+ p2r ( ax , min ) ,
1287+ p2r ( ax , max )
1288+ ] . sort ( ascending ) ;
1289+
1290+ hasRange = true ;
1291+ }
1292+
1293+ if ( filterPoly && filterPoly . filtered ) {
1294+ ranges [ ax . _id ] = filterPoly . filtered . map ( axValue ( ax ) ) ;
1295+
1296+ hasRanges = true ;
1297+ }
1298+ }
1299+
1300+ if ( hasRange ) {
1301+ eventData . range = range ;
1302+ }
1303+
1304+ if ( hasRanges ) {
1305+ eventData . lassoPoints = ranges ;
1306+ }
1307+ } ;
1308+ }
1309+
13131310module . exports = {
13141311 reselect : reselect ,
13151312 prepSelect : prepSelect ,
0 commit comments