From bffdff6406a4ce7c00e00f0b11995f966b278df8 Mon Sep 17 00:00:00 2001 From: archmoj Date: Thu, 30 May 2019 22:31:48 -0400 Subject: [PATCH 1/2] add jasmine test to lock phx issue 241 --- test/jasmine/tests/gl2d_click_test.js | 41 +++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/test/jasmine/tests/gl2d_click_test.js b/test/jasmine/tests/gl2d_click_test.js index 9d59f00eb53..792436c0f26 100644 --- a/test/jasmine/tests/gl2d_click_test.js +++ b/test/jasmine/tests/gl2d_click_test.js @@ -346,6 +346,47 @@ describe('Test hover and click interactions', function() { .then(done); }); + it('@gl should show last point data for overlapped scattergl points with hovermode set to closest', function(done) { + var _mock = Lib.extendDeep({}, mock1); + _mock.data[0].hovertext = 'text'; + _mock.data[0].hovertext = 'HoVeRtExT'; + _mock.layout.hovermode = 'closest'; + + var run = makeRunner([200, 200], { + x: 2, + y: 0, + label: ['(2, 0)\nTRUE', null], + curveNumber: 0, + pointNumber: 3, + bgcolor: 'rgb(31, 119, 180)', + bordercolor: 'rgb(255, 255, 255)', + fontSize: 13, + fontFamily: 'Arial', + fontColor: 'rgb(255, 255, 255)' + }, { + msg: 'scattergl with hovertext' + }); + + Plotly.plot(gd, { + data: [{ + text: ['', 'FALSE', '', 'TRUE'], + x: [1, 2, 3, 2], + y: [0, 0, 0, 0], + type: 'scattergl', + mode: 'markers', + marker: { size: 40 } + }], + layout: { + width: 400, + height: 400, + hovermode: 'closest' + } + }) + .then(run) + .catch(failTest) + .then(done); + }); + it('@gl should output correct event data for pointcloud', function(done) { var _mock = Lib.extendDeep({}, mock2); From f72389d9a087d98ea720acb4672f7968d16446b7 Mon Sep 17 00:00:00 2001 From: archmoj Date: Thu, 30 May 2019 22:09:07 -0400 Subject: [PATCH 2/2] select the last point as closest if two overlap --- src/traces/scattergl/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/traces/scattergl/index.js b/src/traces/scattergl/index.js index 3a655fdb22f..805c350036e 100644 --- a/src/traces/scattergl/index.js +++ b/src/traces/scattergl/index.js @@ -732,7 +732,7 @@ function hoverPoints(pointData, xval, yval, hovermode) { } } } else { - for(i = 0; i < ids.length; i++) { + for(i = ids.length - 1; i > -1; i--) { ptx = x[ids[i]]; pty = y[ids[i]]; dx = xa.c2p(ptx) - xpx;