From 9bcf7e6708b240e12f57210840ed87d1e76e96e7 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Fri, 15 Mar 2024 10:41:38 +0100 Subject: [PATCH 01/13] Add shapes.layer value "belowtraces" for drawing shapes in between gridlines and traces --- src/components/shapes/attributes.js | 4 +- src/components/shapes/draw.js | 4 +- src/plots/cartesian/index.js | 4 + .../mocks/shapes_layer_below_traces.json | 126 ++++++++++++++++++ test/plot-schema.json | 5 +- 5 files changed, 138 insertions(+), 5 deletions(-) create mode 100644 test/image/mocks/shapes_layer_below_traces.json diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 589110eb1d1..20e25bbbb43 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -110,10 +110,10 @@ module.exports = templatedArray('shape', { layer: { valType: 'enumerated', - values: ['below', 'above'], + values: ['below', 'above', 'belowtraces'], dflt: 'above', editType: 'arraydraw', - description: 'Specifies whether shapes are drawn below or above traces.' + description: 'Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*belowtraces*) or above traces (*above*).' }, xref: extendFlat({}, annAttrs.xref, { diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 26339816c75..a920625e665 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -91,10 +91,12 @@ function drawOne(gd, index) { // TODO: use d3 idioms instead of deleting and redrawing every time if(!options._input || options.visible !== true) return; - if(options.layer !== 'below') { + if(options.layer === 'above') { drawShape(gd._fullLayout._shapeUpperLayer); } else if(options.xref === 'paper' || options.yref === 'paper') { drawShape(gd._fullLayout._shapeLowerLayer); + } else if(options.layer === 'belowtraces') { + drawShape(plotinfo.shapelayerBelowTraces); } else { if(plotinfo._hadPlotinfo) { var mainPlot = plotinfo.mainplotinfo || plotinfo; diff --git a/src/plots/cartesian/index.js b/src/plots/cartesian/index.js index e57c5572d01..11777a15679 100644 --- a/src/plots/cartesian/index.js +++ b/src/plots/cartesian/index.js @@ -465,6 +465,10 @@ function makeSubplotLayer(gd, plotinfo) { plotinfo.gridlayer = ensureSingle(plotgroup, 'g', 'gridlayer'); plotinfo.zerolinelayer = ensureSingle(plotgroup, 'g', 'zerolinelayer'); + var belowTracesLayer = ensureSingle(plotgroup, 'g', 'layer-below-traces'); + plotinfo.shapelayerBelowTraces = ensureSingle(belowTracesLayer, 'g', 'shapelayer'); + plotinfo.imagelayerBelowTraces = ensureSingle(belowTracesLayer, 'g', 'imagelayer'); + ensureSingle(plotgroup, 'path', 'xlines-below'); ensureSingle(plotgroup, 'path', 'ylines-below'); plotinfo.overlinesBelow = ensureSingle(plotgroup, 'g', 'overlines-below'); diff --git a/test/image/mocks/shapes_layer_below_traces.json b/test/image/mocks/shapes_layer_below_traces.json new file mode 100644 index 00000000000..78fa5dc6e96 --- /dev/null +++ b/test/image/mocks/shapes_layer_below_traces.json @@ -0,0 +1,126 @@ +{ + "data": [ + { + "name": "scatter", + "x": [ + "A", + "B", + "C", + "D", + 2000.0 + ], + "y": [ + 100, + 200, + 150, + 190, + 50 + ], + "type": "scatter" + }, + { + "name": "bar", + "x": [ + "A", + "B", + "C", + "D", + 2000.0 + ], + "y": [ + 50, + 70, + 90, + 35, + 55 + ], + "type": "bar" + } + ], + "layout": { + "shapes": [ + { + "name": "dashdot line", + "fillcolor": "rgba(179,179,179,0.6)", + "layer": "above", + "line": { + "color": "rgba(66,127,109,0.6)", + "dash": "dashdot" + }, + "type": "line", + "x0": 0.75, + "x1": 0.75, + "xref": "x", + "y0": 0.0, + "y1": 1.0, + "yref": "paper" + }, + { + "name": "horizontal line", + "fillcolor": "rgba(179,179,179,1)", + "layer": "above", + "line": { + "color": "rgba(0,0,0,1)" + }, + "type": "line", + "x0": 0.0, + "x1": 1.0, + "xref": "paper", + "y0": 120.0, + "y1": 120.0, + "yref": "y" + }, + { + "name": "blue rect", + "fillcolor": "rgba(108,173,225,0.8)", + "layer": "belowtraces", + "line": { + "color": "rgba(108,173,225,0.8)" + }, + "type": "rect", + "x0": "B", + "x1": "D", + "xref": "x", + "y0": 40, + "y1": 70.0 + }, + { + "name": "big rect", + "fillcolor": "rgba(179,179,179,1)", + "layer": "below", + "line": { + "color": "rgba(179,179,179,1)" + }, + "type": "rect", + "x0": "C", + "x1": 0.25, + "xref": "x", + "y0": 0.0, + "y1": 1.0, + "yref": "paper" + }, + { + "name": "dashed rect", + "fillcolor": "rgba(130,143,198,1)", + "layer": "belowtraces", + "line": { + "color": "rgba(0,0,0,1)", + "dash": "dash", + "width": 3.0 + }, + "type": "rect", + "x0": "D", + "x1": 5, + "y0": 140, + "y1": 200 + } + ], + "yaxis": { + "insiderange": [ + "0", + "215" + ], + "type": "linear" + } + } +} \ No newline at end of file diff --git a/test/plot-schema.json b/test/plot-schema.json index 9b3a8816729..771c2b1e432 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -7708,13 +7708,14 @@ } }, "layer": { - "description": "Specifies whether shapes are drawn below or above traces.", + "description": "Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*belowtraces*) or above traces (*above*).", "dflt": "above", "editType": "arraydraw", "valType": "enumerated", "values": [ "below", - "above" + "above", + "belowtraces" ] }, "legend": { From 0f9da5af1735787815bc431a02bdf0fa865db710 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Fri, 15 Mar 2024 10:50:53 +0100 Subject: [PATCH 02/13] Add draftlog --- draftlogs/6927_add.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/6927_add.md diff --git a/draftlogs/6927_add.md b/draftlogs/6927_add.md new file mode 100644 index 00000000000..4a41e61ddee --- /dev/null +++ b/draftlogs/6927_add.md @@ -0,0 +1 @@ + - Add `belowtraces` shape layer [[#6927](https://github.com/plotly/plotly.js/pull/6927)] From 267867bb6a5d65ca7f0a3bf9f052f1efa1e0774c Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Fri, 15 Mar 2024 11:26:28 +0100 Subject: [PATCH 03/13] Add baseline image for shapes_layer_below_traces.json --- .../baselines/shapes_layer_below_traces.png | Bin 0 -> 27346 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/shapes_layer_below_traces.png diff --git a/test/image/baselines/shapes_layer_below_traces.png b/test/image/baselines/shapes_layer_below_traces.png new file mode 100644 index 0000000000000000000000000000000000000000..214977cab02ad175e2cd08415197b19cc622739f GIT binary patch literal 27346 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 MegloWYS!oe1(R8pL;wH) literal 0 HcmV?d00001 From b25862d6aa3cca3897ed805fec785e86ed0772b5 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Fri, 15 Mar 2024 11:47:00 +0100 Subject: [PATCH 04/13] Make sure new test images run last --- ..._traces.png => zz-shapes_layer_below_traces.png} | Bin ...races.json => zz-shapes_layer_below_traces.json} | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename test/image/baselines/{shapes_layer_below_traces.png => zz-shapes_layer_below_traces.png} (100%) rename test/image/mocks/{shapes_layer_below_traces.json => zz-shapes_layer_below_traces.json} (99%) diff --git a/test/image/baselines/shapes_layer_below_traces.png b/test/image/baselines/zz-shapes_layer_below_traces.png similarity index 100% rename from test/image/baselines/shapes_layer_below_traces.png rename to test/image/baselines/zz-shapes_layer_below_traces.png diff --git a/test/image/mocks/shapes_layer_below_traces.json b/test/image/mocks/zz-shapes_layer_below_traces.json similarity index 99% rename from test/image/mocks/shapes_layer_below_traces.json rename to test/image/mocks/zz-shapes_layer_below_traces.json index 78fa5dc6e96..b7c81046fc2 100644 --- a/test/image/mocks/shapes_layer_below_traces.json +++ b/test/image/mocks/zz-shapes_layer_below_traces.json @@ -123,4 +123,4 @@ "type": "linear" } } -} \ No newline at end of file +} From 7a7e57fe394d9110031055b4cc895b7eaa8d6bfe Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Fri, 15 Mar 2024 16:57:35 +0100 Subject: [PATCH 05/13] Update splom_test's innerSubplotNodeCnt and index of xaxislayer-above --- test/jasmine/tests/splom_test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/jasmine/tests/splom_test.js b/test/jasmine/tests/splom_test.js index b85c14882bd..1702d63e2f5 100644 --- a/test/jasmine/tests/splom_test.js +++ b/test/jasmine/tests/splom_test.js @@ -825,7 +825,7 @@ describe('Test splom interactions:', function() { .then(function() { _assert({ subplotCnt: 25, - innerSubplotNodeCnt: 18, + innerSubplotNodeCnt: 19, hasSplomGrid: false, bgCnt: 0 }); @@ -845,7 +845,7 @@ describe('Test splom interactions:', function() { // grid layer would be above xaxis layer, // if we didn't clear subplot children. expect(gridIndex).toBe(2, ' index'); - expect(xaxisIndex).toBe(15, ' index'); + expect(xaxisIndex).toBe(16, ' index'); return Plotly.restyle(gd, 'dimensions', [dimsLarge]); }) @@ -857,7 +857,7 @@ describe('Test splom interactions:', function() { // new subplots though have reduced number of children. innerSubplotNodeCnt: function(d) { var p = d.match(SUBPLOT_PATTERN); - return (p[1] > 5 || p[2] > 5) ? 4 : 18; + return (p[1] > 5 || p[2] > 5) ? 4 : 19; }, hasSplomGrid: true, bgCnt: 0 From 2b398d31ca42e7c025ca4bd16da13c6f184dcad4 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Mon, 18 Mar 2024 08:20:36 +0100 Subject: [PATCH 06/13] Rename "belowtraces" to "between" --- draftlogs/6927_add.md | 2 +- src/components/shapes/attributes.js | 4 ++-- src/components/shapes/draw.js | 4 ++-- src/plots/cartesian/index.js | 6 +++--- test/image/mocks/zz-shapes_layer_below_traces.json | 4 ++-- test/plot-schema.json | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/draftlogs/6927_add.md b/draftlogs/6927_add.md index 4a41e61ddee..d6b2f1730ab 100644 --- a/draftlogs/6927_add.md +++ b/draftlogs/6927_add.md @@ -1 +1 @@ - - Add `belowtraces` shape layer [[#6927](https://github.com/plotly/plotly.js/pull/6927)] + - Add `between` shape layer [[#6927](https://github.com/plotly/plotly.js/pull/6927)] diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 20e25bbbb43..1d55f04074b 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -110,10 +110,10 @@ module.exports = templatedArray('shape', { layer: { valType: 'enumerated', - values: ['below', 'above', 'belowtraces'], + values: ['below', 'above', 'between'], dflt: 'above', editType: 'arraydraw', - description: 'Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*belowtraces*) or above traces (*above*).' + description: 'Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*).' }, xref: extendFlat({}, annAttrs.xref, { diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index a920625e665..417c884c3f2 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -95,8 +95,8 @@ function drawOne(gd, index) { drawShape(gd._fullLayout._shapeUpperLayer); } else if(options.xref === 'paper' || options.yref === 'paper') { drawShape(gd._fullLayout._shapeLowerLayer); - } else if(options.layer === 'belowtraces') { - drawShape(plotinfo.shapelayerBelowTraces); + } else if(options.layer === 'between') { + drawShape(plotinfo.shapelayerBetween); } else { if(plotinfo._hadPlotinfo) { var mainPlot = plotinfo.mainplotinfo || plotinfo; diff --git a/src/plots/cartesian/index.js b/src/plots/cartesian/index.js index 11777a15679..28e46a64069 100644 --- a/src/plots/cartesian/index.js +++ b/src/plots/cartesian/index.js @@ -465,9 +465,9 @@ function makeSubplotLayer(gd, plotinfo) { plotinfo.gridlayer = ensureSingle(plotgroup, 'g', 'gridlayer'); plotinfo.zerolinelayer = ensureSingle(plotgroup, 'g', 'zerolinelayer'); - var belowTracesLayer = ensureSingle(plotgroup, 'g', 'layer-below-traces'); - plotinfo.shapelayerBelowTraces = ensureSingle(belowTracesLayer, 'g', 'shapelayer'); - plotinfo.imagelayerBelowTraces = ensureSingle(belowTracesLayer, 'g', 'imagelayer'); + var betweenLayer = ensureSingle(plotgroup, 'g', 'layer-between'); + plotinfo.shapelayerBetween = ensureSingle(betweenLayer, 'g', 'shapelayer'); + plotinfo.imagelayerBetween = ensureSingle(betweenLayer, 'g', 'imagelayer'); ensureSingle(plotgroup, 'path', 'xlines-below'); ensureSingle(plotgroup, 'path', 'ylines-below'); diff --git a/test/image/mocks/zz-shapes_layer_below_traces.json b/test/image/mocks/zz-shapes_layer_below_traces.json index b7c81046fc2..61e030a110a 100644 --- a/test/image/mocks/zz-shapes_layer_below_traces.json +++ b/test/image/mocks/zz-shapes_layer_below_traces.json @@ -73,7 +73,7 @@ { "name": "blue rect", "fillcolor": "rgba(108,173,225,0.8)", - "layer": "belowtraces", + "layer": "between", "line": { "color": "rgba(108,173,225,0.8)" }, @@ -102,7 +102,7 @@ { "name": "dashed rect", "fillcolor": "rgba(130,143,198,1)", - "layer": "belowtraces", + "layer": "between", "line": { "color": "rgba(0,0,0,1)", "dash": "dash", diff --git a/test/plot-schema.json b/test/plot-schema.json index 771c2b1e432..0fe2b0235fa 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -7708,14 +7708,14 @@ } }, "layer": { - "description": "Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*belowtraces*) or above traces (*above*).", + "description": "Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*).", "dflt": "above", "editType": "arraydraw", "valType": "enumerated", "values": [ "below", "above", - "belowtraces" + "between" ] }, "legend": { From 70ebe7228d820df09f0cfbef2580a9b905a90c34 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Mon, 18 Mar 2024 17:38:34 +0100 Subject: [PATCH 07/13] Add "between to newshape.layer as well. Make line length of description shorter. --- src/components/shapes/attributes.js | 5 ++++- src/components/shapes/draw_newshape/attributes.js | 7 +++++-- test/plot-schema.json | 13 ++++++++++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 1d55f04074b..99590f4a000 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -113,7 +113,10 @@ module.exports = templatedArray('shape', { values: ['below', 'above', 'between'], dflt: 'above', editType: 'arraydraw', - description: 'Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*).' + description: [ + 'Specifies whether shapes are drawn below gridlines (*below*),', + 'between gridlines and traces (*between*) or above traces (*above*).' + ] }, xref: extendFlat({}, annAttrs.xref, { diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index 4cad7c7d27f..bacd6e07504 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -117,9 +117,12 @@ module.exports = overrideAll({ }, layer: { valType: 'enumerated', - values: ['below', 'above'], + values: ['below', 'above', 'between'], dflt: 'above', - description: 'Specifies whether new shapes are drawn below or above traces.' + description: [ + 'Specifies whether new shapes are drawn below gridlines (*below*),', + 'between gridlines and traces (*between*) or above traces (*above*).' + ] }, drawdirection: { valType: 'enumerated', diff --git a/test/plot-schema.json b/test/plot-schema.json index 0fe2b0235fa..9ff3ae08540 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3720,13 +3720,17 @@ } }, "layer": { - "description": "Specifies whether new shapes are drawn below or above traces.", + "description": [ + "Specifies whether new shapes are drawn below gridlines (*below*),", + "between gridlines and traces (*between*) or above traces (*above*)." + ], "dflt": "above", "editType": "none", "valType": "enumerated", "values": [ "below", - "above" + "above", + "between" ] }, "legend": { @@ -7708,7 +7712,10 @@ } }, "layer": { - "description": "Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*).", + "description": [ + "Specifies whether shapes are drawn below gridlines (*below*),", + "between gridlines and traces (*between*) or above traces (*above*)." + ], "dflt": "above", "editType": "arraydraw", "valType": "enumerated", From 11e05a1f03a69134e5af3884cbc3ee9449cbd482 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Tue, 19 Mar 2024 13:14:47 +0100 Subject: [PATCH 08/13] Fix descriptions for shapes.layer and newshape.layer --- src/components/shapes/attributes.js | 2 +- src/components/shapes/draw_newshape/attributes.js | 2 +- test/plot-schema.json | 10 ++-------- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 99590f4a000..6a6e5a3a846 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -116,7 +116,7 @@ module.exports = templatedArray('shape', { description: [ 'Specifies whether shapes are drawn below gridlines (*below*),', 'between gridlines and traces (*between*) or above traces (*above*).' - ] + ].join(' ') }, xref: extendFlat({}, annAttrs.xref, { diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index bacd6e07504..633870414b6 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -122,7 +122,7 @@ module.exports = overrideAll({ description: [ 'Specifies whether new shapes are drawn below gridlines (*below*),', 'between gridlines and traces (*between*) or above traces (*above*).' - ] + ].join(' ') }, drawdirection: { valType: 'enumerated', diff --git a/test/plot-schema.json b/test/plot-schema.json index 9ff3ae08540..4ce7600457d 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3720,10 +3720,7 @@ } }, "layer": { - "description": [ - "Specifies whether new shapes are drawn below gridlines (*below*),", - "between gridlines and traces (*between*) or above traces (*above*)." - ], + "description": "Specifies whether new shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*).", "dflt": "above", "editType": "none", "valType": "enumerated", @@ -7712,10 +7709,7 @@ } }, "layer": { - "description": [ - "Specifies whether shapes are drawn below gridlines (*below*),", - "between gridlines and traces (*between*) or above traces (*above*)." - ], + "description": "Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*).", "dflt": "above", "editType": "arraydraw", "valType": "enumerated", From ff7ca7a73a7f016a5cabee97c33b216ed68ff007 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Mon, 25 Mar 2024 13:14:58 +0100 Subject: [PATCH 09/13] Test more cases in shapes_layer_below_traces mock - added axis y2 to test interaction between axes - added shape label - moved dashdot line to see more of its interaction with the gridlines - removed transparency for easier visual checking --- .../mocks/zz-shapes_layer_below_traces.json | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/test/image/mocks/zz-shapes_layer_below_traces.json b/test/image/mocks/zz-shapes_layer_below_traces.json index 61e030a110a..38b9b9ce894 100644 --- a/test/image/mocks/zz-shapes_layer_below_traces.json +++ b/test/image/mocks/zz-shapes_layer_below_traces.json @@ -34,22 +34,23 @@ 35, 55 ], - "type": "bar" + "type": "bar", + "yaxis":"y2" } ], "layout": { "shapes": [ { "name": "dashdot line", - "fillcolor": "rgba(179,179,179,0.6)", + "fillcolor": "rgba(179,179,179,1)", "layer": "above", "line": { - "color": "rgba(66,127,109,0.6)", + "color": "rgba(66,127,109,1)", "dash": "dashdot" }, "type": "line", - "x0": 0.75, - "x1": 0.75, + "x0": 0.4, + "x1": 0.4, "xref": "x", "y0": 0.0, "y1": 1.0, @@ -72,17 +73,20 @@ }, { "name": "blue rect", - "fillcolor": "rgba(108,173,225,0.8)", + "fillcolor": "rgba(108,173,225,1)", "layer": "between", + "label": { + "text": "hello, I am between gridlines and traces!" + }, "line": { - "color": "rgba(108,173,225,0.8)" + "color": "rgba(108,173,225,1)" }, "type": "rect", "x0": "B", "x1": "D", "xref": "x", - "y0": 40, - "y1": 70.0 + "y0": 35, + "y1": 65.0 }, { "name": "big rect", @@ -121,6 +125,11 @@ "215" ], "type": "linear" + }, + "yaxis2": { + "side": "right", + "overlaying": "y" } + } } From 410f7cf4bb5bd4213034a43daa3a8fa365d599d6 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Mon, 25 Mar 2024 13:34:02 +0100 Subject: [PATCH 10/13] Updated baseline image for changed shapes_layer_below_traces mock --- .../zz-shapes_layer_below_traces.png | Bin 27346 -> 28642 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/zz-shapes_layer_below_traces.png b/test/image/baselines/zz-shapes_layer_below_traces.png index 214977cab02ad175e2cd08415197b19cc622739f..70841e359910a0a53342671dc854494c0cb188c7 100644 GIT binary patch literal 28642 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 SC3tt=Dy<{B>JJZFT>2jalk$E5 literal 27346 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 MegloWYS!oe1(R8pL;wH) From 65a49a20c3d8fff37b8b2b21547e9cddd5dcc058 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Wed, 27 Mar 2024 13:54:34 +0100 Subject: [PATCH 11/13] shapes_layer_below_traces mock: Make y and y2 gridlines visually distinct --- test/image/mocks/zz-shapes_layer_below_traces.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/image/mocks/zz-shapes_layer_below_traces.json b/test/image/mocks/zz-shapes_layer_below_traces.json index 38b9b9ce894..4f198489920 100644 --- a/test/image/mocks/zz-shapes_layer_below_traces.json +++ b/test/image/mocks/zz-shapes_layer_below_traces.json @@ -120,6 +120,7 @@ } ], "yaxis": { + "gridcolor": "red", "insiderange": [ "0", "215" @@ -127,6 +128,7 @@ "type": "linear" }, "yaxis2": { + "gridwidth": 2, "side": "right", "overlaying": "y" } From 4b86efd27f94aa936c0c870f4991152cedf2acb6 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Wed, 27 Mar 2024 14:59:45 +0100 Subject: [PATCH 12/13] updated baseline image after changing shapes_layer_below_traces mock --- .../zz-shapes_layer_below_traces.png | Bin 28642 -> 28866 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/zz-shapes_layer_below_traces.png b/test/image/baselines/zz-shapes_layer_below_traces.png index 70841e359910a0a53342671dc854494c0cb188c7..d6e05eb6f0f2d21bd56d6d9fd5d0fb53f7e3484e 100644 GIT binary patch literal 28866 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 SC3tt=Dy<{B>JJZFT>2jalk$E5 From fb7f2285a18c7d625171dfb418d6d5797278de83 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi <33888540+archmoj@users.noreply.github.com> Date: Thu, 28 Mar 2024 09:09:44 -0400 Subject: [PATCH 13/13] Update draftlogs/6927_add.md --- draftlogs/6927_add.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/draftlogs/6927_add.md b/draftlogs/6927_add.md index d6b2f1730ab..c0e77d41684 100644 --- a/draftlogs/6927_add.md +++ b/draftlogs/6927_add.md @@ -1 +1,2 @@ - - Add `between` shape layer [[#6927](https://github.com/plotly/plotly.js/pull/6927)] + - Add "between" option to shape layer for placing them above grid lines and below traces [[#6927](https://github.com/plotly/plotly.js/pull/6927)], + with thanks to @my-tien for the contribution!