@@ -400,7 +400,10 @@ function mouseoverPath(d) {
400400
401401 // Emit hover event
402402 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+ } ) ;
404407
405408 // Handle hover label
406409 if ( d . parcatsViewModel . hoverinfoItems . indexOf ( 'none' ) === - 1 ) {
@@ -503,7 +506,10 @@ function mouseoutPath(d) {
503506 // Emit unhover event
504507 if ( d . parcatsViewModel . hoverinfoItems . indexOf ( 'skip' ) === - 1 ) {
505508 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+ } ) ;
507513 }
508514 }
509515}
@@ -528,6 +534,30 @@ function buildPointsArrayForPath(d) {
528534 return points ;
529535}
530536
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+
531561/**
532562 * Handle path click
533563 * @param {PathViewModel } d
@@ -536,7 +566,10 @@ function clickPath(d) {
536566 if ( d . parcatsViewModel . hoverinfoItems . indexOf ( 'skip' ) === - 1 ) {
537567 // hoverinfo it's skip, so interaction events aren't disabled
538568 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+ } ) ;
540573 }
541574}
542575
@@ -672,6 +705,7 @@ function styleForColorHovermode(bandElement) {
672705function emitPointsEventCategoryHovermode ( bandElement , eventName , event ) {
673706 // Get all bands in the current category
674707 var bandViewModel = d3 . select ( bandElement ) . datum ( ) ;
708+ var categoryModel = bandViewModel . categoryViewModel . model ;
675709 var gd = bandViewModel . parcatsViewModel . graphDiv ;
676710 var bandSel = d3 . select ( bandElement . parentNode ) . selectAll ( 'rect.bandrect' ) ;
677711
@@ -684,7 +718,11 @@ function emitPointsEventCategoryHovermode(bandElement, eventName, event) {
684718 } ) ;
685719 } ) ;
686720
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+ } ) ;
688726}
689727
690728/**
@@ -697,6 +735,7 @@ function emitPointsEventCategoryHovermode(bandElement, eventName, event) {
697735 */
698736function emitPointsEventColorHovermode ( bandElement , eventName , event ) {
699737 var bandViewModel = d3 . select ( bandElement ) . datum ( ) ;
738+ var categoryModel = bandViewModel . categoryViewModel . model ;
700739 var gd = bandViewModel . parcatsViewModel . graphDiv ;
701740 var paths = selectPathsThroughCategoryBandColor ( bandViewModel ) ;
702741
@@ -706,7 +745,15 @@ function emitPointsEventColorHovermode(bandElement, eventName, event) {
706745 Array . prototype . push . apply ( points , buildPointsArrayForPath ( pathViewModel ) ) ;
707746 } ) ;
708747
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+ } ) ;
710757}
711758
712759/**
0 commit comments