From be9e6b9a7c265a6e7ffb29386af5b16814a5f0e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 26 Apr 2017 14:31:50 -0400 Subject: [PATCH 1/2] resolves #1575 - call Fx.hover with evt object containing 'xpx' & 'ypx' - to test main codepath instead of fallback `ax._length` --- test/jasmine/tests/hover_label_test.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/test/jasmine/tests/hover_label_test.js b/test/jasmine/tests/hover_label_test.js index b18110042b4..a86ce60efa6 100644 --- a/test/jasmine/tests/hover_label_test.js +++ b/test/jasmine/tests/hover_label_test.js @@ -16,11 +16,8 @@ var fail = require('../assets/fail_test'); describe('hover info', function() { 'use strict'; - var mock = require('@mocks/14.json'), - evt = { - clientX: mock.layout.width / 2, - clientY: mock.layout.height / 2 - }; + var mock = require('@mocks/14.json'); + var evt = { xpx: 355, ypx: 150 }; afterEach(destroyGraphDiv); From cf61dc2f167ea2ca8704a0cf30cecd1985a071e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 26 Apr 2017 15:24:27 -0400 Subject: [PATCH 2/2] fixes #1600 - allow z cartesian traces to have a name hover label --- src/components/fx/hover.js | 2 +- test/jasmine/tests/hover_label_test.js | 46 ++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/components/fx/hover.js b/src/components/fx/hover.js index 0ee09026d5d..15feb60883f 100644 --- a/src/components/fx/hover.js +++ b/src/components/fx/hover.js @@ -696,7 +696,7 @@ function createHoverText(hoverData, opts) { // to get custom 'name' labels pass cleanPoint if(d.nameOverride !== undefined) d.name = d.nameOverride; - if(d.name && d.zLabelVal === undefined) { + if(d.name) { // strip out our pseudo-html elements from d.name (if it exists at all) name = svgTextUtils.plainText(d.name || ''); diff --git a/test/jasmine/tests/hover_label_test.js b/test/jasmine/tests/hover_label_test.js index a86ce60efa6..8ebd133deaa 100644 --- a/test/jasmine/tests/hover_label_test.js +++ b/test/jasmine/tests/hover_label_test.js @@ -444,7 +444,53 @@ describe('hover info', function() { done(); }); + }); + }); + + describe('\'hover info for x/y/z traces', function() { + function _hover(gd, xpx, ypx) { + Fx.hover(gd, { xpx: xpx, ypx: ypx }, 'xy'); + delete gd._lastHoverTime; + } + + function _assert(nameLabel, lines) { + expect(d3.select('g.axistext').size()).toEqual(0, 'no common label'); + + var sel = d3.select('g.hovertext'); + expect(sel.select('text.name').html()).toEqual(nameLabel, 'name label'); + sel.select('text.nums').selectAll('tspan').each(function(_, i) { + expect(d3.select(this).html()).toEqual(lines[i], 'lines ' + i); + }); + } + it('should display correct label content', function(done) { + var gd = createGraphDiv(); + + Plotly.plot(gd, [{ + type: 'heatmap', + y: [0, 1], + z: [[1, 2, 3], [2, 2, 1]], + name: 'one', + }, { + type: 'heatmap', + y: [2, 3], + z: [[1, 2, 3], [2, 2, 1]], + name: 'two' + }], { + width: 500, + height: 400, + margin: {l: 0, t: 0, r: 0, b: 0} + }) + .then(function() { + _hover(gd, 250, 100); + _assert('two', ['x: 1', 'y: 3', 'z: 2']); + }) + .then(function() { + _hover(gd, 250, 300); + _assert('one', ['x: 1', 'y: 1', 'z: 2']); + }) + .catch(fail) + .then(done); }); });