@@ -354,11 +354,11 @@ function _hover(gd, evt, subplot) {
354354 trace : trace ,
355355 xa : xaArray [ subploti ] ,
356356 ya : yaArray [ subploti ] ,
357- name : ( gd . data . length > 1 || trace . hoverinfo . indexOf ( 'name' ) !== - 1 ) ? trace . name : undefined ,
358357 // point properties - override all of these
359358 index : false , // point index in trace - only used by plotly.js hoverdata consumers
360359 distance : Math . min ( distance , constants . MAXDIST ) , // pixel distance or pseudo-distance
361360 color : Color . defaultLine , // trace color
361+ name : trace . name ,
362362 x0 : undefined ,
363363 x1 : undefined ,
364364 y0 : undefined ,
@@ -558,7 +558,7 @@ function createHoverText(hoverData, opts) {
558558 // to have common labels
559559 var i , traceHoverinfo ;
560560 for ( i = 0 ; i < hoverData . length ; i ++ ) {
561- traceHoverinfo = hoverData [ i ] . trace . hoverinfo ;
561+ traceHoverinfo = hoverData [ i ] . hoverinfo || hoverData [ i ] . trace . hoverinfo ;
562562 var parts = traceHoverinfo . split ( '+' ) ;
563563 if ( parts . indexOf ( 'all' ) === - 1 &&
564564 parts . indexOf ( hovermode ) === - 1 ) {
@@ -724,7 +724,9 @@ function createHoverText(hoverData, opts) {
724724 else if ( d . yLabel === undefined ) text = d . xLabel ;
725725 else text = '(' + d . xLabel + ', ' + d . yLabel + ')' ;
726726
727- if ( d . text && ! Array . isArray ( d . text ) ) text += ( text ? '<br>' : '' ) + d . text ;
727+ if ( d . text && ! Array . isArray ( d . text ) ) {
728+ text += ( text ? '<br>' : '' ) + d . text ;
729+ }
728730
729731 // if 'text' is empty at this point,
730732 // put 'name' in main label and don't show secondary label
@@ -1056,6 +1058,30 @@ function cleanPoint(d, hovermode) {
10561058 var cd0 = d . cd [ 0 ] ;
10571059 var cd = d . cd [ d . index ] || { } ;
10581060
1061+ function fill ( key , calcKey , traceKey ) {
1062+ var val ;
1063+
1064+ if ( cd [ calcKey ] ) {
1065+ val = cd [ calcKey ] ;
1066+ } else if ( cd0 [ calcKey ] ) {
1067+ var arr = cd0 [ calcKey ] ;
1068+ if ( Array . isArray ( arr ) && Array . isArray ( arr [ d . index [ 0 ] ] ) ) {
1069+ val = arr [ d . index [ 0 ] ] [ d . index [ 1 ] ] ;
1070+ }
1071+ } else {
1072+ val = Lib . nestedProperty ( trace , traceKey ) . get ( ) ;
1073+ }
1074+
1075+ if ( val ) d [ key ] = val ;
1076+ }
1077+
1078+ fill ( 'hoverinfo' , 'hi' , 'hoverinfo' ) ;
1079+ fill ( 'color' , 'hbg' , 'hoverlabel.bgcolor' ) ;
1080+ fill ( 'borderColor' , 'hbc' , 'hoverlabel.bordercolor' ) ;
1081+ fill ( 'fontFamily' , 'htf' , 'hoverlabel.font.family' ) ;
1082+ fill ( 'fontSize' , 'hts' , 'hoverlabel.font.size' ) ;
1083+ fill ( 'fontColor' , 'htc' , 'hoverlabel.font.color' ) ;
1084+
10591085 d . posref = hovermode === 'y' ? ( d . x0 + d . x1 ) / 2 : ( d . y0 + d . y1 ) / 2 ;
10601086
10611087 // then constrain all the positions to be on the plot
@@ -1123,7 +1149,7 @@ function cleanPoint(d, hovermode) {
11231149 if ( hovermode === 'y' ) d . distance += 1 ;
11241150 }
11251151
1126- var infomode = d . trace . hoverinfo ;
1152+ var infomode = d . hoverinfo || d . trace . hoverinfo ;
11271153 if ( infomode !== 'all' ) {
11281154 infomode = infomode . split ( '+' ) ;
11291155 if ( infomode . indexOf ( 'x' ) === - 1 ) d . xLabel = undefined ;
@@ -1133,29 +1159,6 @@ function cleanPoint(d, hovermode) {
11331159 if ( infomode . indexOf ( 'name' ) === - 1 ) d . name = undefined ;
11341160 }
11351161
1136- function fill ( key , calcKey , traceKey ) {
1137- var val ;
1138-
1139- if ( cd [ calcKey ] ) {
1140- val = cd [ calcKey ] ;
1141- } else if ( cd0 [ calcKey ] ) {
1142- var arr = cd0 [ calcKey ] ;
1143- if ( Array . isArray ( arr ) && Array . isArray ( arr [ d . index [ 0 ] ] ) ) {
1144- val = arr [ d . index [ 0 ] ] [ d . index [ 1 ] ] ;
1145- }
1146- } else {
1147- val = Lib . nestedProperty ( trace , traceKey ) . get ( ) ;
1148- }
1149-
1150- if ( val ) d [ key ] = val ;
1151- }
1152-
1153- fill ( 'color' , 'hbg' , 'hoverlabel.bgcolor' ) ;
1154- fill ( 'borderColor' , 'hbc' , 'hoverlabel.bordercolor' ) ;
1155- fill ( 'fontFamily' , 'htf' , 'hoverlabel.font.family' ) ;
1156- fill ( 'fontSize' , 'hts' , 'hoverlabel.font.size' ) ;
1157- fill ( 'fontColor' , 'htc' , 'hoverlabel.font.color' ) ;
1158-
11591162 return d ;
11601163}
11611164
0 commit comments