@@ -400,7 +400,10 @@ function mouseoverPath(d) {
400
400
401
401
// Emit hover event
402
402
var points = buildPointsArrayForPath ( d ) ;
403
- d . parcatsViewModel . graphDiv . emit ( 'plotly_hover' , { points : points , event : d3 . event } ) ;
403
+ var constraints = buildConstraintsForPath ( d ) ;
404
+ d . parcatsViewModel . graphDiv . emit ( 'plotly_hover' , {
405
+ points : points , event : d3 . event , constraints : constraints
406
+ } ) ;
404
407
405
408
// Handle hover label
406
409
if ( d . parcatsViewModel . hoverinfoItems . indexOf ( 'none' ) === - 1 ) {
@@ -503,7 +506,10 @@ function mouseoutPath(d) {
503
506
// Emit unhover event
504
507
if ( d . parcatsViewModel . hoverinfoItems . indexOf ( 'skip' ) === - 1 ) {
505
508
var points = buildPointsArrayForPath ( d ) ;
506
- d . parcatsViewModel . graphDiv . emit ( 'plotly_unhover' , { points : points , event : d3 . event } ) ;
509
+ var constraints = buildConstraintsForPath ( d ) ;
510
+ d . parcatsViewModel . graphDiv . emit ( 'plotly_unhover' , {
511
+ points : points , event : d3 . event , constraints : constraints
512
+ } ) ;
507
513
}
508
514
}
509
515
}
@@ -528,6 +534,30 @@ function buildPointsArrayForPath(d) {
528
534
return points ;
529
535
}
530
536
537
+ /**
538
+ * Build constraints object for a path
539
+ *
540
+ * For use in click/hover events
541
+ * @param {PathViewModel } d
542
+ */
543
+ function buildConstraintsForPath ( d ) {
544
+ var constraints = { } ;
545
+ var dimensions = d . parcatsViewModel . model . dimensions ;
546
+
547
+ // dimensions
548
+ for ( var i = 0 ; i < dimensions . length ; i ++ ) {
549
+ var dimension = dimensions [ i ] ;
550
+ var category = dimension . categories [ d . model . categoryInds [ i ] ] ;
551
+ constraints [ dimension . containerInd ] = category . categoryValue ;
552
+ }
553
+
554
+ // color
555
+ if ( d . model . rawColor !== undefined ) {
556
+ constraints . color = d . model . rawColor ;
557
+ }
558
+ return constraints ;
559
+ }
560
+
531
561
/**
532
562
* Handle path click
533
563
* @param {PathViewModel } d
@@ -536,7 +566,10 @@ function clickPath(d) {
536
566
if ( d . parcatsViewModel . hoverinfoItems . indexOf ( 'skip' ) === - 1 ) {
537
567
// hoverinfo it's skip, so interaction events aren't disabled
538
568
var points = buildPointsArrayForPath ( d ) ;
539
- d . parcatsViewModel . graphDiv . emit ( 'plotly_click' , { points : points , event : d3 . event } ) ;
569
+ var constraints = buildConstraintsForPath ( d ) ;
570
+ d . parcatsViewModel . graphDiv . emit ( 'plotly_click' , {
571
+ points : points , event : d3 . event , constraints : constraints
572
+ } ) ;
540
573
}
541
574
}
542
575
@@ -672,6 +705,7 @@ function styleForColorHovermode(bandElement) {
672
705
function emitPointsEventCategoryHovermode ( bandElement , eventName , event ) {
673
706
// Get all bands in the current category
674
707
var bandViewModel = d3 . select ( bandElement ) . datum ( ) ;
708
+ var categoryModel = bandViewModel . categoryViewModel . model ;
675
709
var gd = bandViewModel . parcatsViewModel . graphDiv ;
676
710
var bandSel = d3 . select ( bandElement . parentNode ) . selectAll ( 'rect.bandrect' ) ;
677
711
@@ -684,7 +718,11 @@ function emitPointsEventCategoryHovermode(bandElement, eventName, event) {
684
718
} ) ;
685
719
} ) ;
686
720
687
- gd . emit ( eventName , { points : points , event : event } ) ;
721
+ var constraints = { } ;
722
+ constraints [ categoryModel . dimensionInd ] = categoryModel . categoryValue ;
723
+ gd . emit ( eventName , {
724
+ points : points , event : event , constraints : constraints
725
+ } ) ;
688
726
}
689
727
690
728
/**
@@ -697,6 +735,7 @@ function emitPointsEventCategoryHovermode(bandElement, eventName, event) {
697
735
*/
698
736
function emitPointsEventColorHovermode ( bandElement , eventName , event ) {
699
737
var bandViewModel = d3 . select ( bandElement ) . datum ( ) ;
738
+ var categoryModel = bandViewModel . categoryViewModel . model ;
700
739
var gd = bandViewModel . parcatsViewModel . graphDiv ;
701
740
var paths = selectPathsThroughCategoryBandColor ( bandViewModel ) ;
702
741
@@ -706,7 +745,15 @@ function emitPointsEventColorHovermode(bandElement, eventName, event) {
706
745
Array . prototype . push . apply ( points , buildPointsArrayForPath ( pathViewModel ) ) ;
707
746
} ) ;
708
747
709
- gd . emit ( eventName , { points : points , event : event } ) ;
748
+ var constraints = { } ;
749
+ constraints [ categoryModel . dimensionInd ] = categoryModel . categoryValue ;
750
+ // color
751
+ if ( bandViewModel . rawColor !== undefined ) {
752
+ constraints . color = bandViewModel . rawColor ;
753
+ }
754
+ gd . emit ( eventName , {
755
+ points : points , event : event , constraints : constraints
756
+ } ) ;
710
757
}
711
758
712
759
/**
0 commit comments