diff --git a/src/components/fx/hover.js b/src/components/fx/hover.js index d5b40e76123..eff1e1a2c4e 100644 --- a/src/components/fx/hover.js +++ b/src/components/fx/hover.js @@ -131,21 +131,10 @@ exports.loneHover = function loneHover(hoverItems, opts) { var gLeft = getLeftOffset(gd); var pointsData = hoverItems.map(function(hoverItem) { - var _x0 = 0; - if(hoverItem.x0 !== undefined) _x0 = hoverItem.x0; - else if(hoverItem.x !== undefined) _x0 = hoverItem.x; - - var _x1 = 0; - if(hoverItem.x1 !== undefined) _x1 = hoverItem.x1; - else if(hoverItem.x !== undefined) _x1 = hoverItem.x; - - var _y0 = 0; - if(hoverItem.y0 !== undefined) _y0 = hoverItem.y0; - else if(hoverItem.y !== undefined) _y0 = hoverItem.y; - - var _y1 = 0; - if(hoverItem.y1 !== undefined) _y1 = hoverItem.y1; - else if(hoverItem.y !== undefined) _y1 = hoverItem.y; + var _x0 = hoverItem._x0 || hoverItem.x0 || hoverItem.x || 0; + var _x1 = hoverItem._x1 || hoverItem.x1 || hoverItem.x || 0; + var _y0 = hoverItem._y0 || hoverItem.y0 || hoverItem.y || 0; + var _y1 = hoverItem._y1 || hoverItem.y1 || hoverItem.y || 0; var eventData = hoverItem.eventData; if(eventData) { @@ -181,10 +170,10 @@ exports.loneHover = function loneHover(hoverItems, opts) { return { color: hoverItem.color || Color.defaultLine, - x0: _x0, - x1: _x1, - y0: _y0, - y1: _y1, + x0: hoverItem.x0 || hoverItem.x || 0, + x1: hoverItem.x1 || hoverItem.x || 0, + y0: hoverItem.y0 || hoverItem.y || 0, + y1: hoverItem.y1 || hoverItem.y || 0, xLabel: hoverItem.xLabel, yLabel: hoverItem.yLabel, zLabel: hoverItem.zLabel, diff --git a/src/traces/icicle/draw_descendants.js b/src/traces/icicle/draw_descendants.js index b742438ea24..feec1ce4386 100644 --- a/src/traces/icicle/draw_descendants.js +++ b/src/traces/icicle/draw_descendants.js @@ -116,6 +116,12 @@ module.exports = function drawDescendants(gd, cd, entry, slices, opts) { } updateSlices.each(function(pt) { + // for bbox + pt._x0 = viewX(pt.x0); + pt._x1 = viewX(pt.x1); + pt._y0 = viewY(pt.y0); + pt._y1 = viewY(pt.y1); + pt._hoverX = viewX(pt.x1 - trace.tiling.pad), pt._hoverY = hasBottom ? viewY(pt.y1 - trace.tiling.pad / 2) : diff --git a/src/traces/sunburst/fx.js b/src/traces/sunburst/fx.js index eada70edf24..931541b3929 100644 --- a/src/traces/sunburst/fx.js +++ b/src/traces/sunburst/fx.js @@ -132,6 +132,10 @@ module.exports = function attachFxHandlers(sliceTop, entry, gd, cd, opts) { var hoverItems = { trace: traceNow, y: hoverCenterY, + _x0: pt._x0, + _x1: pt._x1, + _y0: pt._y0, + _y1: pt._y1, text: thisText.join('
'), name: (hovertemplate || hasFlag('name')) ? traceNow.name : undefined, color: _cast('hoverlabel.bgcolor') || cdi.color, diff --git a/src/traces/treemap/draw_ancestors.js b/src/traces/treemap/draw_ancestors.js index 294af2fc624..a25bcfea236 100644 --- a/src/traces/treemap/draw_ancestors.js +++ b/src/traces/treemap/draw_ancestors.js @@ -89,6 +89,12 @@ module.exports = function drawAncestors(gd, cd, entry, slices, opts) { } updateSlices.each(function(pt) { + // for bbox + pt._x0 = viewX(pt.x0); + pt._x1 = viewX(pt.x1); + pt._y0 = viewY(pt.y0); + pt._y1 = viewY(pt.y1); + pt._hoverX = viewX(pt.x1 - Math.min(width, height) / 2); pt._hoverY = viewY(pt.y1 - height / 2); diff --git a/src/traces/treemap/draw_descendants.js b/src/traces/treemap/draw_descendants.js index 4e1fe8062be..d34296e8d05 100644 --- a/src/traces/treemap/draw_descendants.js +++ b/src/traces/treemap/draw_descendants.js @@ -124,6 +124,12 @@ module.exports = function drawDescendants(gd, cd, entry, slices, opts) { updateSlices.each(function(pt) { var isHeader = helpers.isHeader(pt, trace); + // for bbox + pt._x0 = viewX(pt.x0); + pt._x1 = viewX(pt.x1); + pt._y0 = viewY(pt.y0); + pt._y1 = viewY(pt.y1); + pt._hoverX = viewX(pt.x1 - trace.marker.pad.r), pt._hoverY = hasBottom ? viewY(pt.y1 - trace.marker.pad.b / 2) :