@@ -13,7 +13,7 @@ var polybool = require('polybooljs');
13
13
var polygon = require ( '../../lib/polygon' ) ;
14
14
var throttle = require ( '../../lib/throttle' ) ;
15
15
var color = require ( '../../components/color' ) ;
16
- var appendArrayPointValue = require ( '../../components/fx/helpers' ) . appendArrayPointValue ;
16
+ var makeEventData = require ( '../../components/fx/helpers' ) . makeEventData ;
17
17
18
18
var axes = require ( './axes' ) ;
19
19
var constants = require ( './constants' ) ;
@@ -240,9 +240,7 @@ module.exports = function prepSelect(e, startX, startY, dragOptions, mode) {
240
240
traceSelection = searchInfo . selectPoints ( searchInfo , testPoly ) ;
241
241
traceSelections . push ( traceSelection ) ;
242
242
243
- var thisSelection = fillSelectionItem (
244
- traceSelection , searchInfo
245
- ) ;
243
+ var thisSelection = fillSelectionItem ( traceSelection , searchInfo ) ;
246
244
if ( selection . length ) {
247
245
for ( var j = 0 ; j < thisSelection . length ; j ++ ) {
248
246
selection . push ( thisSelection [ j ] ) ;
@@ -294,30 +292,36 @@ module.exports = function prepSelect(e, startX, startY, dragOptions, mode) {
294
292
} ;
295
293
296
294
function updateSelectedState ( gd , searchTraces , eventData ) {
297
- var i , searchInfo ;
295
+ var i , searchInfo , trace ;
298
296
299
297
if ( eventData ) {
300
298
var pts = eventData . points || [ ] ;
301
299
302
300
for ( i = 0 ; i < searchTraces . length ; i ++ ) {
303
- searchInfo = searchTraces [ i ] ;
304
- searchInfo . cd [ 0 ] . trace . selectedpoints = [ ] ;
305
- searchInfo . cd [ 0 ] . trace . _input . selectedpoints = [ ] ;
301
+ trace = searchTraces [ i ] . cd [ 0 ] . trace ;
302
+ trace . selectedpoints = [ ] ;
303
+ trace . _input . selectedpoints = [ ] ;
306
304
}
307
305
308
306
for ( i = 0 ; i < pts . length ; i ++ ) {
309
307
var pt = pts [ i ] ;
310
- var ptNumber = pt . pointNumber ;
311
-
312
- pt . data . selectedpoints . push ( ptNumber ) ;
313
- pt . fullData . selectedpoints . push ( ptNumber ) ;
308
+ var data = pt . data ;
309
+ var fullData = pt . fullData ;
310
+
311
+ if ( pt . pointIndices ) {
312
+ data . selectedpoints = data . selectedpoints . concat ( pt . pointIndices ) ;
313
+ fullData . selectedpoints = fullData . selectedpoints . concat ( pt . pointIndices ) ;
314
+ } else {
315
+ data . selectedpoints . push ( pt . pointIndex ) ;
316
+ fullData . selectedpoints . push ( pt . pointIndex ) ;
317
+ }
314
318
}
315
319
}
316
320
else {
317
321
for ( i = 0 ; i < searchTraces . length ; i ++ ) {
318
- searchInfo = searchTraces [ i ] ;
319
- delete searchInfo . cd [ 0 ] . trace . selectedpoints ;
320
- delete searchInfo . cd [ 0 ] . trace . _input . selectedpoints ;
322
+ trace = searchTraces [ i ] . cd [ 0 ] . trace ;
323
+ delete trace . selectedpoints ;
324
+ delete trace . _input . selectedpoints ;
321
325
}
322
326
}
323
327
@@ -355,15 +359,11 @@ function mergePolygons(list, poly, subtract) {
355
359
356
360
function fillSelectionItem ( selection , searchInfo ) {
357
361
if ( Array . isArray ( selection ) ) {
362
+ var cd = searchInfo . cd ;
358
363
var trace = searchInfo . cd [ 0 ] . trace ;
359
364
360
365
for ( var i = 0 ; i < selection . length ; i ++ ) {
361
- var sel = selection [ i ] ;
362
-
363
- sel . curveNumber = trace . index ;
364
- sel . data = trace . _input ;
365
- sel . fullData = trace ;
366
- appendArrayPointValue ( sel , trace , sel . pointNumber ) ;
366
+ selection [ i ] = makeEventData ( selection [ i ] , trace , cd ) ;
367
367
}
368
368
}
369
369
0 commit comments