@@ -651,10 +651,48 @@ function _hover(gd, evt, subplot, noHoverEvent) {
651
651
) {
652
652
var winningPoint = hoverData [ 0 ] ;
653
653
654
- findHoverPoints (
655
- customVal ( 'x' , winningPoint , fullLayout ) ,
656
- customVal ( 'y' , winningPoint , fullLayout )
657
- ) ;
654
+ var customXVal = customVal ( 'x' , winningPoint , fullLayout ) ;
655
+ var customYVal = customVal ( 'y' , winningPoint , fullLayout ) ;
656
+
657
+ findHoverPoints ( customXVal , customYVal ) ;
658
+
659
+ // also find start, middle and end point for period
660
+ var axLetter = hovermode . charAt ( 0 ) ;
661
+ if ( winningPoint . trace [ axLetter + 'period' ] ) {
662
+ var initLen = hoverData . length ;
663
+
664
+ var v = winningPoint [ axLetter + 'LabelVal' ] ;
665
+ var ax = winningPoint [ axLetter + 'a' ] ;
666
+ var T = { } ;
667
+ T [ axLetter + 'period' ] = winningPoint . trace [ axLetter + 'period' ] ;
668
+ T [ axLetter + 'period0' ] = winningPoint . trace [ axLetter + 'period0' ] ;
669
+
670
+ T [ axLetter + 'periodalignment' ] = 'start' ;
671
+ var start = alignPeriod ( T , ax , axLetter , [ v ] ) [ 0 ] ;
672
+
673
+ T [ axLetter + 'periodalignment' ] = 'middle' ;
674
+ var middle = alignPeriod ( T , ax , axLetter , [ v ] ) [ 0 ] ;
675
+
676
+ T [ axLetter + 'periodalignment' ] = 'end' ;
677
+ var end = alignPeriod ( T , ax , axLetter , [ v ] ) [ 0 ] ;
678
+
679
+ if ( axLetter === 'x' ) {
680
+ findHoverPoints ( start , customYVal ) ;
681
+ findHoverPoints ( middle , customYVal ) ;
682
+ findHoverPoints ( end , customYVal ) ;
683
+ } else {
684
+ findHoverPoints ( customXVal , start ) ;
685
+ findHoverPoints ( customXVal , middle ) ;
686
+ findHoverPoints ( customXVal , end ) ;
687
+ }
688
+
689
+ // remove non-period aditions
690
+ for ( var k = hoverData . length - 1 ; k >= initLen ; k -- ) {
691
+ if ( ! hoverData [ k ] . trace [ axLetter + 'period' ] ) {
692
+ hoverData . splice ( k , 1 ) ;
693
+ }
694
+ }
695
+ }
658
696
659
697
// Remove duplicated hoverData points
660
698
// note that d3 also filters identical points in the rendering steps
0 commit comments