From daadbc5777451b3e3bf3f663a7560c3de55f8042 Mon Sep 17 00:00:00 2001 From: Brian Ben Maranville Date: Thu, 16 Mar 2023 21:39:46 -0400 Subject: [PATCH 1/5] fix for incorrect final position when dragging legend --- src/components/legend/draw.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/legend/draw.js b/src/components/legend/draw.js index abbced80002..5f4b6c9cb17 100644 --- a/src/components/legend/draw.js +++ b/src/components/legend/draw.js @@ -308,7 +308,7 @@ function _draw(gd, legendObj) { } if(gd._context.edits.legendPosition) { - var xf, yf, x0, y0; + var xf, yf, x0, y0, legend_width, legend_height; legend.classed('cursor-move', true); @@ -319,15 +319,17 @@ function _draw(gd, legendObj) { var transform = Drawing.getTranslate(legend); x0 = transform.x; y0 = transform.y; + var bbox = legend.node().getBBox(); + legend_width = bbox.width; + legend_height = bbox.height; }, moveFn: function(dx, dy) { var newX = x0 + dx; var newY = y0 + dy; Drawing.setTranslate(legend, newX, newY); - - xf = dragElement.align(newX, 0, gs.l, gs.l + gs.w, legendObj.xanchor); - yf = dragElement.align(newY, 0, gs.t + gs.h, gs.t, legendObj.yanchor); + xf = dragElement.align(newX, legend_width, gs.l, gs.l + gs.w, legendObj.xanchor); + yf = dragElement.align(newY + legend_height, -legend_height, gs.t + gs.h, gs.t, legendObj.yanchor); }, doneFn: function() { if(xf !== undefined && yf !== undefined) { From b826dba209012c2acce1b9aca6ddbe8c190e1af6 Mon Sep 17 00:00:00 2001 From: Brian Ben Maranville Date: Thu, 16 Mar 2023 22:04:13 -0400 Subject: [PATCH 2/5] adding changelog for PR #6528 --- draftlogs/6528_fix.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/6528_fix.md diff --git a/draftlogs/6528_fix.md b/draftlogs/6528_fix.md new file mode 100644 index 00000000000..cbd5a6baab9 --- /dev/null +++ b/draftlogs/6528_fix.md @@ -0,0 +1 @@ + - fix dragging of legend when xanchor is not 'left' or yanchor is not 'top' [[#6528](https://github.com/plotly/plotly.js/pull/6528)] \ No newline at end of file From ab02ea44d70a76d2bbd44bbb9d72c1238e88da24 Mon Sep 17 00:00:00 2001 From: Brian Ben Maranville Date: Thu, 16 Mar 2023 22:17:29 -0400 Subject: [PATCH 3/5] convert variable names to camel case --- src/components/legend/draw.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/legend/draw.js b/src/components/legend/draw.js index 5f4b6c9cb17..f63934d86cf 100644 --- a/src/components/legend/draw.js +++ b/src/components/legend/draw.js @@ -308,7 +308,7 @@ function _draw(gd, legendObj) { } if(gd._context.edits.legendPosition) { - var xf, yf, x0, y0, legend_width, legend_height; + var xf, yf, x0, y0, legendWidth, legendHeight; legend.classed('cursor-move', true); @@ -320,16 +320,16 @@ function _draw(gd, legendObj) { x0 = transform.x; y0 = transform.y; var bbox = legend.node().getBBox(); - legend_width = bbox.width; - legend_height = bbox.height; + legendWidth = bbox.width; + legendHeight = bbox.height; }, moveFn: function(dx, dy) { var newX = x0 + dx; var newY = y0 + dy; Drawing.setTranslate(legend, newX, newY); - xf = dragElement.align(newX, legend_width, gs.l, gs.l + gs.w, legendObj.xanchor); - yf = dragElement.align(newY + legend_height, -legend_height, gs.t + gs.h, gs.t, legendObj.yanchor); + xf = dragElement.align(newX, legendWidth, gs.l, gs.l + gs.w, legendObj.xanchor); + yf = dragElement.align(newY + legendHeight, -legendHeight, gs.t + gs.h, gs.t, legendObj.yanchor); }, doneFn: function() { if(xf !== undefined && yf !== undefined) { From 04c5e7585007dff0e0e6a80b5f395b3aeda08aeb Mon Sep 17 00:00:00 2001 From: bbm Date: Fri, 17 Mar 2023 10:55:28 -0400 Subject: [PATCH 4/5] use existing, calculated values of legend width and height legendObj._height and legendObj._width are used for positioning the element at the outset, so it seems appropriate to use them again here --- src/components/legend/draw.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/legend/draw.js b/src/components/legend/draw.js index f63934d86cf..d27ce2d5f1f 100644 --- a/src/components/legend/draw.js +++ b/src/components/legend/draw.js @@ -319,9 +319,8 @@ function _draw(gd, legendObj) { var transform = Drawing.getTranslate(legend); x0 = transform.x; y0 = transform.y; - var bbox = legend.node().getBBox(); - legendWidth = bbox.width; - legendHeight = bbox.height; + legendWidth = legendObj._width; + legendHeight = legendObj._height; }, moveFn: function(dx, dy) { var newX = x0 + dx; From 23263f2432997f5957795bbc8cfd5f8b5de6ab8f Mon Sep 17 00:00:00 2001 From: bbm Date: Fri, 17 Mar 2023 12:06:50 -0400 Subject: [PATCH 5/5] remove unneeded intermediate variables legendHeight and legendWidth --- src/components/legend/draw.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/legend/draw.js b/src/components/legend/draw.js index d27ce2d5f1f..9f000a6c26c 100644 --- a/src/components/legend/draw.js +++ b/src/components/legend/draw.js @@ -308,7 +308,7 @@ function _draw(gd, legendObj) { } if(gd._context.edits.legendPosition) { - var xf, yf, x0, y0, legendWidth, legendHeight; + var xf, yf, x0, y0; legend.classed('cursor-move', true); @@ -319,16 +319,14 @@ function _draw(gd, legendObj) { var transform = Drawing.getTranslate(legend); x0 = transform.x; y0 = transform.y; - legendWidth = legendObj._width; - legendHeight = legendObj._height; }, moveFn: function(dx, dy) { var newX = x0 + dx; var newY = y0 + dy; Drawing.setTranslate(legend, newX, newY); - xf = dragElement.align(newX, legendWidth, gs.l, gs.l + gs.w, legendObj.xanchor); - yf = dragElement.align(newY + legendHeight, -legendHeight, gs.t + gs.h, gs.t, legendObj.yanchor); + xf = dragElement.align(newX, legendObj._width, gs.l, gs.l + gs.w, legendObj.xanchor); + yf = dragElement.align(newY + legendObj._height, -legendObj._height, gs.t + gs.h, gs.t, legendObj.yanchor); }, doneFn: function() { if(xf !== undefined && yf !== undefined) {