Skip to content

Commit a2f34c9

Browse files
committed
adjust hover positions on parcats category bands in respect to css transforms
1 parent 28a9178 commit a2f34c9

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

src/traces/parcats/parcats.js

+17-11
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,10 @@ function emitPointsEventColorHovermode(bandElement, eventName, event) {
765765
* HTML element for band
766766
*
767767
*/
768-
function createHoverLabelForCategoryHovermode(rootBBox, bandElement) {
768+
function createHoverLabelForCategoryHovermode(gd, rootBBox, bandElement) {
769+
var scaleX = gd._fullLayout._inverseScaleX;
770+
var scaleY = gd._fullLayout._inverseScaleY;
771+
769772
// Selections
770773
var rectSelection = d3.select(bandElement.parentNode).select('rect.catrect');
771774
var rectBoundingBox = rectSelection.node().getBoundingClientRect();
@@ -813,8 +816,8 @@ function createHoverLabelForCategoryHovermode(rootBBox, bandElement) {
813816
var hovertext = hoverinfoParts.join('<br>');
814817
return {
815818
trace: trace,
816-
x: hoverCenterX - rootBBox.left,
817-
y: hoverCenterY - rootBBox.top,
819+
x: scaleX * (hoverCenterX - rootBBox.left),
820+
y: scaleY * (hoverCenterY - rootBBox.top),
818821
text: hovertext,
819822
color: 'lightgray',
820823
borderColor: 'black',
@@ -843,15 +846,15 @@ function createHoverLabelForCategoryHovermode(rootBBox, bandElement) {
843846
* HTML element for band
844847
*
845848
*/
846-
function createHoverLabelForDimensionHovermode(rootBBox, bandElement) {
849+
function createHoverLabelForDimensionHovermode(gd, rootBBox, bandElement) {
847850
var allHoverlabels = [];
848851

849852
d3.select(bandElement.parentNode.parentNode)
850853
.selectAll('g.category')
851854
.select('rect.catrect')
852855
.each(function() {
853856
var bandNode = this;
854-
allHoverlabels.push(createHoverLabelForCategoryHovermode(rootBBox, bandNode));
857+
allHoverlabels.push(createHoverLabelForCategoryHovermode(gd, rootBBox, bandNode));
855858
});
856859

857860
return allHoverlabels;
@@ -866,7 +869,10 @@ function createHoverLabelForDimensionHovermode(rootBBox, bandElement) {
866869
* HTML element for band
867870
*
868871
*/
869-
function createHoverLabelForColorHovermode(rootBBox, bandElement) {
872+
function createHoverLabelForColorHovermode(gd, rootBBox, bandElement) {
873+
var scaleX = gd._fullLayout._inverseScaleX;
874+
var scaleY = gd._fullLayout._inverseScaleY;
875+
870876
var bandBoundingBox = bandElement.getBoundingClientRect();
871877

872878
// Models
@@ -944,8 +950,8 @@ function createHoverLabelForColorHovermode(rootBBox, bandElement) {
944950

945951
return {
946952
trace: trace,
947-
x: hoverCenterX - rootBBox.left,
948-
y: hoverCenterY - rootBBox.top,
953+
x: scaleX * (hoverCenterX - rootBBox.left),
954+
y: scaleY * (hoverCenterY - rootBBox.top),
949955
// name: 'NAME',
950956
text: hovertext,
951957
color: bandViewModel.color,
@@ -1008,11 +1014,11 @@ function mouseoverCategoryBand(bandViewModel) {
10081014
if(bandViewModel.parcatsViewModel.hoverinfoItems.indexOf('none') === -1) {
10091015
var hoverItems;
10101016
if(hoveron === 'category') {
1011-
hoverItems = createHoverLabelForCategoryHovermode(rootBBox, bandElement);
1017+
hoverItems = createHoverLabelForCategoryHovermode(gd, rootBBox, bandElement);
10121018
} else if(hoveron === 'color') {
1013-
hoverItems = createHoverLabelForColorHovermode(rootBBox, bandElement);
1019+
hoverItems = createHoverLabelForColorHovermode(gd, rootBBox, bandElement);
10141020
} else if(hoveron === 'dimension') {
1015-
hoverItems = createHoverLabelForDimensionHovermode(rootBBox, bandElement);
1021+
hoverItems = createHoverLabelForDimensionHovermode(gd, rootBBox, bandElement);
10161022
}
10171023

10181024
if(hoverItems) {

0 commit comments

Comments
 (0)