@@ -4998,6 +4998,151 @@ describe('hovermode: (x|y)unified', function() {
4998
4998
. then ( done , done . fail ) ;
4999
4999
} ) ;
5000
5000
5001
+ it ( 'non-period points winning hover' , function ( done ) {
5002
+ Plotly . newPlot ( gd , {
5003
+ data : [
5004
+ {
5005
+ name : 'bar' ,
5006
+ type : 'bar' ,
5007
+ x : [ '1999-12' , '2000-01' , '2000-02' ] ,
5008
+ y : [ 2 , 1 , 3 ] ,
5009
+ xhoverformat : '%b' ,
5010
+ xperiod : 'M1'
5011
+ } ,
5012
+ {
5013
+ name : 'scatter' ,
5014
+ type : 'scatter' ,
5015
+ x : [
5016
+ '2000-01-01' , '2000-01-06' , '2000-01-11' , '2000-01-16' , '2000-01-21' , '2000-01-26' ,
5017
+ '2000-02-01' , '2000-02-06' , '2000-02-11' , '2000-02-16' , '2000-02-21' , '2000-02-26' ,
5018
+ '2000-03-01' , '2000-03-06' , '2000-03-11' , '2000-03-16' , '2000-03-21' , '2000-03-26'
5019
+ ] ,
5020
+ y : [
5021
+ 1.1 , 1.2 , 1.3 , 1.4 , 1.5 , 1.6 ,
5022
+ 2.1 , 2.2 , 2.3 , 2.4 , 2.5 , 2.6 ,
5023
+ 3.1 , 3.2 , 3.3 , 3.4 , 3.5 , 3.6 ,
5024
+ ]
5025
+ }
5026
+ ] ,
5027
+ layout : {
5028
+ showlegend : false ,
5029
+ width : 600 ,
5030
+ height : 400 ,
5031
+ hovermode : 'x unified'
5032
+ }
5033
+ } )
5034
+ . then ( function ( gd ) {
5035
+ _hover ( gd , { xpx : 50 , ypx : 200 } ) ;
5036
+ assertLabel ( { title : 'Dec' , items : [
5037
+ 'bar : 2'
5038
+ ] } ) ;
5039
+
5040
+ _hover ( gd , { xpx : 100 , ypx : 200 } ) ;
5041
+ assertLabel ( { title : 'Jan 1, 2000' , items : [
5042
+ 'scatter : 1.1'
5043
+ ] } ) ;
5044
+
5045
+ _hover ( gd , { xpx : 150 , ypx : 200 } ) ;
5046
+ assertLabel ( { title : 'Jan 11, 2000' , items : [
5047
+ 'bar : (Jan, 1)' ,
5048
+ 'scatter : 1.3'
5049
+ ] } ) ;
5050
+
5051
+ _hover ( gd , { xpx : 200 , ypx : 200 } ) ;
5052
+ assertLabel ( { title : 'Jan 26, 2000' , items : [
5053
+ 'bar : (Jan, 1)' ,
5054
+ 'scatter : 1.6'
5055
+ ] } ) ;
5056
+
5057
+ _hover ( gd , { xpx : 250 , ypx : 200 } ) ;
5058
+ assertLabel ( { title : 'Feb 11, 2000' , items : [
5059
+ 'bar : (Feb, 3)' ,
5060
+ 'scatter : 2.3'
5061
+ ] } ) ;
5062
+
5063
+ _hover ( gd , { xpx : 300 , ypx : 200 } ) ;
5064
+ assertLabel ( { title : 'Feb 21, 2000' , items : [
5065
+ 'bar : (Feb, 3)' ,
5066
+ 'scatter : 2.5'
5067
+ ] } ) ;
5068
+
5069
+ _hover ( gd , { xpx : 350 , ypx : 200 } ) ;
5070
+ assertLabel ( { title : 'Mar 6, 2000' , items : [
5071
+ 'scatter : 3.2'
5072
+ ] } ) ;
5073
+ } )
5074
+ . then ( done , done . fail ) ;
5075
+ } ) ;
5076
+
5077
+ it ( 'period points alignments' , function ( done ) {
5078
+ Plotly . newPlot ( gd , {
5079
+ data : [
5080
+ {
5081
+ name : 'bar' ,
5082
+ type : 'bar' ,
5083
+ x : [ '2000-01' , '2000-02' ] ,
5084
+ y : [ 1 , 2 ] ,
5085
+ xhoverfrmat : '%b' ,
5086
+ xperiod : 'M1'
5087
+ } ,
5088
+ {
5089
+ name : 'start' ,
5090
+ type : 'scatter' ,
5091
+ x : [ '2000-01' , '2000-02' ] ,
5092
+ y : [ 1 , 2 ] ,
5093
+ xhoverformat : '%b' ,
5094
+ xperiod : 'M1' ,
5095
+ xperiodalignment : 'start'
5096
+ } ,
5097
+ {
5098
+ name : 'end' ,
5099
+ type : 'scatter' ,
5100
+ x : [ '2000-01' , '2000-02' ] ,
5101
+ y : [ 1 , 2 ] ,
5102
+ xhoverformat : '%b' ,
5103
+ xperiod : 'M1' ,
5104
+ xperiodalignment : 'end'
5105
+ } ,
5106
+ ] ,
5107
+ layout : {
5108
+ showlegend : false ,
5109
+ width : 600 ,
5110
+ height : 400 ,
5111
+ hovermode : 'x unified'
5112
+ }
5113
+ } )
5114
+ . then ( function ( gd ) {
5115
+ _hover ( gd , { xpx : 40 , ypx : 200 } ) ;
5116
+ assertLabel ( { title : 'Jan' , items : [
5117
+ 'bar : (Jan 1, 2000, 1)' ,
5118
+ 'start : 1' ,
5119
+ 'end : 1'
5120
+ ] } ) ;
5121
+
5122
+ _hover ( gd , { xpx : 100 , ypx : 200 } ) ;
5123
+ assertLabel ( { title : 'Jan 1, 2000' , items : [
5124
+ 'bar : 1' ,
5125
+ 'start : (Jan, 1)' ,
5126
+ 'end : (Jan, 1)'
5127
+ ] } ) ;
5128
+
5129
+ _hover ( gd , { xpx : 360 , ypx : 200 } ) ;
5130
+ assertLabel ( { title : 'Feb 1, 2000' , items : [
5131
+ 'bar : 2' ,
5132
+ 'start : (Feb, 2)' ,
5133
+ 'end : (Feb, 2)'
5134
+ ] } ) ;
5135
+
5136
+ _hover ( gd , { xpx : 400 , ypx : 200 } ) ;
5137
+ assertLabel ( { title : 'Feb' , items : [
5138
+ 'bar : (Feb 1, 2000, 2)' ,
5139
+ 'start : 2' ,
5140
+ 'end : 2'
5141
+ ] } ) ;
5142
+ } )
5143
+ . then ( done , done . fail ) ;
5144
+ } ) ;
5145
+
5001
5146
it ( 'should have the same traceorder as the legend' , function ( done ) {
5002
5147
var mock = require ( '@mocks/stacked_area.json' ) ;
5003
5148
var mockCopy = Lib . extendDeep ( { } , mock ) ;
0 commit comments