@@ -478,6 +478,17 @@ lib.extractOption = function(calcPt, trace, calcKey, traceKey) {
478
478
if ( ! Array . isArray ( traceVal ) ) return traceVal ;
479
479
} ;
480
480
481
+ function makePtIndex2PtNumber ( indexToPoints ) {
482
+ var ptIndex2ptNumber = { } ;
483
+ for ( var k in indexToPoints ) {
484
+ var pts = indexToPoints [ k ] ;
485
+ for ( var j = 0 ; j < pts . length ; j ++ ) {
486
+ ptIndex2ptNumber [ pts [ j ] ] = + k ;
487
+ }
488
+ }
489
+ return ptIndex2ptNumber ;
490
+ }
491
+
481
492
/** Tag selected calcdata items
482
493
*
483
494
* N.B. note that point 'index' corresponds to input data array index
@@ -498,13 +509,7 @@ lib.tagSelected = function(calcTrace, trace, ptNumber2cdIndex) {
498
509
499
510
// make pt index-to-number map object, which takes care of transformed traces
500
511
if ( indexToPoints ) {
501
- ptIndex2ptNumber = { } ;
502
- for ( var k in indexToPoints ) {
503
- var pts = indexToPoints [ k ] ;
504
- for ( var j = 0 ; j < pts . length ; j ++ ) {
505
- ptIndex2ptNumber [ pts [ j ] ] = k ;
506
- }
507
- }
512
+ ptIndex2ptNumber = makePtIndex2PtNumber ( indexToPoints ) ;
508
513
}
509
514
510
515
function isCdIndexValid ( v ) {
@@ -525,6 +530,30 @@ lib.tagSelected = function(calcTrace, trace, ptNumber2cdIndex) {
525
530
}
526
531
} ;
527
532
533
+ lib . selIndices2selPoints = function ( trace ) {
534
+ var selectedpoints = trace . selectedpoints ;
535
+ var indexToPoints = trace . _indexToPoints ;
536
+
537
+ if ( indexToPoints ) {
538
+ var ptIndex2ptNumber = makePtIndex2PtNumber ( indexToPoints ) ;
539
+ var out = [ ] ;
540
+
541
+ for ( var i = 0 ; i < selectedpoints . length ; i ++ ) {
542
+ var ptIndex = selectedpoints [ i ] ;
543
+ if ( lib . isIndex ( ptIndex ) ) {
544
+ var ptNumber = ptIndex2ptNumber [ ptIndex ] ;
545
+ if ( lib . isIndex ( ptNumber ) ) {
546
+ out . push ( ptNumber ) ;
547
+ }
548
+ }
549
+ }
550
+
551
+ return out ;
552
+ } else {
553
+ return selectedpoints ;
554
+ }
555
+ } ;
556
+
528
557
/** Returns target as set by 'target' transform attribute
529
558
*
530
559
* @param {object } trace : full trace object
0 commit comments