From 42502091051f104f748f79a839f67852ec293619 Mon Sep 17 00:00:00 2001 From: alexcjohnson Date: Wed, 28 Feb 2024 21:16:22 -0500 Subject: [PATCH 1/4] use "r" type rather than "d" for axes in insiderange calculations fixes insiderange for category axes, also presumably for log axes --- src/plots/cartesian/axes.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index ba8faae29c4..2d86405eb12 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -3907,13 +3907,13 @@ axes.drawLabels = function(gd, ax, opts) { var anchorAxRange = anchorAx.range; - var p0 = anchorAx.d2p(anchorAxRange[index]); - var p1 = anchorAx.d2p(anchorAxRange[otherIndex]); + var p0 = anchorAx.r2p(anchorAxRange[index]); + var p1 = anchorAx.r2p(anchorAxRange[otherIndex]); var _tempNewRange = fullLayout._insideTickLabelsUpdaterange[anchorAx._name + '.range']; if(_tempNewRange) { // case of having multiple anchored axes having insideticklabel - var q0 = anchorAx.d2p(_tempNewRange[index]); - var q1 = anchorAx.d2p(_tempNewRange[otherIndex]); + var q0 = anchorAx.r2p(_tempNewRange[index]); + var q1 = anchorAx.r2p(_tempNewRange[otherIndex]); var dir = sgn * (ax._id.charAt(0) === 'y' ? 1 : -1); @@ -3938,8 +3938,8 @@ axes.drawLabels = function(gd, ax, opts) { if(ax._id.charAt(0) !== 'y') move = -move; - newRange[index] = anchorAx.p2d( - anchorAx.d2p(anchorAxRange[index]) + + newRange[index] = anchorAx.p2r( + anchorAx.r2p(anchorAxRange[index]) + sgn * move ); From 3683044c7e42d72243ece4776f68e9a82c128678 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Fri, 1 Mar 2024 09:09:31 -0500 Subject: [PATCH 2/4] draft log --- draftlogs/6910_fix.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/6910_fix.md diff --git a/draftlogs/6910_fix.md b/draftlogs/6910_fix.md new file mode 100644 index 00000000000..6b503f2f5b2 --- /dev/null +++ b/draftlogs/6910_fix.md @@ -0,0 +1 @@ + - Fix `insiderange` with category axes [[#6910](https://github.com/plotly/plotly.js/pull/6910)] From e4c7b9f44482310bacc6f7a961d48c9058986f9e Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Fri, 1 Mar 2024 09:22:22 -0500 Subject: [PATCH 3/4] baseline before PR --- .../baselines/zz-insiderange-category.png | Bin 0 -> 9514 bytes test/image/mocks/zz-insiderange-category.json | 34 ++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 test/image/baselines/zz-insiderange-category.png create mode 100644 test/image/mocks/zz-insiderange-category.json diff --git a/test/image/baselines/zz-insiderange-category.png b/test/image/baselines/zz-insiderange-category.png new file mode 100644 index 0000000000000000000000000000000000000000..f076d80f23361504d3215282b54c604455a4f087 GIT binary patch literal 9514 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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/zz-insiderange-category.json b/test/image/mocks/zz-insiderange-category.json new file mode 100644 index 00000000000..f7bb097e92c --- /dev/null +++ b/test/image/mocks/zz-insiderange-category.json @@ -0,0 +1,34 @@ +{ + "data": [ + { + "name": "bar", + "x": [ + "A", + "B", + "C", + "D" + ], + "y": [ + 50, + 70, + 90, + 35 + ], + "type": "bar" + } + ], + "layout": { + "xaxis": { + "type": "category", + "insiderange": [ + 1, + 2 + ] + }, + "yaxis": { + "side": "right", + "ticklabelposition": "inside top" + }, + "width": 400 + } +} From 6f05ee4569c1191e86f2c06b21748c140d7055d4 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Fri, 1 Mar 2024 09:23:45 -0500 Subject: [PATCH 4/4] baseline after PR --- .../baselines/zz-insiderange-category.png | Bin 9514 -> 10082 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/zz-insiderange-category.png b/test/image/baselines/zz-insiderange-category.png index f076d80f23361504d3215282b54c604455a4f087..2964d7b2e8ea32c2fa46a3764e0ead322faf5652 100644 GIT binary patch literal 10082 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 literal 9514 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