From 360d8959cfd9c0f21ef4774d0fa8fce11110b91d Mon Sep 17 00:00:00 2001 From: Farkites Date: Fri, 1 Mar 2024 15:29:55 +0000 Subject: [PATCH 1/4] Add x boundaries for ticksarray --- src/plots/cartesian/axes.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index ba8faae29c4..be1c60ef4bb 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -1293,10 +1293,7 @@ function arrayTicks(ax, majorOnly) { for(var i = 0; i < vals.length; i++) { var vali = tickVal2l(vals[i]); if(vali > tickMin && vali < tickMax) { - var obj = text[i] === undefined ? - axes.tickText(ax, vali) : - tickTextObj(ax, vali, String(text[i])); - + var obj = axes.tickText(ax, vali, false, String(text[i])); if(isMinor) { obj.minor = true; obj.text = ''; @@ -1633,6 +1630,14 @@ axes.tickText = function(ax, x, hover, noSuffixPrefix) { } if(i < ax.ticktext.length) { out.text = String(ax.ticktext[i]); + var inbounds = function(v) { + var p = ax.l2p(v); + return p >= 0 && p <= ax._length ? v : null; + }; + out.xbnd = [ + inbounds(out.x - 0.5), + inbounds(out.x + ax.dtick - 0.5) + ]; return out; } } @@ -2807,7 +2812,7 @@ function getBoundaryVals(ax, vals) { // boundaryVals are never used for labels; // no need to worry about the other tickTextObj keys var _push = function(d, bndIndex) { - var xb = d.xbnd ? d.xbnd[bndIndex] : d.x; + var xb = d.xbnd[bndIndex]; if(xb !== null) { out.push(Lib.extendFlat({}, d, {x: xb})); } @@ -3755,7 +3760,7 @@ axes.drawLabels = function(gd, ax, opts) { // TODO should secondary labels also fall into this fix-overlap regime? for(i = 0; i < lbbArray.length; i++) { - var xbnd = (vals && vals[i].xbnd) ? vals[i].xbnd : [null, null]; + var xbnd = vals[i].xbnd; var lbb = lbbArray[i]; if( (xbnd[0] !== null && (lbb.left - ax.l2p(xbnd[0])) < gap) || From 2f198eb0e576eb37d0fe4494a35d6dfd29aa42c1 Mon Sep 17 00:00:00 2001 From: Farkites Date: Fri, 1 Mar 2024 15:54:23 +0000 Subject: [PATCH 2/4] Fix lint errors --- src/plots/cartesian/axes.js | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index be1c60ef4bb..e189f14b745 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -1621,6 +1621,10 @@ axes.tickText = function(ax, x, hover, noSuffixPrefix) { var tickVal2l = axType === 'category' ? ax.d2l_noadd : ax.d2l; var i; + var inbounds = function(v) { + var p = ax.l2p(v); + return p >= 0 && p <= ax._length ? v : null; + }; if(arrayMode && Lib.isArrayOrTypedArray(ax.ticktext)) { var rng = Lib.simpleMap(ax.range, ax.r2l); var minDiff = (Math.abs(rng[1] - rng[0]) - (ax._lBreaks || 0)) / 10000; @@ -1630,10 +1634,7 @@ axes.tickText = function(ax, x, hover, noSuffixPrefix) { } if(i < ax.ticktext.length) { out.text = String(ax.ticktext[i]); - var inbounds = function(v) { - var p = ax.l2p(v); - return p >= 0 && p <= ax._length ? v : null; - }; + out.xbnd = [ inbounds(out.x - 0.5), inbounds(out.x + ax.dtick - 0.5) @@ -1679,11 +1680,6 @@ axes.tickText = function(ax, x, hover, noSuffixPrefix) { // Setup ticks and grid lines boundaries // at 1/2 a 'category' to the left/bottom if(ax.tickson === 'boundaries' || ax.showdividers) { - var inbounds = function(v) { - var p = ax.l2p(v); - return p >= 0 && p <= ax._length ? v : null; - }; - out.xbnd = [ inbounds(out.x - 0.5), inbounds(out.x + ax.dtick - 0.5) From 1168cd40c82bf8a7e3d8b9421f46212e063788e4 Mon Sep 17 00:00:00 2001 From: Farkites Date: Fri, 1 Mar 2024 17:28:19 +0000 Subject: [PATCH 3/4] Replace baseline --- ...ickson_boundaries_showgrid_categorical.png | Bin 8707 -> 8860 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/zz-tickson_boundaries_showgrid_categorical.png b/test/image/baselines/zz-tickson_boundaries_showgrid_categorical.png index 8d4fb1d90df5dc435f358ec241ab6aaeebe15328..6f32be16bf82a5919df5221a87e30dcc7727562f 100644 GIT binary patch literal 8860 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 literal 8707 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 VOyH){z{ee+v!`s#%TBsQ{R;*~@6iAN From 2c08009d32c4f38eab8e69baa811482f6764f9c2 Mon Sep 17 00:00:00 2001 From: Farkites Date: Fri, 1 Mar 2024 18:06:34 +0000 Subject: [PATCH 4/4] Add draftlog --- draftlogs/6912_fix.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/6912_fix.md diff --git a/draftlogs/6912_fix.md b/draftlogs/6912_fix.md new file mode 100644 index 00000000000..a7a779ad3f7 --- /dev/null +++ b/draftlogs/6912_fix.md @@ -0,0 +1 @@ +- Fix undesired behaviour introduced in [#6885](https://github.com/plotly/plotly.js/pull/6885) where `tickson: 'boundaries'` were ignored when used with `ticksmode: 'array'` and `showgrid: true`. This feature was anonymously sponsored: thank you to our sponsor! \ No newline at end of file