From 7ee2e8503c62f1aa3ef001ab1b3bf507de495511 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn Date: Thu, 17 Nov 2022 14:41:10 -0500 Subject: [PATCH 01/82] add attributes for text on shapes --- src/components/shapes/attributes.js | 22 +++++++++++++++++++++- src/components/shapes/defaults.js | 2 ++ test/image/mocks/shapes.json | 26 +++++++++++++------------- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 208c8b0b938..00acb99e241 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -224,6 +224,26 @@ module.exports = templatedArray('shape', { '`config.editable` or `config.edits.shapePosition`.' ].join(' ') }, - + text: { + valType: 'string', + dflt: null, + editType: 'arraydraw', + description: 'Sets the text to display with shape.' + }, + textposition: { + valType: 'enumerated', + values: ['center', 'topleft', 'topright', 'bottomleft', 'bottomright'], + dflt: 'center', + editType: 'arraydraw', + description: 'Sets text position relative to shape.' + }, + textangle: { + valType: 'number', + min: -180, + max: 180, + dflt: 0, + editType: 'arraydraw', + description: 'Sets text angle.' + }, editType: 'arraydraw' }); diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index fb757386a08..fea9b1d6c58 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -40,6 +40,8 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { coerce('line.dash'); } + coerce('text'); + var xSizeMode = coerce('xsizemode'); var ySizeMode = coerce('ysizemode'); diff --git a/test/image/mocks/shapes.json b/test/image/mocks/shapes.json index f98fcc6b843..0136d81c713 100644 --- a/test/image/mocks/shapes.json +++ b/test/image/mocks/shapes.json @@ -21,19 +21,19 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"layer":"below","xref":"paper","yref":"paper","x0":0,"x1":0.1,"y0":0,"y1":0.1}, - {"xref":"paper","yref":"paper","path":"M0,0.2V0.3H0.05L0,0.4Q0.1,0.4 0.1,0.3T0.15,0.3C0.1,0.4 0.2,0.4 0.2,0.3S0.15,0.3 0.15,0.2Z","fillcolor":"#4c0"}, - {"xref":"paper","yref":"paper","type":"circle","x0":0.23,"x1":0.3,"y0":0.2,"y1":0.4}, - {"xref":"paper","yref":"paper","type":"line","x0":0.2,"x1":0.3,"y0":0,"y1":0.1}, - {"layer":"below","x0":0.1,"x1":0.4,"y0":1.5,"y1":20,"opacity":0.5,"fillcolor":"#f00","line":{"width":8,"color":"#008","dash":"dashdot"}}, - {"path":"M0.5,3C0.5,9 0.9,9 0.9,3C0.9,1 0.5,1 0.5,3ZM0.6,4C0.6,5 0.66,5 0.66,4ZM0.74,4C0.74,5 0.8,5 0.8,4ZM0.6,3C0.63,2 0.77,2 0.8,3Z","fillcolor":"#fd2","line":{"width":1,"color":"black"}}, - {"layer":"below","xref":"x2","yref":"y2","type":"circle","x0":"2000-01-01 02","x1":"2000-01-01 08:30:33.456","y0":0.1,"y1":0.9,"fillcolor":"rgba(0,0,0,0.5)","line":{"color":"rgba(0,255,0,0.5)", "width":5}}, - {"xref":"x2","yref":"y2","path":"M2000-01-01_11:20:45.6,0.2Q2000-01-01_10:00,0.85 2000-01-01_21,0.8Q2000-01-01_22:20,0.15 2000-01-01_11:20:45.6,0.2Z","fillcolor":"rgb(151,73,58)"}, - {"xref":"x2","yref":"y2","type":"line","x0":"2000-01-01 11:00","x1":"2000-01-01 09:00","y0":"b","y1":"a","line":{"color":"#006","width":3}}, - {"yref":"paper","type":"line","x0":0.1,"x1":0.4,"y0":0,"y1":0.4,"line":{"color":"#009","dash":"dot","width":1}}, - {"yref":"paper","path":"M0.5,0H1.1L0.8,0.4Z","line":{"width":0},"fillcolor":"#ccd3ff"}, - {"xref":"paper","x0":0.1,"x1":0.2,"y0":-1,"y1":3,"fillcolor":"#ccc"}, - {"layer":"above","xref":"paper","path":"M0.05,4C0.4,12 -0.1,12 0.25,4Z","fillcolor":"#a66"} + {"text":"hello world 0", "layer":"below","xref":"paper","yref":"paper","x0":0,"x1":0.1,"y0":0,"y1":0.1}, + {"text":"hello world 1", "xref":"paper","yref":"paper","path":"M0,0.2V0.3H0.05L0,0.4Q0.1,0.4 0.1,0.3T0.15,0.3C0.1,0.4 0.2,0.4 0.2,0.3S0.15,0.3 0.15,0.2Z","fillcolor":"#4c0"}, + {"text":"hello world 2", "xref":"paper","yref":"paper","type":"circle","x0":0.23,"x1":0.3,"y0":0.2,"y1":0.4}, + {"text":"hello world 3", "xref":"paper","yref":"paper","type":"line","x0":0.2,"x1":0.3,"y0":0,"y1":0.1}, + {"text":"hello world 4", "layer":"below","x0":0.1,"x1":0.4,"y0":1.5,"y1":20,"opacity":0.5,"fillcolor":"#f00","line":{"width":8,"color":"#008","dash":"dashdot"}}, + {"text":"hello world 5", "path":"M0.5,3C0.5,9 0.9,9 0.9,3C0.9,1 0.5,1 0.5,3ZM0.6,4C0.6,5 0.66,5 0.66,4ZM0.74,4C0.74,5 0.8,5 0.8,4ZM0.6,3C0.63,2 0.77,2 0.8,3Z","fillcolor":"#fd2","line":{"width":1,"color":"black"}}, + {"text":"hello world 6", "layer":"below","xref":"x2","yref":"y2","type":"circle","x0":"2000-01-01 02","x1":"2000-01-01 08:30:33.456","y0":0.1,"y1":0.9,"fillcolor":"rgba(0,0,0,0.5)","line":{"color":"rgba(0,255,0,0.5)", "width":5}}, + {"text":"hello world 7", "xref":"x2","yref":"y2","path":"M2000-01-01_11:20:45.6,0.2Q2000-01-01_10:00,0.85 2000-01-01_21,0.8Q2000-01-01_22:20,0.15 2000-01-01_11:20:45.6,0.2Z","fillcolor":"rgb(151,73,58)"}, + {"text":"hello world 8", "xref":"x2","yref":"y2","type":"line","x0":"2000-01-01 11:00","x1":"2000-01-01 09:00","y0":"b","y1":"a","line":{"color":"#006","width":3}}, + {"text":"hello world 9", "yref":"paper","type":"line","x0":0.1,"x1":0.4,"y0":0,"y1":0.4,"line":{"color":"#009","dash":"dot","width":1}}, + {"text":"hello world 10", "yref":"paper","path":"M0.5,0H1.1L0.8,0.4Z","line":{"width":0},"fillcolor":"#ccd3ff"}, + {"text":"hello world 11", "xref":"paper","x0":0.1,"x1":0.2,"y0":-1,"y1":3,"fillcolor":"#ccc"}, + {"text":"hello world 12", "layer":"above","xref":"paper","path":"M0.05,4C0.4,12 -0.1,12 0.25,4Z","fillcolor":"#a66"} ] } } From 932fa657387d264c438b72121c07187ce37a11ca Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn Date: Thu, 17 Nov 2022 15:28:12 -0500 Subject: [PATCH 02/82] draw text, but not in the right place --- src/components/shapes/draw.js | 36 ++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 64eb3e16d13..ec829e8b3e9 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -16,6 +16,8 @@ var arrayEditor = require('../../plot_api/plot_template').arrayEditor; var dragElement = require('../dragelement'); var setCursor = require('../../lib/setcursor'); +var svgTextUtils = require('../../lib/svg_text_utils'); + var constants = require('./constants'); var helpers = require('./helpers'); var getPathString = helpers.getPathString; @@ -129,7 +131,10 @@ function drawOne(gd, index) { opacity = gd._fullLayout.activeshape.opacity; } - var path = shapeLayer.append('path') + var shapeGroup = shapeLayer.append('g') + .classed('shape-group', true); + + var path = shapeGroup.append('path') .attr(attrs) .style('opacity', opacity) .call(Color.stroke, lineColor) @@ -138,6 +143,35 @@ function drawOne(gd, index) { setClipPath(path, gd, options); + var text = options.text; + console.log('text!'); + console.log(text); + + var labelGroup = shapeGroup.append('g') + .classed('shape-label', true); + + var labelText = labelGroup.append('text') + .classed('shape-label-text', true) + .text(text); + + function textLayout(s) { + s.call(Drawing.font) + .attr({ + 'text-anchor': { + left: 'start', + right: 'end' + }[options.align] || 'middle', + 'x': options.x0, + 'y': options.y0, + }); + + svgTextUtils.convertToTspans(s, gd); + return s; + } + + labelText.call(textLayout); + + var editHelpers; if(isActiveShape || gd._context.edits.shapePosition) editHelpers = arrayEditor(gd.layout, 'shapes', options); From 1d0e4716b78c90a5c42ed5bfacdbb70c49048e7e Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 9 Jan 2023 11:13:50 -0500 Subject: [PATCH 03/82] draw text in correct place, when x0 and y0 are defined for shape --- src/components/shapes/draw.js | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index ec829e8b3e9..47156c11cec 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -146,24 +146,36 @@ function drawOne(gd, index) { var text = options.text; console.log('text!'); console.log(text); - + var labelGroup = shapeGroup.append('g') .classed('shape-label', true); var labelText = labelGroup.append('text') .classed('shape-label-text', true) .text(text); - + + // setup conversion functions + var xa = Axes.getFromId(gd, options.xref); + var xRefType = Axes.getRefType(options.xref); + var ya = Axes.getFromId(gd, options.yref); + var yRefType = Axes.getRefType(options.yref); + var x2p = helpers.getDataToPixel(gd, xa, false, xRefType); + var y2p = helpers.getDataToPixel(gd, ya, true, yRefType); + function textLayout(s) { - s.call(Drawing.font) - .attr({ - 'text-anchor': { - left: 'start', - right: 'end' - }[options.align] || 'middle', - 'x': options.x0, - 'y': options.y0, - }); + if(options.x0 && options.y0) { + s.call(Drawing.font) + .attr({ + 'text-anchor': { + left: 'start', + right: 'end' + }[options.align] || 'middle', + 'x': x2p(options.x0), + 'y': y2p(options.y0), + }); + } else { + console.log("x0 or y0 not defined for shape, so can't place text"); + } svgTextUtils.convertToTspans(s, gd); return s; @@ -200,7 +212,6 @@ function drawOne(gd, index) { ); } } - path.node().addEventListener('click', function() { return activateShape(gd, path); }); } } From e46e1bc2ba865f2ec7e4ce8ca3ef297da22bcd65 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 9 Jan 2023 13:40:54 -0500 Subject: [PATCH 04/82] update shape label api --- src/components/shapes/attributes.js | 60 ++++++++++++++++++++--------- src/components/shapes/defaults.js | 2 +- src/components/shapes/draw.js | 5 ++- test/image/mocks/shapes.json | 26 ++++++------- 4 files changed, 59 insertions(+), 34 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 00acb99e241..15f4a62e1bb 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -1,6 +1,7 @@ 'use strict'; var annAttrs = require('../annotations/attributes'); +var fontAttrs = require('../../plots/font_attributes'); var scatterLineAttrs = require('../../traces/scatter/attributes').line; var dash = require('../drawing/attributes').dash; var extendFlat = require('../../lib/extend').extendFlat; @@ -224,26 +225,47 @@ module.exports = templatedArray('shape', { '`config.editable` or `config.edits.shapePosition`.' ].join(' ') }, - text: { - valType: 'string', + label: { + text: { + valType: 'string', + dflt: null, + editType: 'arraydraw', + description: 'Sets the text to display with shape.' + }, + font: fontAttrs({ + editType: 'calc+arraydraw', + colorEditType: 'arraydraw', + description: 'Sets the shape label text font.' + }), + position: { + valType: 'enumerated', + values: [ + 'top left', 'top center', 'top right', + 'middle left', 'middle center', 'middle right', + 'bottom left', 'bottom center', 'bottom right' + ], + dflt: 'top left', + editType: 'arraydraw', + description: 'Sets the position of the label relative to she shape.' + }, + angle: { + valType: 'number', + min: -180, + max: 180, + dflt: 0, + editType: 'arraydraw', + description: 'Sets label angle.' + }, + xanchor: annAttrs.xanchor, + yanchor: annAttrs.yanchor, + padding: { + valType: 'number', + dflt: 0, + editType: 'arraydraw', + description: 'Sets padding between edge of label and xanchor / yanchor.' + }, dflt: null, - editType: 'arraydraw', - description: 'Sets the text to display with shape.' - }, - textposition: { - valType: 'enumerated', - values: ['center', 'topleft', 'topright', 'bottomleft', 'bottomright'], - dflt: 'center', - editType: 'arraydraw', - description: 'Sets text position relative to shape.' - }, - textangle: { - valType: 'number', - min: -180, - max: 180, - dflt: 0, - editType: 'arraydraw', - description: 'Sets text angle.' + editType: 'arraydraw' }, editType: 'arraydraw' }); diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index fea9b1d6c58..9e65f65e861 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -40,7 +40,7 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { coerce('line.dash'); } - coerce('text'); + coerce('label.text'); var xSizeMode = coerce('xsizemode'); var ySizeMode = coerce('ysizemode'); diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 47156c11cec..789275a8130 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -143,7 +143,10 @@ function drawOne(gd, index) { setClipPath(path, gd, options); - var text = options.text; + var text = null; + if(options.label) { + text = options.label.text; + } console.log('text!'); console.log(text); diff --git a/test/image/mocks/shapes.json b/test/image/mocks/shapes.json index 0136d81c713..8dd31238501 100644 --- a/test/image/mocks/shapes.json +++ b/test/image/mocks/shapes.json @@ -21,19 +21,19 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"text":"hello world 0", "layer":"below","xref":"paper","yref":"paper","x0":0,"x1":0.1,"y0":0,"y1":0.1}, - {"text":"hello world 1", "xref":"paper","yref":"paper","path":"M0,0.2V0.3H0.05L0,0.4Q0.1,0.4 0.1,0.3T0.15,0.3C0.1,0.4 0.2,0.4 0.2,0.3S0.15,0.3 0.15,0.2Z","fillcolor":"#4c0"}, - {"text":"hello world 2", "xref":"paper","yref":"paper","type":"circle","x0":0.23,"x1":0.3,"y0":0.2,"y1":0.4}, - {"text":"hello world 3", "xref":"paper","yref":"paper","type":"line","x0":0.2,"x1":0.3,"y0":0,"y1":0.1}, - {"text":"hello world 4", "layer":"below","x0":0.1,"x1":0.4,"y0":1.5,"y1":20,"opacity":0.5,"fillcolor":"#f00","line":{"width":8,"color":"#008","dash":"dashdot"}}, - {"text":"hello world 5", "path":"M0.5,3C0.5,9 0.9,9 0.9,3C0.9,1 0.5,1 0.5,3ZM0.6,4C0.6,5 0.66,5 0.66,4ZM0.74,4C0.74,5 0.8,5 0.8,4ZM0.6,3C0.63,2 0.77,2 0.8,3Z","fillcolor":"#fd2","line":{"width":1,"color":"black"}}, - {"text":"hello world 6", "layer":"below","xref":"x2","yref":"y2","type":"circle","x0":"2000-01-01 02","x1":"2000-01-01 08:30:33.456","y0":0.1,"y1":0.9,"fillcolor":"rgba(0,0,0,0.5)","line":{"color":"rgba(0,255,0,0.5)", "width":5}}, - {"text":"hello world 7", "xref":"x2","yref":"y2","path":"M2000-01-01_11:20:45.6,0.2Q2000-01-01_10:00,0.85 2000-01-01_21,0.8Q2000-01-01_22:20,0.15 2000-01-01_11:20:45.6,0.2Z","fillcolor":"rgb(151,73,58)"}, - {"text":"hello world 8", "xref":"x2","yref":"y2","type":"line","x0":"2000-01-01 11:00","x1":"2000-01-01 09:00","y0":"b","y1":"a","line":{"color":"#006","width":3}}, - {"text":"hello world 9", "yref":"paper","type":"line","x0":0.1,"x1":0.4,"y0":0,"y1":0.4,"line":{"color":"#009","dash":"dot","width":1}}, - {"text":"hello world 10", "yref":"paper","path":"M0.5,0H1.1L0.8,0.4Z","line":{"width":0},"fillcolor":"#ccd3ff"}, - {"text":"hello world 11", "xref":"paper","x0":0.1,"x1":0.2,"y0":-1,"y1":3,"fillcolor":"#ccc"}, - {"text":"hello world 12", "layer":"above","xref":"paper","path":"M0.05,4C0.4,12 -0.1,12 0.25,4Z","fillcolor":"#a66"} + {"label":{"text":"hello world 00"}, "layer":"below","xref":"paper","yref":"paper","x0":0,"x1":0.1,"y0":0,"y1":0.1}, + {"label":{"text":"hello world 01"}, "xref":"paper","yref":"paper","path":"M0,0.2V0.3H0.05L0,0.4Q0.1,0.4 0.1,0.3T0.15,0.3C0.1,0.4 0.2,0.4 0.2,0.3S0.15,0.3 0.15,0.2Z","fillcolor":"#4c0"}, + {"label":{"text":"hello world 02"}, "xref":"paper","yref":"paper","type":"circle","x0":0.23,"x1":0.3,"y0":0.2,"y1":0.4}, + {"label":{"text":"hello world 03"}, "xref":"paper","yref":"paper","type":"line","x0":0.2,"x1":0.3,"y0":0,"y1":0.1}, + {"label":{"text":"hello world 04"}, "layer":"below","x0":0.1,"x1":0.4,"y0":1.5,"y1":20,"opacity":0.5,"fillcolor":"#f00","line":{"width":8,"color":"#008","dash":"dashdot"}}, + {"label":{"text":"hello world 05"}, "path":"M0.5,3C0.5,9 0.9,9 0.9,3C0.9,1 0.5,1 0.5,3ZM0.6,4C0.6,5 0.66,5 0.66,4ZM0.74,4C0.74,5 0.8,5 0.8,4ZM0.6,3C0.63,2 0.77,2 0.8,3Z","fillcolor":"#fd2","line":{"width":1,"color":"black"}}, + {"label":{"text":"hello world 06"}, "layer":"below","xref":"x2","yref":"y2","type":"circle","x0":"2000-01-01 02","x1":"2000-01-01 08:30:33.456","y0":0.1,"y1":0.9,"fillcolor":"rgba(0,0,0,0.5)","line":{"color":"rgba(0,255,0,0.5)", "width":5}}, + {"label":{"text":"hello world 07"}, "xref":"x2","yref":"y2","path":"M2000-01-01_11:20:45.6,0.2Q2000-01-01_10:00,0.85 2000-01-01_21,0.8Q2000-01-01_22:20,0.15 2000-01-01_11:20:45.6,0.2Z","fillcolor":"rgb(151,73,58)"}, + {"label":{"text":"hello world 08"}, "xref":"x2","yref":"y2","type":"line","x0":"2000-01-01 11:00","x1":"2000-01-01 09:00","y0":"b","y1":"a","line":{"color":"#006","width":3}}, + {"label":{"text":"hello world 09"}, "yref":"paper","type":"line","x0":0.1,"x1":0.4,"y0":0,"y1":0.4,"line":{"color":"#009","dash":"dot","width":1}}, + {"label":{"text":"hello world 10"}, "yref":"paper","path":"M0.5,0H1.1L0.8,0.4Z","line":{"width":0},"fillcolor":"#ccd3ff"}, + {"label":{"text":"hello world 11"}, "xref":"paper","x0":0.1,"x1":0.2,"y0":-1,"y1":3,"fillcolor":"#ccc"}, + {"label":{"text":"hello world 12"}, "layer":"above","xref":"paper","path":"M0.05,4C0.4,12 -0.1,12 0.25,4Z","fillcolor":"#a66"} ] } } From 60823dcb7273192d7fac150e333434ca98426cbd Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 10 Jan 2023 10:07:03 -0500 Subject: [PATCH 05/82] implement xanchor --- src/components/shapes/defaults.js | 2 ++ src/components/shapes/draw.js | 8 +++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index 9e65f65e861..fb735f93f3b 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -41,6 +41,8 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { } coerce('label.text'); + coerce('label.xanchor'); + coerce('label.yanchor'); var xSizeMode = coerce('xsizemode'); var ySizeMode = coerce('ysizemode'); diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 789275a8130..6901cd07c46 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -171,18 +171,16 @@ function drawOne(gd, index) { .attr({ 'text-anchor': { left: 'start', + middle: 'middle', right: 'end' - }[options.align] || 'middle', + }[options.label.xanchor], 'x': x2p(options.x0), 'y': y2p(options.y0), }); - } else { - console.log("x0 or y0 not defined for shape, so can't place text"); } - svgTextUtils.convertToTspans(s, gd); return s; - } + } labelText.call(textLayout); From 2f8c8103673f991b6cb2d203a248f33430624547 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 10 Jan 2023 10:11:57 -0500 Subject: [PATCH 06/82] add image test --- test/image/mocks/x-text_on_shapes.json | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 test/image/mocks/x-text_on_shapes.json diff --git a/test/image/mocks/x-text_on_shapes.json b/test/image/mocks/x-text_on_shapes.json new file mode 100644 index 00000000000..4fcfef06aa9 --- /dev/null +++ b/test/image/mocks/x-text_on_shapes.json @@ -0,0 +1,23 @@ +{ + "data":[{ + "x":[0,10], + "y":[0,10], + "mode":"markers" + }], + "layout": { + "xaxis":{"title":{"text":"linear"},"range":[0,10],"domain":[0,10],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, + "yaxis":{"title":{"text":"linear"},"range":[0,10],"domain":[0,10],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, + "height":400, + "width":800, + "margin": {"l":20,"r":20,"pad":0}, + "showlegend":false, + "shapes":[ + {"label":{"text":"hello world 00", "xanchor":"right", "yanchor":"middle"}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, + {"label":{"text":"hello world 01"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, + {"label":{"text":"hello world 02"}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, + {"label":{"text":"hello world 03"}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#f00","line":{"width":3,"color":"#008","dash":"dashdot"}}, + {"label":{"text":"hello world 04"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#009","dash":"dot","width":2}}, + {"label":{"text":"hello world 05"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} + ] + } +} From e405293446e1c3610b0ff0b3c6befeff4f75ac5f Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 10 Jan 2023 10:57:02 -0500 Subject: [PATCH 07/82] fix xanchor bug --- src/components/shapes/draw.js | 2 +- test/image/mocks/x-text_on_shapes.json | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 6901cd07c46..5670fb7777b 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -171,7 +171,7 @@ function drawOne(gd, index) { .attr({ 'text-anchor': { left: 'start', - middle: 'middle', + center: 'middle', right: 'end' }[options.label.xanchor], 'x': x2p(options.x0), diff --git a/test/image/mocks/x-text_on_shapes.json b/test/image/mocks/x-text_on_shapes.json index 4fcfef06aa9..33c9b0b1428 100644 --- a/test/image/mocks/x-text_on_shapes.json +++ b/test/image/mocks/x-text_on_shapes.json @@ -12,12 +12,12 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"label":{"text":"hello world 00", "xanchor":"right", "yanchor":"middle"}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, - {"label":{"text":"hello world 01"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, - {"label":{"text":"hello world 02"}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, - {"label":{"text":"hello world 03"}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#f00","line":{"width":3,"color":"#008","dash":"dashdot"}}, - {"label":{"text":"hello world 04"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#009","dash":"dot","width":2}}, - {"label":{"text":"hello world 05"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} + {"label":{"text":"anchored right", "xanchor":"right"}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, + {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, + {"label":{"text":"anchored right", "xanchor":"right"}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, + {"label":{"text":"anchored center", "xanchor":"center"}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#f00","line":{"width":3,"color":"#008","dash":"dashdot"}}, + {"label":{"text":"anchored left"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#009","dash":"dot","width":2}}, + {"label":{"text":"anchored center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} ] } } From e31de9ea4ca17d008f33d558624a80e67f7ebd5c Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 10 Jan 2023 10:58:13 -0500 Subject: [PATCH 08/82] partial handling of re-render --- src/components/shapes/draw.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 5670fb7777b..41bc9f48f5f 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -44,10 +44,15 @@ function draw(gd) { // Remove previous shapes before drawing new in shapes in fullLayout.shapes fullLayout._shapeUpperLayer.selectAll('path').remove(); fullLayout._shapeLowerLayer.selectAll('path').remove(); + fullLayout._shapeUpperLayer.selectAll('text').remove(); + fullLayout._shapeLowerLayer.selectAll('text').remove(); for(var k in fullLayout._plots) { var shapelayer = fullLayout._plots[k].shapelayer; - if(shapelayer) shapelayer.selectAll('path').remove(); + if(shapelayer) { + shapelayer.selectAll('path').remove(); + shapelayer.selectAll('text').remove(); + } } for(var i = 0; i < fullLayout.shapes.length; i++) { From 0bcfff39692864179a4a28855bbe8641c2ff77dc Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 10 Jan 2023 13:44:00 -0500 Subject: [PATCH 09/82] handle numeric angles --- src/components/shapes/attributes.js | 13 +++++++------ src/components/shapes/defaults.js | 1 + src/components/shapes/draw.js | 15 +++++++++------ test/image/mocks/x-text_on_shapes.json | 4 ++-- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 15f4a62e1bb..8b43b863c6f 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -248,13 +248,14 @@ module.exports = templatedArray('shape', { editType: 'arraydraw', description: 'Sets the position of the label relative to she shape.' }, - angle: { - valType: 'number', - min: -180, - max: 180, + textangle: { + valType: 'angle', dflt: 0, - editType: 'arraydraw', - description: 'Sets label angle.' + editType: 'calc+arraydraw', + description: [ + 'Sets the angle at which the `text` is drawn', + 'with respect to the horizontal.' + ].join(' ') }, xanchor: annAttrs.xanchor, yanchor: annAttrs.yanchor, diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index fb735f93f3b..4acf334b7d0 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -43,6 +43,7 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { coerce('label.text'); coerce('label.xanchor'); coerce('label.yanchor'); + coerce('label.textangle'); var xSizeMode = coerce('xsizemode'); var ySizeMode = coerce('ysizemode'); diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 41bc9f48f5f..1729b3c5ba7 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -152,8 +152,6 @@ function drawOne(gd, index) { if(options.label) { text = options.label.text; } - console.log('text!'); - console.log(text); var labelGroup = shapeGroup.append('g') .classed('shape-label', true); @@ -161,8 +159,8 @@ function drawOne(gd, index) { var labelText = labelGroup.append('text') .classed('shape-label-text', true) .text(text); - - // setup conversion functions + + // Setup conversion functions var xa = Axes.getFromId(gd, options.xref); var xRefType = Axes.getRefType(options.xref); var ya = Axes.getFromId(gd, options.yref); @@ -170,6 +168,10 @@ function drawOne(gd, index) { var x2p = helpers.getDataToPixel(gd, xa, false, xRefType); var y2p = helpers.getDataToPixel(gd, ya, true, yRefType); + var textx = x2p(options.x0); + var texty = y2p(options.y0); + var textangle = options.label.textangle; + function textLayout(s) { if(options.x0 && options.y0) { s.call(Drawing.font) @@ -179,8 +181,9 @@ function drawOne(gd, index) { center: 'middle', right: 'end' }[options.label.xanchor], - 'x': x2p(options.x0), - 'y': y2p(options.y0), + 'y': texty, + 'x': textx, + 'transform': 'rotate(' + textangle + ',' + textx + ',' + texty + ')' }); } svgTextUtils.convertToTspans(s, gd); diff --git a/test/image/mocks/x-text_on_shapes.json b/test/image/mocks/x-text_on_shapes.json index 33c9b0b1428..ac99669ec5d 100644 --- a/test/image/mocks/x-text_on_shapes.json +++ b/test/image/mocks/x-text_on_shapes.json @@ -12,10 +12,10 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"label":{"text":"anchored right", "xanchor":"right"}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, + {"label":{"text":"anchored right, angle 45", "xanchor":"right", "textangle":45}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, {"label":{"text":"anchored right", "xanchor":"right"}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, - {"label":{"text":"anchored center", "xanchor":"center"}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#f00","line":{"width":3,"color":"#008","dash":"dashdot"}}, + {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#f00","line":{"width":3,"color":"#008","dash":"dashdot"}}, {"label":{"text":"anchored left"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#009","dash":"dot","width":2}}, {"label":{"text":"anchored center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} ] From 9972dc91868d588d612153985516d6df602f9f3d Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 10 Jan 2023 16:03:46 -0500 Subject: [PATCH 10/82] handle auto angle for lines, put label drawing code into func --- src/components/shapes/defaults.js | 12 +-- src/components/shapes/draw.js | 102 +++++++++++++++---------- test/image/mocks/x-text_on_shapes.json | 2 +- 3 files changed, 68 insertions(+), 48 deletions(-) diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index 4acf334b7d0..19df4527dea 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -40,11 +40,6 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { coerce('line.dash'); } - coerce('label.text'); - coerce('label.xanchor'); - coerce('label.yanchor'); - coerce('label.textangle'); - var xSizeMode = coerce('xsizemode'); var ySizeMode = coerce('ysizemode'); @@ -121,4 +116,11 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { if(noPath) { Lib.noneOrAll(shapeIn, shapeOut, ['x0', 'x1', 'y0', 'y1']); } + + // Label options + coerce('label.text'); + coerce('label.xanchor'); + coerce('label.yanchor'); + coerce('label.textangle', shapeType === 'line' ? 'auto' : 0); + } diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 1729b3c5ba7..6c3df32b602 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -148,50 +148,10 @@ function drawOne(gd, index) { setClipPath(path, gd, options); - var text = null; + // Draw label, if present if(options.label) { - text = options.label.text; + drawLabel(gd, options, shapeGroup); } - - var labelGroup = shapeGroup.append('g') - .classed('shape-label', true); - - var labelText = labelGroup.append('text') - .classed('shape-label-text', true) - .text(text); - - // Setup conversion functions - var xa = Axes.getFromId(gd, options.xref); - var xRefType = Axes.getRefType(options.xref); - var ya = Axes.getFromId(gd, options.yref); - var yRefType = Axes.getRefType(options.yref); - var x2p = helpers.getDataToPixel(gd, xa, false, xRefType); - var y2p = helpers.getDataToPixel(gd, ya, true, yRefType); - - var textx = x2p(options.x0); - var texty = y2p(options.y0); - var textangle = options.label.textangle; - - function textLayout(s) { - if(options.x0 && options.y0) { - s.call(Drawing.font) - .attr({ - 'text-anchor': { - left: 'start', - center: 'middle', - right: 'end' - }[options.label.xanchor], - 'y': texty, - 'x': textx, - 'transform': 'rotate(' + textangle + ',' + textx + ',' + texty + ')' - }); - } - svgTextUtils.convertToTspans(s, gd); - return s; - } - - labelText.call(textLayout); - var editHelpers; if(isActiveShape || gd._context.edits.shapePosition) editHelpers = arrayEditor(gd.layout, 'shapes', options); @@ -633,6 +593,64 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe } } +function drawLabel(gd, options, shapeGroup) { + + var text = options.label.text; + + var labelGroup = shapeGroup.append('g') + .classed('shape-label', true); + var labelText = labelGroup.append('text') + .classed('shape-label-text', true) + .text(text); + + // Setup conversion functions + var xa = Axes.getFromId(gd, options.xref); + var xRefType = Axes.getRefType(options.xref); + var ya = Axes.getFromId(gd, options.yref); + var yRefType = Axes.getRefType(options.yref); + var x2p = helpers.getDataToPixel(gd, xa, false, xRefType); + var y2p = helpers.getDataToPixel(gd, ya, true, yRefType); + + var shapex0 = x2p(options.x0); + var shapex1 = x2p(options.x1); + var shapey0 = y2p(options.y0); + var shapey1 = y2p(options.y1); + + // TODO: Calculate correct (x,y) based on 'position' param + var textx = shapex0; + var texty = shapey0; + + var textangle = options.label.textangle; + + // Handle 'auto' angle for lines + if(textangle === 'auto') { + textangle = -180 / Math.PI * Math.atan2( + Math.abs(shapey1 - shapey0), + Math.abs(shapex1 - shapex0) + ); + } + + function textLayout(s) { + if(options.x0 && options.y0) { + s.call(Drawing.font) + .attr({ + 'text-anchor': { + left: 'start', + center: 'middle', + right: 'end' + }[options.label.xanchor], + 'y': texty, + 'x': textx, + 'transform': 'rotate(' + textangle + ',' + textx + ',' + texty + ')' + }); + } + svgTextUtils.convertToTspans(s, gd); + return s; + } + + labelText.call(textLayout); +} + function movePath(pathIn, moveX, moveY) { return pathIn.replace(constants.segmentRE, function(segment) { var paramNumber = 0; diff --git a/test/image/mocks/x-text_on_shapes.json b/test/image/mocks/x-text_on_shapes.json index ac99669ec5d..bce5d895082 100644 --- a/test/image/mocks/x-text_on_shapes.json +++ b/test/image/mocks/x-text_on_shapes.json @@ -12,7 +12,7 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"label":{"text":"anchored right, angle 45", "xanchor":"right", "textangle":45}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, + {"label":{"text":"anchored right,
angle 45", "xanchor":"right", "textangle":45}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, {"label":{"text":"anchored right", "xanchor":"right"}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#f00","line":{"width":3,"color":"#008","dash":"dashdot"}}, From 6d5709aa6d4768d60f7367ddb584d9f07ccd5ccf Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Wed, 11 Jan 2023 15:58:17 -0500 Subject: [PATCH 11/82] nicer colors on image test --- test/image/mocks/x-text_on_shapes.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/image/mocks/x-text_on_shapes.json b/test/image/mocks/x-text_on_shapes.json index bce5d895082..70c89e9f263 100644 --- a/test/image/mocks/x-text_on_shapes.json +++ b/test/image/mocks/x-text_on_shapes.json @@ -15,8 +15,8 @@ {"label":{"text":"anchored right,
angle 45", "xanchor":"right", "textangle":45}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, {"label":{"text":"anchored right", "xanchor":"right"}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, - {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#f00","line":{"width":3,"color":"#008","dash":"dashdot"}}, - {"label":{"text":"anchored left"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#009","dash":"dot","width":2}}, + {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}}, + {"label":{"text":"anchored left"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}}, {"label":{"text":"anchored center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} ] } From 072edf68240f0422537785a7b306555e3022fc81 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Wed, 11 Jan 2023 15:59:09 -0500 Subject: [PATCH 12/82] fix weird behavior on pan --- src/components/shapes/draw.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 6c3df32b602..e6df696014a 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -150,7 +150,10 @@ function drawOne(gd, index) { // Draw label, if present if(options.label) { - drawLabel(gd, options, shapeGroup); + var attrs = { + 'data-index': index, + }; + drawLabel(gd, options, attrs, shapeGroup); } var editHelpers; @@ -593,11 +596,11 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe } } -function drawLabel(gd, options, shapeGroup) { - +function drawLabel(gd, options, attrs, shapeGroup) { var text = options.label.text; var labelGroup = shapeGroup.append('g') + .attr(attrs) .classed('shape-label', true); var labelText = labelGroup.append('text') .classed('shape-label-text', true) From 8bee9798b1d089e833df04cb36bf639d33556768 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Wed, 11 Jan 2023 16:09:36 -0500 Subject: [PATCH 13/82] disable mathjax rendering for shape text --- src/components/shapes/draw.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index e6df696014a..693738dfe54 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -150,10 +150,10 @@ function drawOne(gd, index) { // Draw label, if present if(options.label) { - var attrs = { + var labelGroupAttrs = { 'data-index': index, }; - drawLabel(gd, options, attrs, shapeGroup); + drawLabel(gd, options, labelGroupAttrs, shapeGroup); } var editHelpers; @@ -596,13 +596,18 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe } } -function drawLabel(gd, options, attrs, shapeGroup) { +function drawLabel(gd, options, labelGroupAttrs, shapeGroup) { var text = options.label.text; + var labelTextAttrs = { + 'data-notex': 1 + }; + var labelGroup = shapeGroup.append('g') - .attr(attrs) + .attr(labelGroupAttrs) .classed('shape-label', true); var labelText = labelGroup.append('text') + .attr(labelTextAttrs) .classed('shape-label-text', true) .text(text); From 852856157737ca09bdcb76bfade67385b7218004 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Wed, 11 Jan 2023 16:46:05 -0500 Subject: [PATCH 14/82] clip shape text outside plot area --- src/components/shapes/draw.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 693738dfe54..e8c6304b6b5 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -146,7 +146,7 @@ function drawOne(gd, index) { .call(Color.fill, fillColor) .call(Drawing.dashLine, lineDash, lineWidth); - setClipPath(path, gd, options); + setClipPath(shapeGroup, gd, options); // Draw label, if present if(options.label) { From b4a45769d1b80840496d6f2550602011b55813c2 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 23 Jan 2023 11:45:01 -0500 Subject: [PATCH 15/82] fix textangle bug for lines -- angle should always be correct now --- src/components/shapes/draw.js | 16 ++++++++++++---- test/image/mocks/x-text_on_shapes.json | 12 ++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index e8c6304b6b5..91278663b1b 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -632,10 +632,7 @@ function drawLabel(gd, options, labelGroupAttrs, shapeGroup) { // Handle 'auto' angle for lines if(textangle === 'auto') { - textangle = -180 / Math.PI * Math.atan2( - Math.abs(shapey1 - shapey0), - Math.abs(shapex1 - shapex0) - ); + textangle = calcTextAngle(shapex0, shapey0, shapex1, shapey1); } function textLayout(s) { @@ -659,6 +656,17 @@ function drawLabel(gd, options, labelGroupAttrs, shapeGroup) { labelText.call(textLayout); } +function calcTextAngle(shapex0, shapey0, shapex1, shapey1) { + var dy, dx; + dx = Math.abs(shapex1 - shapex0); + if(shapex1 >= shapex0) { + dy = shapey0 - shapey1; + } else { + dy = shapey1 - shapey0; + } + return -180 / Math.PI * Math.atan2(dy, dx); +} + function movePath(pathIn, moveX, moveY) { return pathIn.replace(constants.segmentRE, function(segment) { var paramNumber = 0; diff --git a/test/image/mocks/x-text_on_shapes.json b/test/image/mocks/x-text_on_shapes.json index 70c89e9f263..d4281194fd3 100644 --- a/test/image/mocks/x-text_on_shapes.json +++ b/test/image/mocks/x-text_on_shapes.json @@ -12,12 +12,12 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"label":{"text":"anchored right,
angle 45", "xanchor":"right", "textangle":45}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, - {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, - {"label":{"text":"anchored right", "xanchor":"right"}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, - {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}}, - {"label":{"text":"anchored left"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}}, - {"label":{"text":"anchored center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} + {"label":{"text":"anchored right,
angle 45", "xanchor":"right", "textangle":45}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6, "editable": true}, + {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4, "editable": true}, + {"label":{"text":"anchored right", "xanchor":"right"}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9, "editable": true}, + {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}, "editable": true}, + {"label":{"text":"anchored left"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}, "editable": true}, + {"label":{"text":"anchored center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc", "editable": true} ] } } From 97ee8c413d8c615bbaaaa74af434353e709dd164 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 23 Jan 2023 17:17:48 -0500 Subject: [PATCH 16/82] correctly handle position prop in most cases --- src/components/shapes/attributes.js | 6 ++- src/components/shapes/defaults.js | 3 +- src/components/shapes/draw.js | 66 ++++++++++++++++++++++++-- test/image/mocks/x-text_on_shapes.json | 7 ++- 4 files changed, 74 insertions(+), 8 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 8b43b863c6f..fc0d8790855 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -242,9 +242,11 @@ module.exports = templatedArray('shape', { values: [ 'top left', 'top center', 'top right', 'middle left', 'middle center', 'middle right', - 'bottom left', 'bottom center', 'bottom right' + 'bottom left', 'bottom center', 'bottom right', + 'top start', 'top end', + 'middle start', 'middle end', + 'bottom start', 'bottom end', ], - dflt: 'top left', editType: 'arraydraw', description: 'Sets the position of the label relative to she shape.' }, diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index 19df4527dea..f681d064ff9 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -122,5 +122,6 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { coerce('label.xanchor'); coerce('label.yanchor'); coerce('label.textangle', shapeType === 'line' ? 'auto' : 0); - + coerce('label.position', ''); + coerce('label.padding'); } diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 91278663b1b..a4cc0f5f85a 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -624,9 +624,10 @@ function drawLabel(gd, options, labelGroupAttrs, shapeGroup) { var shapey0 = y2p(options.y0); var shapey1 = y2p(options.y1); - // TODO: Calculate correct (x,y) based on 'position' param - var textx = shapex0; - var texty = shapey0; + // Calculate correct (x,y) for text + var textPos = calcTextPosition(shapex0, shapey0, shapex1, shapey1, options); + var textx = textPos.textx; + var texty = textPos.texty; var textangle = options.label.textangle; @@ -667,6 +668,65 @@ function calcTextAngle(shapex0, shapey0, shapex1, shapey1) { return -180 / Math.PI * Math.atan2(dy, dx); } +function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions) { + var textPosition = shapeOptions.label.position; + var textPadding = shapeOptions.label.padding; + var shapeType = shapeOptions.type; + var textAngle = shapeOptions.label.textangle; + + var textx, texty; + + // Text position functions differently for lines vs. other shapes + if(shapeType === 'line') { + // Handle special case for padding when angle is 'auto' for lines + // Padding should be treated as an orthogonal offset in this case + // Otherwise, padding is just a simple x and y offset + var paddingX, paddingY; + if(textAngle === 'auto') { + var textAngleRad = Math.PI / 180 * calcTextAngle(shapex0, shapey0, shapex1, shapey1); + paddingX = textPadding * Math.sin(textAngleRad); + paddingY = -textPadding * Math.cos(textAngleRad); + } else { + paddingX = textPadding; + paddingY = textPadding; + } + + // Handle directional offset for top vs. bottom vs. center of line (default is 'top') + var paddingMultiplier = textPosition.indexOf('middle') !== -1 ? 0 : textPosition.indexOf('bottom') !== -1 ? -1 : 1; + + if(textPosition.indexOf('start') !== -1) { + textx = shapex0 + paddingX * paddingMultiplier; + texty = shapey0 + paddingY * paddingMultiplier; + } else if(textPosition.indexOf('end') !== -1) { + textx = shapex1 + paddingX * paddingMultiplier; + texty = shapey1 + paddingY * paddingMultiplier; + } else { // Default: center + textx = (shapex0 + shapex1) / 2 + paddingX * paddingMultiplier; + texty = (shapey0 + shapey1) / 2 + paddingY * paddingMultiplier; + } + } else { // Text position for shapes that are not lines + // calc horizontal position + if(textPosition.indexOf('top') !== -1) { + textx = Math.max(shapex0, shapex1) + textPadding; + } else if(textPosition.indexOf('bottom') !== -1) { + textx = Math.min(shapex0, shapex1) - textPadding; + } else { // Default: center + textx = (shapex0 + shapex1) / 2; + } + + // calc vertical position + if(textPosition.indexOf('top') !== -1) { + texty = Math.min(shapey0, shapey1) - textPadding; + } else if(textPosition.indexOf('bottom') !== -1) { + texty = Math.max(shapey0, shapey1) + textPadding; + } else { // Default: middle + texty = (shapey0 + shapey1) / 2; + } + } + + return { textx: textx, texty: texty }; +} + function movePath(pathIn, moveX, moveY) { return pathIn.replace(constants.segmentRE, function(segment) { var paramNumber = 0; diff --git a/test/image/mocks/x-text_on_shapes.json b/test/image/mocks/x-text_on_shapes.json index d4281194fd3..cd7bec5548a 100644 --- a/test/image/mocks/x-text_on_shapes.json +++ b/test/image/mocks/x-text_on_shapes.json @@ -12,12 +12,15 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"label":{"text":"anchored right,
angle 45", "xanchor":"right", "textangle":45}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6, "editable": true}, + {"label":{"text":"anchored right,
angle 45", "xanchor":"right", "textangle":45, "position": "top right", "padding": 20}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6, "editable": true}, {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4, "editable": true}, - {"label":{"text":"anchored right", "xanchor":"right"}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9, "editable": true}, + {"label":{"text":"anchored right
two lines", "xanchor":"right", "padding": 10, "position": "top center"}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9, "editable": true}, {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}, "editable": true}, {"label":{"text":"anchored left"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}, "editable": true}, {"label":{"text":"anchored center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc", "editable": true} ] + }, + "config": { + "editable": false } } From 674abd8558ea77ea52a8440d3db71e79765eb441 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 23 Jan 2023 17:32:41 -0500 Subject: [PATCH 17/82] revert shapes demo to original --- test/image/mocks/shapes.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/test/image/mocks/shapes.json b/test/image/mocks/shapes.json index 8dd31238501..f98fcc6b843 100644 --- a/test/image/mocks/shapes.json +++ b/test/image/mocks/shapes.json @@ -21,19 +21,19 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"label":{"text":"hello world 00"}, "layer":"below","xref":"paper","yref":"paper","x0":0,"x1":0.1,"y0":0,"y1":0.1}, - {"label":{"text":"hello world 01"}, "xref":"paper","yref":"paper","path":"M0,0.2V0.3H0.05L0,0.4Q0.1,0.4 0.1,0.3T0.15,0.3C0.1,0.4 0.2,0.4 0.2,0.3S0.15,0.3 0.15,0.2Z","fillcolor":"#4c0"}, - {"label":{"text":"hello world 02"}, "xref":"paper","yref":"paper","type":"circle","x0":0.23,"x1":0.3,"y0":0.2,"y1":0.4}, - {"label":{"text":"hello world 03"}, "xref":"paper","yref":"paper","type":"line","x0":0.2,"x1":0.3,"y0":0,"y1":0.1}, - {"label":{"text":"hello world 04"}, "layer":"below","x0":0.1,"x1":0.4,"y0":1.5,"y1":20,"opacity":0.5,"fillcolor":"#f00","line":{"width":8,"color":"#008","dash":"dashdot"}}, - {"label":{"text":"hello world 05"}, "path":"M0.5,3C0.5,9 0.9,9 0.9,3C0.9,1 0.5,1 0.5,3ZM0.6,4C0.6,5 0.66,5 0.66,4ZM0.74,4C0.74,5 0.8,5 0.8,4ZM0.6,3C0.63,2 0.77,2 0.8,3Z","fillcolor":"#fd2","line":{"width":1,"color":"black"}}, - {"label":{"text":"hello world 06"}, "layer":"below","xref":"x2","yref":"y2","type":"circle","x0":"2000-01-01 02","x1":"2000-01-01 08:30:33.456","y0":0.1,"y1":0.9,"fillcolor":"rgba(0,0,0,0.5)","line":{"color":"rgba(0,255,0,0.5)", "width":5}}, - {"label":{"text":"hello world 07"}, "xref":"x2","yref":"y2","path":"M2000-01-01_11:20:45.6,0.2Q2000-01-01_10:00,0.85 2000-01-01_21,0.8Q2000-01-01_22:20,0.15 2000-01-01_11:20:45.6,0.2Z","fillcolor":"rgb(151,73,58)"}, - {"label":{"text":"hello world 08"}, "xref":"x2","yref":"y2","type":"line","x0":"2000-01-01 11:00","x1":"2000-01-01 09:00","y0":"b","y1":"a","line":{"color":"#006","width":3}}, - {"label":{"text":"hello world 09"}, "yref":"paper","type":"line","x0":0.1,"x1":0.4,"y0":0,"y1":0.4,"line":{"color":"#009","dash":"dot","width":1}}, - {"label":{"text":"hello world 10"}, "yref":"paper","path":"M0.5,0H1.1L0.8,0.4Z","line":{"width":0},"fillcolor":"#ccd3ff"}, - {"label":{"text":"hello world 11"}, "xref":"paper","x0":0.1,"x1":0.2,"y0":-1,"y1":3,"fillcolor":"#ccc"}, - {"label":{"text":"hello world 12"}, "layer":"above","xref":"paper","path":"M0.05,4C0.4,12 -0.1,12 0.25,4Z","fillcolor":"#a66"} + {"layer":"below","xref":"paper","yref":"paper","x0":0,"x1":0.1,"y0":0,"y1":0.1}, + {"xref":"paper","yref":"paper","path":"M0,0.2V0.3H0.05L0,0.4Q0.1,0.4 0.1,0.3T0.15,0.3C0.1,0.4 0.2,0.4 0.2,0.3S0.15,0.3 0.15,0.2Z","fillcolor":"#4c0"}, + {"xref":"paper","yref":"paper","type":"circle","x0":0.23,"x1":0.3,"y0":0.2,"y1":0.4}, + {"xref":"paper","yref":"paper","type":"line","x0":0.2,"x1":0.3,"y0":0,"y1":0.1}, + {"layer":"below","x0":0.1,"x1":0.4,"y0":1.5,"y1":20,"opacity":0.5,"fillcolor":"#f00","line":{"width":8,"color":"#008","dash":"dashdot"}}, + {"path":"M0.5,3C0.5,9 0.9,9 0.9,3C0.9,1 0.5,1 0.5,3ZM0.6,4C0.6,5 0.66,5 0.66,4ZM0.74,4C0.74,5 0.8,5 0.8,4ZM0.6,3C0.63,2 0.77,2 0.8,3Z","fillcolor":"#fd2","line":{"width":1,"color":"black"}}, + {"layer":"below","xref":"x2","yref":"y2","type":"circle","x0":"2000-01-01 02","x1":"2000-01-01 08:30:33.456","y0":0.1,"y1":0.9,"fillcolor":"rgba(0,0,0,0.5)","line":{"color":"rgba(0,255,0,0.5)", "width":5}}, + {"xref":"x2","yref":"y2","path":"M2000-01-01_11:20:45.6,0.2Q2000-01-01_10:00,0.85 2000-01-01_21,0.8Q2000-01-01_22:20,0.15 2000-01-01_11:20:45.6,0.2Z","fillcolor":"rgb(151,73,58)"}, + {"xref":"x2","yref":"y2","type":"line","x0":"2000-01-01 11:00","x1":"2000-01-01 09:00","y0":"b","y1":"a","line":{"color":"#006","width":3}}, + {"yref":"paper","type":"line","x0":0.1,"x1":0.4,"y0":0,"y1":0.4,"line":{"color":"#009","dash":"dot","width":1}}, + {"yref":"paper","path":"M0.5,0H1.1L0.8,0.4Z","line":{"width":0},"fillcolor":"#ccd3ff"}, + {"xref":"paper","x0":0.1,"x1":0.2,"y0":-1,"y1":3,"fillcolor":"#ccc"}, + {"layer":"above","xref":"paper","path":"M0.05,4C0.4,12 -0.1,12 0.25,4Z","fillcolor":"#a66"} ] } } From 3743de4059eeaeb8cc1bb3e58f037c4315afa895 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 23 Jan 2023 17:44:43 -0500 Subject: [PATCH 18/82] handle label font --- src/components/shapes/defaults.js | 1 + src/components/shapes/draw.js | 3 ++- test/image/mocks/x-text_on_shapes.json | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index f681d064ff9..5fcc108d6e0 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -124,4 +124,5 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { coerce('label.textangle', shapeType === 'line' ? 'auto' : 0); coerce('label.position', ''); coerce('label.padding'); + Lib.coerceFont(coerce, 'label.font', fullLayout.font); } diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index a4cc0f5f85a..b8ddf8d91f6 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -598,6 +598,7 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe function drawLabel(gd, options, labelGroupAttrs, shapeGroup) { var text = options.label.text; + var font = options.label.font; var labelTextAttrs = { 'data-notex': 1 @@ -638,7 +639,7 @@ function drawLabel(gd, options, labelGroupAttrs, shapeGroup) { function textLayout(s) { if(options.x0 && options.y0) { - s.call(Drawing.font) + s.call(Drawing.font, font) .attr({ 'text-anchor': { left: 'start', diff --git a/test/image/mocks/x-text_on_shapes.json b/test/image/mocks/x-text_on_shapes.json index cd7bec5548a..0b2eb4eaf2a 100644 --- a/test/image/mocks/x-text_on_shapes.json +++ b/test/image/mocks/x-text_on_shapes.json @@ -14,7 +14,7 @@ "shapes":[ {"label":{"text":"anchored right,
angle 45", "xanchor":"right", "textangle":45, "position": "top right", "padding": 20}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6, "editable": true}, {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4, "editable": true}, - {"label":{"text":"anchored right
two lines", "xanchor":"right", "padding": 10, "position": "top center"}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9, "editable": true}, + {"label":{"text":"anchored right
two lines", "xanchor":"right", "padding": 10, "position": "top center", "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9, "editable": true}, {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}, "editable": true}, {"label":{"text":"anchored left"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}, "editable": true}, {"label":{"text":"anchored center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc", "editable": true} From c3cc5ed60b19b083672fbd3f176c18dc71560c9a Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 26 Jan 2023 12:28:15 -0500 Subject: [PATCH 19/82] redraw text during shape move/resize --- src/components/shapes/draw.js | 23 ++++++++++++++++------- test/image/mocks/x-text_on_shapes.json | 14 +++++++------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index b8ddf8d91f6..8e000c60c64 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -1,5 +1,7 @@ 'use strict'; +var d3 = require('@plotly/d3'); + var Registry = require('../../registry'); var Lib = require('../../lib'); var Axes = require('../../plots/cartesian/axes'); @@ -149,12 +151,7 @@ function drawOne(gd, index) { setClipPath(shapeGroup, gd, options); // Draw label, if present - if(options.label) { - var labelGroupAttrs = { - 'data-index': index, - }; - drawLabel(gd, options, labelGroupAttrs, shapeGroup); - } + drawLabel(gd, index, options, shapeGroup); var editHelpers; if(isActiveShape || gd._context.edits.shapePosition) editHelpers = arrayEditor(gd.layout, 'shapes', options); @@ -219,6 +216,8 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe var n0, s0, w0, e0, optN, optS, optW, optE; var pathIn; + var shapeGroup = d3.select(shapePath.node().parentNode); + // setup conversion functions var xa = Axes.getFromId(gd, shapeOptions.xref); var xRefType = Axes.getRefType(shapeOptions.xref); @@ -440,6 +439,7 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe shapePath.attr('d', getPathString(gd, shapeOptions)); renderVisualCues(shapeLayer, shapeOptions); + drawLabel(gd, index, shapeOptions, shapeGroup); } function resizeShape(dx, dy) { @@ -512,6 +512,7 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe shapePath.attr('d', getPathString(gd, shapeOptions)); renderVisualCues(shapeLayer, shapeOptions); + drawLabel(gd, index, shapeOptions, shapeGroup); } function renderVisualCues(shapeLayer, shapeOptions) { @@ -596,7 +597,15 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe } } -function drawLabel(gd, options, labelGroupAttrs, shapeGroup) { +function drawLabel(gd, index, options, shapeGroup) { + if(!options.label) return; + + // Remove existing label + shapeGroup.selectAll('.shape-label').remove(); + + var labelGroupAttrs = { + 'data-index': index, + }; var text = options.label.text; var font = options.label.font; diff --git a/test/image/mocks/x-text_on_shapes.json b/test/image/mocks/x-text_on_shapes.json index 0b2eb4eaf2a..5e45af099b0 100644 --- a/test/image/mocks/x-text_on_shapes.json +++ b/test/image/mocks/x-text_on_shapes.json @@ -12,15 +12,15 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"label":{"text":"anchored right,
angle 45", "xanchor":"right", "textangle":45, "position": "top right", "padding": 20}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6, "editable": true}, - {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4, "editable": true}, - {"label":{"text":"anchored right
two lines", "xanchor":"right", "padding": 10, "position": "top center", "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9, "editable": true}, - {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}, "editable": true}, - {"label":{"text":"anchored left"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}, "editable": true}, - {"label":{"text":"anchored center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc", "editable": true} + {"label":{"text":"anchored right,
angle 45", "xanchor":"right", "textangle":45, "position": "top right", "padding": 20}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, + {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, + {"label":{"text":"anchored right
two lines", "xanchor":"right", "padding": 10, "position": "top center", "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, + {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}}, + {"label":{"text":"anchored left"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}}, + {"label":{"text":"anchored center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} ] }, "config": { - "editable": false + "editable": true } } From 45a05646fe8eca2e75d636da911c4351a61e0430 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Fri, 27 Jan 2023 10:56:52 -0500 Subject: [PATCH 20/82] handle yanchor for text --- src/components/shapes/draw.js | 108 +++++++++++++++++++++++----------- 1 file changed, 73 insertions(+), 35 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 8e000c60c64..8c3b24c9d28 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -598,7 +598,7 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe } function drawLabel(gd, index, options, shapeGroup) { - if(!options.label) return; + if(!(options.label && options.x0 && options.x1)) return; // Remove existing label shapeGroup.selectAll('.shape-label').remove(); @@ -634,32 +634,40 @@ function drawLabel(gd, index, options, shapeGroup) { var shapey0 = y2p(options.y0); var shapey1 = y2p(options.y1); - // Calculate correct (x,y) for text - var textPos = calcTextPosition(shapex0, shapey0, shapex1, shapey1, options); - var textx = textPos.textx; - var texty = textPos.texty; - - var textangle = options.label.textangle; - // Handle 'auto' angle for lines + var textangle = options.label.textangle; if(textangle === 'auto') { textangle = calcTextAngle(shapex0, shapey0, shapex1, shapey1); } + // Do an initial render just so we can get the bounding box height -- + // this is not the final render + labelText.call(function(s) { + s.call(Drawing.font, font).attr({}); + svgTextUtils.convertToTspans(s, gd); + return s; + }); + var textBB = Drawing.bBox(labelText.node()); + + // Calculate correct (x,y) for text + // We also determine true xanchor since xanchor depends on position when set to 'auto' + var textPos = calcTextPosition(shapex0, shapey0, shapex1, shapey1, options, textangle, textBB); + var textx = textPos.textx; + var texty = textPos.texty; + var xanchor = textPos.xanchor; + function textLayout(s) { - if(options.x0 && options.y0) { - s.call(Drawing.font, font) - .attr({ - 'text-anchor': { - left: 'start', - center: 'middle', - right: 'end' - }[options.label.xanchor], - 'y': texty, - 'x': textx, - 'transform': 'rotate(' + textangle + ',' + textx + ',' + texty + ')' - }); - } + s.call(Drawing.font, font) + .attr({ + 'text-anchor': { + left: 'start', + center: 'middle', + right: 'end' + }[xanchor], + 'y': texty, + 'x': textx, + 'transform': 'rotate(' + textangle + ',' + textx + ',' + texty + ')' + }); svgTextUtils.convertToTspans(s, gd); return s; } @@ -678,22 +686,22 @@ function calcTextAngle(shapex0, shapey0, shapex1, shapey1) { return -180 / Math.PI * Math.atan2(dy, dx); } -function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions) { +function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actualTextAngle, textBB) { var textPosition = shapeOptions.label.position; var textPadding = shapeOptions.label.padding; var shapeType = shapeOptions.type; - var textAngle = shapeOptions.label.textangle; + var textAngleRad = Math.PI / 180 * actualTextAngle; + var xanchor = shapeOptions.label.xanchor; + var yanchor = shapeOptions.label.yanchor; - var textx, texty; + var textx, texty, paddingX, paddingY; // Text position functions differently for lines vs. other shapes if(shapeType === 'line') { // Handle special case for padding when angle is 'auto' for lines // Padding should be treated as an orthogonal offset in this case // Otherwise, padding is just a simple x and y offset - var paddingX, paddingY; - if(textAngle === 'auto') { - var textAngleRad = Math.PI / 180 * calcTextAngle(shapex0, shapey0, shapex1, shapey1); + if(shapeOptions.label.textangle === 'auto') { paddingX = textPadding * Math.sin(textAngleRad); paddingY = -textPadding * Math.cos(textAngleRad); } else { @@ -702,39 +710,69 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions) { } // Handle directional offset for top vs. bottom vs. center of line (default is 'top') - var paddingMultiplier = textPosition.indexOf('middle') !== -1 ? 0 : textPosition.indexOf('bottom') !== -1 ? -1 : 1; + var paddingMultiplier; + if(textPosition.indexOf('middle') !== -1) { + paddingMultiplier = 0; + if(yanchor === 'auto') yanchor = 'middle'; + } else if(textPosition.indexOf('bottom') !== -1) { + paddingMultiplier = -1; + if(yanchor === 'auto') yanchor = 'top'; + } else { + paddingMultiplier = 1; + if(yanchor === 'auto') yanchor = 'bottom'; + } + // var paddingMultiplier = textPosition.indexOf('middle') !== -1 ? 0 : textPosition.indexOf('bottom') !== -1 ? -1 : 1; if(textPosition.indexOf('start') !== -1) { textx = shapex0 + paddingX * paddingMultiplier; texty = shapey0 + paddingY * paddingMultiplier; + if(xanchor === 'auto') xanchor = (shapex1 >= shapex0) ? 'right' : 'left'; } else if(textPosition.indexOf('end') !== -1) { textx = shapex1 + paddingX * paddingMultiplier; texty = shapey1 + paddingY * paddingMultiplier; + if(xanchor === 'auto') xanchor = (shapex1 >= shapex0) ? 'left' : 'right'; } else { // Default: center textx = (shapex0 + shapex1) / 2 + paddingX * paddingMultiplier; texty = (shapey0 + shapey1) / 2 + paddingY * paddingMultiplier; + if(xanchor === 'auto') xanchor = 'center'; } } else { // Text position for shapes that are not lines // calc horizontal position - if(textPosition.indexOf('top') !== -1) { - textx = Math.max(shapex0, shapex1) + textPadding; - } else if(textPosition.indexOf('bottom') !== -1) { - textx = Math.min(shapex0, shapex1) - textPadding; + // Horizontal needs a little extra padding to look balanced + paddingX = textPadding + 3; + if(textPosition.indexOf('right') !== -1) { + textx = Math.max(shapex0, shapex1) + paddingX; + if(xanchor === 'auto') xanchor = 'left'; + } else if(textPosition.indexOf('left') !== -1) { + textx = Math.min(shapex0, shapex1) - paddingX; + if(xanchor === 'auto') xanchor = 'right'; } else { // Default: center textx = (shapex0 + shapex1) / 2; + if(xanchor === 'auto') xanchor = 'center'; } // calc vertical position + paddingY = textPadding if(textPosition.indexOf('top') !== -1) { - texty = Math.min(shapey0, shapey1) - textPadding; + texty = Math.min(shapey0, shapey1) - paddingY; + if(yanchor === 'auto') yanchor = 'bottom'; } else if(textPosition.indexOf('bottom') !== -1) { - texty = Math.max(shapey0, shapey1) + textPadding; + texty = Math.max(shapey0, shapey1) + paddingY; + if(yanchor === 'auto') yanchor = 'top'; } else { // Default: middle texty = (shapey0 + shapey1) / 2; + if(yanchor === 'auto') yanchor = 'middle'; } } - return { textx: textx, texty: texty }; + // Shift vertical (& horizontal) position according to `yanchor` + // This shiftFraction is only a rough approximation, but maybe good enough? + var shiftFraction = {middle: -0.2, bottom: 0.3, top: -0.7}[yanchor]; + var textHeight = textBB.height; + var xshift = textHeight * Math.sin(textAngleRad) * shiftFraction; + var yshift = -textHeight * Math.cos(textAngleRad) * shiftFraction; + + return { textx: textx + xshift, texty: texty + yshift, xanchor: xanchor }; } function movePath(pathIn, moveX, moveY) { From b8085c22d190c4a39e41dfb3d9301ec15f3a2a7b Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Fri, 27 Jan 2023 11:11:39 -0500 Subject: [PATCH 21/82] rename mock --- .../mocks/{x-text_on_shapes.json => zz-text_on_shapes.json} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename test/image/mocks/{x-text_on_shapes.json => zz-text_on_shapes.json} (89%) diff --git a/test/image/mocks/x-text_on_shapes.json b/test/image/mocks/zz-text_on_shapes.json similarity index 89% rename from test/image/mocks/x-text_on_shapes.json rename to test/image/mocks/zz-text_on_shapes.json index 5e45af099b0..bb5edcd883d 100644 --- a/test/image/mocks/x-text_on_shapes.json +++ b/test/image/mocks/zz-text_on_shapes.json @@ -16,7 +16,7 @@ {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, {"label":{"text":"anchored right
two lines", "xanchor":"right", "padding": 10, "position": "top center", "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}}, - {"label":{"text":"anchored left"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}}, + {"label":{"text":"no xanchor, yanchor top", "yanchor": "top"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}}, {"label":{"text":"anchored center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} ] }, From 8c0476e92e65d64b11cbd478786d925ce7b7e549 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Fri, 27 Jan 2023 15:32:04 -0500 Subject: [PATCH 22/82] handle multiline text and support text on arbitrary paths (sort of) --- src/components/shapes/draw.js | 66 ++++++++++++++++--------- test/image/mocks/zz-text_on_shapes.json | 26 ---------- 2 files changed, 42 insertions(+), 50 deletions(-) delete mode 100644 test/image/mocks/zz-text_on_shapes.json diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 8c3b24c9d28..c48e1f7a984 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -598,11 +598,12 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe } function drawLabel(gd, index, options, shapeGroup) { - if(!(options.label && options.x0 && options.x1)) return; - // Remove existing label shapeGroup.selectAll('.shape-label').remove(); + // If no label, return + if(!options.label) return; + var labelGroupAttrs = { 'data-index': index, }; @@ -621,18 +622,30 @@ function drawLabel(gd, index, options, shapeGroup) { .classed('shape-label-text', true) .text(text); - // Setup conversion functions - var xa = Axes.getFromId(gd, options.xref); - var xRefType = Axes.getRefType(options.xref); - var ya = Axes.getFromId(gd, options.yref); - var yRefType = Axes.getRefType(options.yref); - var x2p = helpers.getDataToPixel(gd, xa, false, xRefType); - var y2p = helpers.getDataToPixel(gd, ya, true, yRefType); - - var shapex0 = x2p(options.x0); - var shapex1 = x2p(options.x1); - var shapey0 = y2p(options.y0); - var shapey1 = y2p(options.y1); + // If x0, x1, y0, y1 are defined explicitly, use those values + // Otherwise, use shape bounding box + var shapex0, shapex1, shapey0, shapey1; + if('x0' in options && 'x1' in options && 'y0' in options && 'y1' in options) { + // Setup conversion functions + var xa = Axes.getFromId(gd, options.xref); + var xRefType = Axes.getRefType(options.xref); + var ya = Axes.getFromId(gd, options.yref); + var yRefType = Axes.getRefType(options.yref); + var x2p = helpers.getDataToPixel(gd, xa, false, xRefType); + var y2p = helpers.getDataToPixel(gd, ya, true, yRefType); + + shapex0 = x2p(options.x0); + shapex1 = x2p(options.x1); + shapey0 = y2p(options.y0); + shapey1 = y2p(options.y1); + } else { + // Get shape bounding box + var shapeBBox = shapeGroup.selectAll('path').node().getBoundingClientRect(); + shapex0 = shapeBBox.x; + shapex1 = shapeBBox.right; + shapey0 = shapeBBox.y; + shapey1 = shapeBBox.bottom; + } // Handle 'auto' angle for lines var textangle = options.label.textangle; @@ -640,14 +653,18 @@ function drawLabel(gd, index, options, shapeGroup) { textangle = calcTextAngle(shapex0, shapey0, shapex1, shapey1); } - // Do an initial render just so we can get the bounding box height -- - // this is not the final render - labelText.call(function(s) { + // Do a fake render so we can get the text bounding box height + var _labelText = labelGroup.append('text') + .attr(labelTextAttrs) + .classed('shape-label-text', true) + .text(text); + _labelText.call(function(s) { s.call(Drawing.font, font).attr({}); svgTextUtils.convertToTspans(s, gd); return s; }); - var textBB = Drawing.bBox(labelText.node()); + var textBB = Drawing.bBox(_labelText.node()); + _labelText.remove(); // Calculate correct (x,y) for text // We also determine true xanchor since xanchor depends on position when set to 'auto' @@ -721,7 +738,6 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu paddingMultiplier = 1; if(yanchor === 'auto') yanchor = 'bottom'; } - // var paddingMultiplier = textPosition.indexOf('middle') !== -1 ? 0 : textPosition.indexOf('bottom') !== -1 ? -1 : 1; if(textPosition.indexOf('start') !== -1) { textx = shapex0 + paddingX * paddingMultiplier; @@ -752,7 +768,7 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu } // calc vertical position - paddingY = textPadding + paddingY = textPadding; if(textPosition.indexOf('top') !== -1) { texty = Math.min(shapey0, shapey1) - paddingY; if(yanchor === 'auto') yanchor = 'bottom'; @@ -766,11 +782,13 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu } // Shift vertical (& horizontal) position according to `yanchor` - // This shiftFraction is only a rough approximation, but maybe good enough? - var shiftFraction = {middle: -0.2, bottom: 0.3, top: -0.7}[yanchor]; + var shiftFraction = { middle: 0, bottom: 0.5, top: -0.5 }[yanchor]; + // To adjust for text being anchored at baseline instead of bottom of descenders + // Probably not the right way of handling + var baselineAdjust = shapeOptions.label.font.size / 4; var textHeight = textBB.height; - var xshift = textHeight * Math.sin(textAngleRad) * shiftFraction; - var yshift = -textHeight * Math.cos(textAngleRad) * shiftFraction; + var xshift = (textHeight * shiftFraction - baselineAdjust) * Math.sin(textAngleRad); + var yshift = -(textHeight * shiftFraction - baselineAdjust) * Math.cos(textAngleRad); return { textx: textx + xshift, texty: texty + yshift, xanchor: xanchor }; } diff --git a/test/image/mocks/zz-text_on_shapes.json b/test/image/mocks/zz-text_on_shapes.json deleted file mode 100644 index bb5edcd883d..00000000000 --- a/test/image/mocks/zz-text_on_shapes.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "data":[{ - "x":[0,10], - "y":[0,10], - "mode":"markers" - }], - "layout": { - "xaxis":{"title":{"text":"linear"},"range":[0,10],"domain":[0,10],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, - "yaxis":{"title":{"text":"linear"},"range":[0,10],"domain":[0,10],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, - "height":400, - "width":800, - "margin": {"l":20,"r":20,"pad":0}, - "showlegend":false, - "shapes":[ - {"label":{"text":"anchored right,
angle 45", "xanchor":"right", "textangle":45, "position": "top right", "padding": 20}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, - {"label":{"text":"anchored left"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, - {"label":{"text":"anchored right
two lines", "xanchor":"right", "padding": 10, "position": "top center", "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, - {"label":{"text":"anchored center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}}, - {"label":{"text":"no xanchor, yanchor top", "yanchor": "top"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}}, - {"label":{"text":"anchored center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} - ] - }, - "config": { - "editable": true - } -} From 95dd9b66edb0a620a00178c0314105c40db0c996 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Fri, 27 Jan 2023 16:18:22 -0500 Subject: [PATCH 23/82] fix jasmine tests... maybe --- test/jasmine/tests/shapes_test.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/jasmine/tests/shapes_test.js b/test/jasmine/tests/shapes_test.js index a3be9f49226..7d07d8be711 100644 --- a/test/jasmine/tests/shapes_test.js +++ b/test/jasmine/tests/shapes_test.js @@ -33,17 +33,17 @@ var dyToEnlargeHeight = { n: -10, s: 10, w: 0, e: 0, nw: -10, se: 10, ne: -10, s // Helper functions function getMoveLineDragElement(index) { index = index || 0; - return d3SelectAll('.shapelayer g[data-index="' + index + '"] path').node(); + return d3SelectAll('.shapelayer .shape-group g[data-index="' + index + '"] path').node(); } function getResizeLineOverStartPointElement(index) { index = index || 0; - return d3SelectAll('.shapelayer g[data-index="' + index + '"] circle[data-line-point="start-point"]').node(); + return d3SelectAll('.shapelayer .shape-group g[data-index="' + index + '"] circle[data-line-point="start-point"]').node(); } function getResizeLineOverEndPointElement(index) { index = index || 0; - return d3SelectAll('.shapelayer g[data-index="' + index + '"] circle[data-line-point="end-point"]').node(); + return d3SelectAll('.shapelayer .shape-group g[data-index="' + index + '"] circle[data-line-point="end-point"]').node(); } describe('Test shapes defaults:', function() { @@ -201,15 +201,15 @@ function countSubplots(gd) { } function countShapePathsInLowerLayer() { - return d3SelectAll('.layer-below > .shapelayer > path').size(); + return d3SelectAll('.layer-below > .shapelayer > .shape-group > path').size(); } function countShapePathsInUpperLayer() { - return d3SelectAll('.layer-above > .shapelayer > path').size(); + return d3SelectAll('.layer-above > .shapelayer > .shape-group > path').size(); } function countShapePathsInSubplots() { - return d3SelectAll('.layer-subplot > .shapelayer > path').size(); + return d3SelectAll('.layer-subplot > .shapelayer > .shape-group > path').size(); } describe('Test shapes:', function() { @@ -721,7 +721,7 @@ describe('Test shapes: a plot with shapes and an overlaid axis', function() { }); function getFirstShapeNode() { - return d3SelectAll('.shapelayer path').node(); + return d3SelectAll('.shapelayer .shape-group path').node(); } function assertShapeSize(shapeNode, w, h) { @@ -1479,7 +1479,7 @@ describe('Test shapes', function() { } function getShapeNode(index) { - return d3SelectAll('.shapelayer path').filter(function() { + return d3SelectAll('.shapelayer .shape-group path').filter(function() { return +this.getAttribute('data-index') === index; }).node(); } From 58e39cba3b53b31163e5f685a132929f11c1fea7 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 30 Jan 2023 09:14:21 -0500 Subject: [PATCH 24/82] update plot-schema.json --- test/plot-schema.json | 90 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/test/plot-schema.json b/test/plot-schema.json index 1863b863a2a..b1482ee7116 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -7109,6 +7109,96 @@ "nonzero" ] }, + "label": { + "dflt": null, + "editType": "arraydraw", + "font": { + "color": { + "editType": "arraydraw", + "valType": "color" + }, + "description": "Sets the shape label text font.", + "editType": "calc+arraydraw", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc+arraydraw", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "role": "object", + "size": { + "editType": "calc+arraydraw", + "min": 1, + "valType": "number" + } + }, + "padding": { + "description": "Sets padding between edge of label and xanchor / yanchor.", + "dflt": 0, + "editType": "arraydraw", + "valType": "number" + }, + "position": { + "description": "Sets the position of the label relative to she shape.", + "editType": "arraydraw", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right", + "top start", + "top end", + "middle start", + "middle end", + "bottom start", + "bottom end" + ] + }, + "role": "object", + "text": { + "description": "Sets the text to display with shape.", + "dflt": null, + "editType": "arraydraw", + "valType": "string" + }, + "textangle": { + "description": "Sets the angle at which the `text` is drawn with respect to the horizontal.", + "dflt": 0, + "editType": "calc+arraydraw", + "valType": "angle" + }, + "xanchor": { + "description": "Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side.", + "dflt": "auto", + "editType": "calc+arraydraw", + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ] + }, + "yanchor": { + "description": "Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side.", + "dflt": "auto", + "editType": "calc+arraydraw", + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ] + } + }, "layer": { "description": "Specifies whether shapes are drawn below or above traces.", "dflt": "above", From 488318fa2c0045f5137829ee137d30f82ef295ee Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 30 Jan 2023 09:50:26 -0500 Subject: [PATCH 25/82] add data-index attr to shape group --- src/components/shapes/draw.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index c48e1f7a984..8115c89b4de 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -139,7 +139,8 @@ function drawOne(gd, index) { } var shapeGroup = shapeLayer.append('g') - .classed('shape-group', true); + .classed('shape-group', true) + .attr({ 'data-index': index }); var path = shapeGroup.append('path') .attr(attrs) From c8d20f2ff69a795e62e6ed95d79a132a6440f0a2 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 30 Jan 2023 10:22:18 -0500 Subject: [PATCH 26/82] update jasmine test --- test/jasmine/tests/shapes_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/jasmine/tests/shapes_test.js b/test/jasmine/tests/shapes_test.js index 7d07d8be711..50e11f859e6 100644 --- a/test/jasmine/tests/shapes_test.js +++ b/test/jasmine/tests/shapes_test.js @@ -488,7 +488,7 @@ describe('shapes axis reference changes', function() { afterEach(destroyGraphDiv); function getShape(index) { - var s = d3SelectAll('path[data-index="' + index + '"]'); + var s = d3SelectAll('.shape-group[data-index="' + index + '"]'); expect(s.size()).toBe(1); return s; } From dad6ea53fa9cbb0ec77ed7fc106029602c21d00b Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 30 Jan 2023 10:48:59 -0500 Subject: [PATCH 27/82] add mocks for text on shapes --- test/image/mocks/zz-text_on_shapes_basic.json | 28 ++++++++ .../mocks/zz-text_on_shapes_position.json | 65 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 test/image/mocks/zz-text_on_shapes_basic.json create mode 100644 test/image/mocks/zz-text_on_shapes_position.json diff --git a/test/image/mocks/zz-text_on_shapes_basic.json b/test/image/mocks/zz-text_on_shapes_basic.json new file mode 100644 index 00000000000..33bf8a5a481 --- /dev/null +++ b/test/image/mocks/zz-text_on_shapes_basic.json @@ -0,0 +1,28 @@ +{ + "data":[{ + "x":[0,10], + "y":[0,10], + "mode":"markers" + }], + "layout": { + "xaxis":{"title":{"text":"linear"},"range":[0,10],"domain":[0,10],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, + "yaxis":{"title":{"text":"linear"},"range":[0,10],"domain":[0,10],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, + "height":400, + "width":800, + "margin": {"l":20,"r":20,"pad":0}, + "showlegend":false, + "shapes":[ + {"label":{"text":"top right, xanchor right,
angle 45", "xanchor":"right", "textangle":45, "position": "top right", "padding": 20}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, + {"label":{"text":"top right", "position": "top right"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, + {"label":{"text":"xanchor right, position auto
two lines", "xanchor":"right", "padding": 10, "position": "top center", "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, + {"label":{"text":"position auto, xanchor center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}}, + {"label":{"text":"position auto, yanchor top", "yanchor": "top"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}}, + {"label":{"text":"position auto, xanchor center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"}, + {"label":{"text":"text on path, top center", "position":"top center"}, "xref":"paper","path":"M0.05,4C0.4,12 -0.1,12 0.25,4Z","fillcolor":"#a66"}, + {"label":{"text":"text on path, top center", "position":"top center"}, "xref":"paper","yref":"paper","path":"M0,0.2V0.3H0.05L0,0.4Q0.1,0.4 0.1,0.3T0.15,0.3C0.1,0.4 0.2,0.4 0.2,0.3S0.15,0.3 0.15,0.2Z","fillcolor":"#4c0"} + ] + }, + "config": { + "editable": true + } +} diff --git a/test/image/mocks/zz-text_on_shapes_position.json b/test/image/mocks/zz-text_on_shapes_position.json new file mode 100644 index 00000000000..94ff13f0f4c --- /dev/null +++ b/test/image/mocks/zz-text_on_shapes_position.json @@ -0,0 +1,65 @@ +{ + "data":[{ + "x":[0,10], + "y":[0,10], + "mode":"markers" + }], + "layout": { + "xaxis":{"title":{"text":"linear"},"range":[0,100],"domain":[0,100],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, + "yaxis":{"title":{"text":"linear"},"range":[0,100],"domain":[0,100],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, + "height":800, + "width":800, + "margin": {"l":20,"r":20,"pad":0}, + "showlegend":false, + "shapes":[ + {"label":{"text":"top left", "position": "top left"}, "x0":20,"x1":25,"y0":90,"y1":95,"fillcolor":"#ccc"}, + {"label":{"text":"top center", "position": "top center"}, "x0":48,"x1":53,"y0":90,"y1":95,"fillcolor":"#ccc"}, + {"label":{"text":"top right", "position": "top right"}, "x0":75,"x1":80,"y0":90,"y1":95,"fillcolor":"#ccc"}, + + {"label":{"text":"middle left", "position": "middle left"}, "x0":20,"x1":25,"y0":72,"y1":77,"fillcolor":"#ccc"}, + {"label":{"text":"middle center", "position": "middle center"}, "x0":48,"x1":53,"y0":72,"y1":77,"fillcolor":"#ccc"}, + {"label":{"text":"middle right", "position": "middle right"}, "x0":75,"x1":80,"y0":72,"y1":77,"fillcolor":"#ccc"}, + + {"label":{"text":"bottom left", "position": "bottom left"}, "x0":20,"x1":25,"y0":55,"y1":60,"fillcolor":"#ccc"}, + {"label":{"text":"bottom center", "position": "bottom center"}, "x0":48,"x1":53,"y0":55,"y1":60,"fillcolor":"#ccc"}, + {"label":{"text":"bottom right", "position": "bottom right"}, "x0":75,"x1":80,"y0":55,"y1":60,"fillcolor":"#ccc"}, + + + {"label":{"text":"top start +", "position": "top start"}, "x0":15,"x1":20,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top center +", "position": "top center"}, "x0":43,"x1":48,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top end +", "position": "top end"}, "x0":70,"x1":75,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + + {"label":{"text":"top start -", "position": "top start"}, "x0":30,"x1":35,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top center -", "position": "top center"}, "x0":58,"x1":63,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top end -", "position": "top end"}, "x0":85,"x1":90,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + + {"label":{"text":"top start + R", "position": "top start"}, "x1":15,"x0":20,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top center + R", "position": "top center"}, "x1":43,"x0":48,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top end + R", "position": "top end"}, "x1":70,"x0":75,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + + {"label":{"text":"top start - R", "position": "top start"}, "x1":30,"x0":35,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top center - R", "position": "top center"}, "x1":58,"x0":63,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top end - R", "position": "top end"}, "x1":85,"x0":90,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + + {"label":{"text":"bottom start +", "position": "bottom start"}, "x0":15,"x1":20,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom center +", "position": "bottom center"}, "x0":43,"x1":48,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom end +", "position": "bottom end"}, "x0":70,"x1":75,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + + {"label":{"text":"bottom start -", "position": "bottom start"}, "x0":30,"x1":35,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom center -", "position": "bottom center"}, "x0":58,"x1":63,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom end -", "position": "bottom end"}, "x0":85,"x1":90,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + + {"label":{"text":"bottom start + R", "position": "bottom start"}, "x1":15,"x0":20,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom center + R", "position": "bottom center"}, "x1":43,"x0":48,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom end + R", "position": "bottom end"}, "x1":70,"x0":75,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + + {"label":{"text":"bottom start - R", "position": "bottom start"}, "x1":30,"x0":35,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom center - R", "position": "bottom center"}, "x1":58,"x0":63,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom end - R", "position": "bottom end"}, "x1":85,"x0":90,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"} + + ] + }, + "config": { + "editable": true + } +} From 31348695376a8d8b662c48e0c23e6ce8fab35350 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 30 Jan 2023 11:06:44 -0500 Subject: [PATCH 28/82] fix mocks --- test/image/mocks/zz-text_on_shapes_basic.json | 8 +++----- test/image/mocks/zz-text_on_shapes_position.json | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/test/image/mocks/zz-text_on_shapes_basic.json b/test/image/mocks/zz-text_on_shapes_basic.json index 33bf8a5a481..1854240bfd3 100644 --- a/test/image/mocks/zz-text_on_shapes_basic.json +++ b/test/image/mocks/zz-text_on_shapes_basic.json @@ -5,8 +5,8 @@ "mode":"markers" }], "layout": { - "xaxis":{"title":{"text":"linear"},"range":[0,10],"domain":[0,10],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, - "yaxis":{"title":{"text":"linear"},"range":[0,10],"domain":[0,10],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, + "xaxis":{"title":{"text":"linear"},"range":[0,10],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, + "yaxis":{"title":{"text":"linear"},"range":[0,10],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, "height":400, "width":800, "margin": {"l":20,"r":20,"pad":0}, @@ -17,9 +17,7 @@ {"label":{"text":"xanchor right, position auto
two lines", "xanchor":"right", "padding": 10, "position": "top center", "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, {"label":{"text":"position auto, xanchor center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}}, {"label":{"text":"position auto, yanchor top", "yanchor": "top"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}}, - {"label":{"text":"position auto, xanchor center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"}, - {"label":{"text":"text on path, top center", "position":"top center"}, "xref":"paper","path":"M0.05,4C0.4,12 -0.1,12 0.25,4Z","fillcolor":"#a66"}, - {"label":{"text":"text on path, top center", "position":"top center"}, "xref":"paper","yref":"paper","path":"M0,0.2V0.3H0.05L0,0.4Q0.1,0.4 0.1,0.3T0.15,0.3C0.1,0.4 0.2,0.4 0.2,0.3S0.15,0.3 0.15,0.2Z","fillcolor":"#4c0"} + {"label":{"text":"position auto, xanchor center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} ] }, "config": { diff --git a/test/image/mocks/zz-text_on_shapes_position.json b/test/image/mocks/zz-text_on_shapes_position.json index 94ff13f0f4c..dff7b41d525 100644 --- a/test/image/mocks/zz-text_on_shapes_position.json +++ b/test/image/mocks/zz-text_on_shapes_position.json @@ -5,8 +5,8 @@ "mode":"markers" }], "layout": { - "xaxis":{"title":{"text":"linear"},"range":[0,100],"domain":[0,100],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, - "yaxis":{"title":{"text":"linear"},"range":[0,100],"domain":[0,100],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, + "xaxis":{"title":{"text":"linear"},"range":[0,100],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, + "yaxis":{"title":{"text":"linear"},"range":[0,100],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, "height":800, "width":800, "margin": {"l":20,"r":20,"pad":0}, From f17e218d12108cec795c8ca0d9c06b2edabd5834 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 30 Jan 2023 11:22:51 -0500 Subject: [PATCH 29/82] add image baselines --- .../image/baselines/zz-text_on_shapes_basic.png | Bin 0 -> 35612 bytes .../baselines/zz-text_on_shapes_position.png | Bin 0 -> 61993 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/zz-text_on_shapes_basic.png create mode 100644 test/image/baselines/zz-text_on_shapes_position.png diff --git a/test/image/baselines/zz-text_on_shapes_basic.png b/test/image/baselines/zz-text_on_shapes_basic.png new file mode 100644 index 0000000000000000000000000000000000000000..91cdfa1764c936ad158298a9903bca570b59647c GIT binary patch literal 35612 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 literal 0 HcmV?d00001 diff --git a/test/image/baselines/zz-text_on_shapes_position.png b/test/image/baselines/zz-text_on_shapes_position.png new file mode 100644 index 0000000000000000000000000000000000000000..787266c372347850f4e7f603054dbd4a292cdec2 GIT binary patch literal 61993 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 literal 0 HcmV?d00001 From 01ef1858b571618aab2b720af169a373642e8481 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 16 Feb 2023 17:21:28 -0500 Subject: [PATCH 30/82] fix text positioning for lines --- src/components/shapes/attributes.js | 6 +- src/components/shapes/draw.js | 68 +++++++++--------- test/image/mocks/zz-text_on_shapes_basic.json | 3 +- .../mocks/zz-text_on_shapes_position.json | 71 ++++++++++--------- 4 files changed, 73 insertions(+), 75 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index fc0d8790855..15c7e85f41f 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -243,12 +243,10 @@ module.exports = templatedArray('shape', { 'top left', 'top center', 'top right', 'middle left', 'middle center', 'middle right', 'bottom left', 'bottom center', 'bottom right', - 'top start', 'top end', - 'middle start', 'middle end', - 'bottom start', 'bottom end', + 'start', 'middle', 'end', ], editType: 'arraydraw', - description: 'Sets the position of the label relative to she shape.' + description: 'Sets the position of the label relative to the shape.' }, textangle: { valType: 'angle', diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 8115c89b4de..251df22867d 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -716,44 +716,43 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu // Text position functions differently for lines vs. other shapes if(shapeType === 'line') { - // Handle special case for padding when angle is 'auto' for lines - // Padding should be treated as an orthogonal offset in this case - // Otherwise, padding is just a simple x and y offset - if(shapeOptions.label.textangle === 'auto') { - paddingX = textPadding * Math.sin(textAngleRad); - paddingY = -textPadding * Math.cos(textAngleRad); - } else { - paddingX = textPadding; - paddingY = textPadding; - } - - // Handle directional offset for top vs. bottom vs. center of line (default is 'top') - var paddingMultiplier; - if(textPosition.indexOf('middle') !== -1) { - paddingMultiplier = 0; - if(yanchor === 'auto') yanchor = 'middle'; - } else if(textPosition.indexOf('bottom') !== -1) { - paddingMultiplier = -1; - if(yanchor === 'auto') yanchor = 'top'; - } else { - paddingMultiplier = 1; - if(yanchor === 'auto') yanchor = 'bottom'; - } - + // Set base position for start vs. center vs. end of line (default is 'center') if(textPosition.indexOf('start') !== -1) { - textx = shapex0 + paddingX * paddingMultiplier; - texty = shapey0 + paddingY * paddingMultiplier; + textx = shapex0; + texty = shapey0; if(xanchor === 'auto') xanchor = (shapex1 >= shapex0) ? 'right' : 'left'; } else if(textPosition.indexOf('end') !== -1) { - textx = shapex1 + paddingX * paddingMultiplier; - texty = shapey1 + paddingY * paddingMultiplier; + textx = shapex1; + texty = shapey1; if(xanchor === 'auto') xanchor = (shapex1 >= shapex0) ? 'left' : 'right'; } else { // Default: center - textx = (shapex0 + shapex1) / 2 + paddingX * paddingMultiplier; - texty = (shapey0 + shapey1) / 2 + paddingY * paddingMultiplier; + textx = (shapex0 + shapex1) / 2; + texty = (shapey0 + shapey1) / 2; if(xanchor === 'auto') xanchor = 'center'; } - } else { // Text position for shapes that are not lines + + // Default yanchor is 'bottom' for lines (should handle in defaults.js) + if(yanchor === 'auto') yanchor = 'bottom'; + + // Special case for padding when angle is 'auto' for lines + // Padding should be treated as an orthogonal offset in this case + // Otherwise, padding is just a simple x and y offset + if(shapeOptions.label.textangle === 'auto') { + // Set direction to apply padding (based on `yanchor` only) + var paddingDirection = { bottom: 1, middle: 0, top: -1 }[yanchor]; + paddingX = textPadding * Math.sin(textAngleRad) * paddingDirection; + paddingY = -textPadding * Math.cos(textAngleRad) * paddingDirection; + } else { + // Set direction to apply padding (based on `xanchor` and `yanchor`) + var paddingDirectionX = { left: 1, center: 0, right: -1 }[xanchor]; + var paddingDirectionY = { bottom: -1, middle: 0, top: 1 }[yanchor]; + paddingX = textPadding * paddingDirectionX; + paddingY = textPadding * paddingDirectionY; + } + textx = textx + paddingX; + texty = texty + paddingY; + } else { + // Text position for shapes that are not lines // calc horizontal position // Horizontal needs a little extra padding to look balanced paddingX = textPadding + 3; @@ -783,10 +782,9 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu } // Shift vertical (& horizontal) position according to `yanchor` - var shiftFraction = { middle: 0, bottom: 0.5, top: -0.5 }[yanchor]; - // To adjust for text being anchored at baseline instead of bottom of descenders - // Probably not the right way of handling - var baselineAdjust = shapeOptions.label.font.size / 4; + var shiftFraction = { middle: 0.5, bottom: 1, top: 0 }[yanchor]; + // Adjust so that text is anchored at top of first line rather than at baseline of first line + var baselineAdjust = shapeOptions.label.font.size; var textHeight = textBB.height; var xshift = (textHeight * shiftFraction - baselineAdjust) * Math.sin(textAngleRad); var yshift = -(textHeight * shiftFraction - baselineAdjust) * Math.cos(textAngleRad); diff --git a/test/image/mocks/zz-text_on_shapes_basic.json b/test/image/mocks/zz-text_on_shapes_basic.json index 1854240bfd3..19fdbebfd6f 100644 --- a/test/image/mocks/zz-text_on_shapes_basic.json +++ b/test/image/mocks/zz-text_on_shapes_basic.json @@ -12,9 +12,10 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ + {"label":{"text":"angle zero", "textangle":0, "position": "end", "padding": 20},"xref":"paper","yref":"paper","x0":0.6,"x1":0.8,"y0":0.4,"y1":0.6, "type": "line"}, {"label":{"text":"top right, xanchor right,
angle 45", "xanchor":"right", "textangle":45, "position": "top right", "padding": 20}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, {"label":{"text":"top right", "position": "top right"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, - {"label":{"text":"xanchor right, position auto
two lines", "xanchor":"right", "padding": 10, "position": "top center", "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, + {"label":{"text":"xanchor right, position auto
two lines", "xanchor":"right", "padding": 10, "position": "middle", "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, {"label":{"text":"position auto, xanchor center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}}, {"label":{"text":"position auto, yanchor top", "yanchor": "top"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}}, {"label":{"text":"position auto, xanchor center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} diff --git a/test/image/mocks/zz-text_on_shapes_position.json b/test/image/mocks/zz-text_on_shapes_position.json index dff7b41d525..bd8a8dcc877 100644 --- a/test/image/mocks/zz-text_on_shapes_position.json +++ b/test/image/mocks/zz-text_on_shapes_position.json @@ -8,58 +8,59 @@ "xaxis":{"title":{"text":"linear"},"range":[0,100],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, "yaxis":{"title":{"text":"linear"},"range":[0,100],"type":"linear","showgrid":false,"zeroline":false,"showticklabels":false}, "height":800, - "width":800, + "width":1200, "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"label":{"text":"top left", "position": "top left"}, "x0":20,"x1":25,"y0":90,"y1":95,"fillcolor":"#ccc"}, - {"label":{"text":"top center", "position": "top center"}, "x0":48,"x1":53,"y0":90,"y1":95,"fillcolor":"#ccc"}, - {"label":{"text":"top right", "position": "top right"}, "x0":75,"x1":80,"y0":90,"y1":95,"fillcolor":"#ccc"}, + {"label":{"text":"top left", "position": "top left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":90,"y1":95,"fillcolor":"#ccc"}, + {"label":{"text":"top center", "position": "top center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":90,"y1":95,"fillcolor":"#ccc"}, + {"label":{"text":"top right", "position": "top right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":90,"y1":95,"fillcolor":"#ccc"}, - {"label":{"text":"middle left", "position": "middle left"}, "x0":20,"x1":25,"y0":72,"y1":77,"fillcolor":"#ccc"}, - {"label":{"text":"middle center", "position": "middle center"}, "x0":48,"x1":53,"y0":72,"y1":77,"fillcolor":"#ccc"}, - {"label":{"text":"middle right", "position": "middle right"}, "x0":75,"x1":80,"y0":72,"y1":77,"fillcolor":"#ccc"}, + {"label":{"text":"middle left", "position": "middle left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":72,"y1":77,"fillcolor":"#ccc"}, + {"label":{"text":"middle center", "position": "middle center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":72,"y1":77,"fillcolor":"#ccc"}, + {"label":{"text":"middle right", "position": "middle right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":72,"y1":77,"fillcolor":"#ccc"}, - {"label":{"text":"bottom left", "position": "bottom left"}, "x0":20,"x1":25,"y0":55,"y1":60,"fillcolor":"#ccc"}, - {"label":{"text":"bottom center", "position": "bottom center"}, "x0":48,"x1":53,"y0":55,"y1":60,"fillcolor":"#ccc"}, - {"label":{"text":"bottom right", "position": "bottom right"}, "x0":75,"x1":80,"y0":55,"y1":60,"fillcolor":"#ccc"}, + {"label":{"text":"bottom left", "position": "bottom left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":55,"y1":60,"fillcolor":"#ccc"}, + {"label":{"text":"bottom center", "position": "bottom center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":55,"y1":60,"fillcolor":"#ccc"}, + {"label":{"text":"bottom right", "position": "bottom right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":55,"y1":60,"fillcolor":"#ccc"}, - {"label":{"text":"top start +", "position": "top start"}, "x0":15,"x1":20,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top center +", "position": "top center"}, "x0":43,"x1":48,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top end +", "position": "top end"}, "x0":70,"x1":75,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start +", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":15,"x1":20,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle +", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":43,"x1":48,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end +", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":70,"x1":75,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top start -", "position": "top start"}, "x0":30,"x1":35,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top center -", "position": "top center"}, "x0":58,"x1":63,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top end -", "position": "top end"}, "x0":85,"x1":90,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start -", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":30,"x1":35,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle -", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":58,"x1":63,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end -", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":85,"x1":90,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top start + R", "position": "top start"}, "x1":15,"x0":20,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top center + R", "position": "top center"}, "x1":43,"x0":48,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top end + R", "position": "top end"}, "x1":70,"x0":75,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start + R", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":15,"x0":20,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle + R", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":43,"x0":48,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end + R", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":70,"x0":75,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top start - R", "position": "top start"}, "x1":30,"x0":35,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top center - R", "position": "top center"}, "x1":58,"x0":63,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top end - R", "position": "top end"}, "x1":85,"x0":90,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start - R", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":30,"x0":35,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle - R", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":58,"x0":63,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end - R", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":85,"x0":90,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom start +", "position": "bottom start"}, "x0":15,"x1":20,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom center +", "position": "bottom center"}, "x0":43,"x1":48,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom end +", "position": "bottom end"}, "x0":70,"x1":75,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
start +", "yanchor": "top", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":15,"x1":20,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle +", "yanchor": "top", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":43,"x1":48,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end +", "yanchor": "top", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":70,"x1":75,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom start -", "position": "bottom start"}, "x0":30,"x1":35,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom center -", "position": "bottom center"}, "x0":58,"x1":63,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom end -", "position": "bottom end"}, "x0":85,"x1":90,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
start -", "yanchor": "top", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":30,"x1":35,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle -", "yanchor": "top", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":58,"x1":63,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end -", "yanchor": "top", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":85,"x1":90,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom start + R", "position": "bottom start"}, "x1":15,"x0":20,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom center + R", "position": "bottom center"}, "x1":43,"x0":48,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom end + R", "position": "bottom end"}, "x1":70,"x0":75,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
start + R", "yanchor": "top", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":15,"x0":20,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle + R", "yanchor": "top", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":43,"x0":48,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end + R", "yanchor": "top", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":70,"x0":75,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom start - R", "position": "bottom start"}, "x1":30,"x0":35,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom center - R", "position": "bottom center"}, "x1":58,"x0":63,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom end - R", "position": "bottom end"}, "x1":85,"x0":90,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"} + {"label":{"text":"bottom
start - R", "yanchor": "top", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":30,"x0":35,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle - R", "yanchor": "top", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":58,"x0":63,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end - R", "yanchor": "top", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":85,"x0":90,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"} ] }, "config": { - "editable": true + "editable": true, + "modeBarButtonsToAdd": ["drawline"] } } From d8c47908f2dd41886365dcfb5a57c24f0cf9b31b Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 31 Jan 2023 18:15:55 -0500 Subject: [PATCH 31/82] Apply suggestions from code review Apply two of @archmoj 's suggestions Co-authored-by: Mojtaba Samimi <33888540+archmoj@users.noreply.github.com> --- src/components/shapes/attributes.js | 2 +- src/components/shapes/draw.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 15c7e85f41f..a69b24ab5f5 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -228,7 +228,7 @@ module.exports = templatedArray('shape', { label: { text: { valType: 'string', - dflt: null, + dflt: '', editType: 'arraydraw', description: 'Sets the text to display with shape.' }, diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 251df22867d..0e33816b6a4 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -151,7 +151,7 @@ function drawOne(gd, index) { setClipPath(shapeGroup, gd, options); - // Draw label, if present + // Draw or clear the label drawLabel(gd, index, options, shapeGroup); var editHelpers; From 5f39a628d51bc109ea5fe046bdac2e4c59783895 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 20 Feb 2023 17:41:01 -0500 Subject: [PATCH 32/82] rename position to textposition, fix some defaults --- src/components/shapes/attributes.js | 6 +- src/components/shapes/defaults.js | 2 +- src/components/shapes/draw.js | 2 +- test/image/mocks/zz-text_on_shapes_basic.json | 8 +-- .../mocks/zz-text_on_shapes_position.json | 66 +++++++++---------- 5 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index a69b24ab5f5..9115767745a 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -237,7 +237,7 @@ module.exports = templatedArray('shape', { colorEditType: 'arraydraw', description: 'Sets the shape label text font.' }), - position: { + textposition: { valType: 'enumerated', values: [ 'top left', 'top center', 'top right', @@ -246,7 +246,7 @@ module.exports = templatedArray('shape', { 'start', 'middle', 'end', ], editType: 'arraydraw', - description: 'Sets the position of the label relative to the shape.' + description: 'Sets the position of the label text relative to the shape.' }, textangle: { valType: 'angle', @@ -261,7 +261,7 @@ module.exports = templatedArray('shape', { yanchor: annAttrs.yanchor, padding: { valType: 'number', - dflt: 0, + dflt: 3, editType: 'arraydraw', description: 'Sets padding between edge of label and xanchor / yanchor.' }, diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index 5fcc108d6e0..a20e10b3634 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -122,7 +122,7 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { coerce('label.xanchor'); coerce('label.yanchor'); coerce('label.textangle', shapeType === 'line' ? 'auto' : 0); - coerce('label.position', ''); + coerce('label.textposition', shapeType === 'line' ? 'middle' : 'middle center'); coerce('label.padding'); Lib.coerceFont(coerce, 'label.font', fullLayout.font); } diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 0e33816b6a4..d30ee344119 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -705,7 +705,7 @@ function calcTextAngle(shapex0, shapey0, shapex1, shapey1) { } function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actualTextAngle, textBB) { - var textPosition = shapeOptions.label.position; + var textPosition = shapeOptions.label.textposition; var textPadding = shapeOptions.label.padding; var shapeType = shapeOptions.type; var textAngleRad = Math.PI / 180 * actualTextAngle; diff --git a/test/image/mocks/zz-text_on_shapes_basic.json b/test/image/mocks/zz-text_on_shapes_basic.json index 19fdbebfd6f..501b9262662 100644 --- a/test/image/mocks/zz-text_on_shapes_basic.json +++ b/test/image/mocks/zz-text_on_shapes_basic.json @@ -12,10 +12,10 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"label":{"text":"angle zero", "textangle":0, "position": "end", "padding": 20},"xref":"paper","yref":"paper","x0":0.6,"x1":0.8,"y0":0.4,"y1":0.6, "type": "line"}, - {"label":{"text":"top right, xanchor right,
angle 45", "xanchor":"right", "textangle":45, "position": "top right", "padding": 20}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, - {"label":{"text":"top right", "position": "top right"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, - {"label":{"text":"xanchor right, position auto
two lines", "xanchor":"right", "padding": 10, "position": "middle", "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, + {"label":{"text":"angle zero", "textangle":0, "textposition": "end", "padding": 20},"xref":"paper","yref":"paper","x0":0.6,"x1":0.8,"y0":0.3,"y1":0.6, "type": "line"}, + {"label":{"text":"top right, xanchor right,
angle 45", "xanchor":"right", "textangle":45, "textposition": "top right", "padding": 20}, "layer":"below","xref":"paper","yref":"paper","x0":0.5,"x1":0.6,"y0":0.4,"y1":0.6}, + {"label":{"text":"top right", "textposition": "top right"}, "xref":"paper","yref":"paper","type":"circle","x0":0.3,"x1":0.35,"y0":0.2,"y1":0.4}, + {"label":{"text":"xanchor right, position not set
two lines", "xanchor":"right", "padding": 10, "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, {"label":{"text":"position auto, xanchor center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}}, {"label":{"text":"position auto, yanchor top", "yanchor": "top"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}}, {"label":{"text":"position auto, xanchor center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} diff --git a/test/image/mocks/zz-text_on_shapes_position.json b/test/image/mocks/zz-text_on_shapes_position.json index bd8a8dcc877..ca6967552c6 100644 --- a/test/image/mocks/zz-text_on_shapes_position.json +++ b/test/image/mocks/zz-text_on_shapes_position.json @@ -12,50 +12,50 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"label":{"text":"top left", "position": "top left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":90,"y1":95,"fillcolor":"#ccc"}, - {"label":{"text":"top center", "position": "top center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":90,"y1":95,"fillcolor":"#ccc"}, - {"label":{"text":"top right", "position": "top right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":90,"y1":95,"fillcolor":"#ccc"}, + {"label":{"text":"top left", "textposition": "top left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":90,"y1":95,"fillcolor":"#ccc"}, + {"label":{"text":"top center", "textposition": "top center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":90,"y1":95,"fillcolor":"#ccc"}, + {"label":{"text":"top right", "textposition": "top right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":90,"y1":95,"fillcolor":"#ccc"}, - {"label":{"text":"middle left", "position": "middle left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":72,"y1":77,"fillcolor":"#ccc"}, - {"label":{"text":"middle center", "position": "middle center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":72,"y1":77,"fillcolor":"#ccc"}, - {"label":{"text":"middle right", "position": "middle right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":72,"y1":77,"fillcolor":"#ccc"}, + {"label":{"text":"middle left", "textposition": "middle left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":72,"y1":77,"fillcolor":"#ccc"}, + {"label":{"text":"middle center", "textposition": "middle center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":72,"y1":77,"fillcolor":"#ccc"}, + {"label":{"text":"middle right", "textposition": "middle right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":72,"y1":77,"fillcolor":"#ccc"}, - {"label":{"text":"bottom left", "position": "bottom left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":55,"y1":60,"fillcolor":"#ccc"}, - {"label":{"text":"bottom center", "position": "bottom center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":55,"y1":60,"fillcolor":"#ccc"}, - {"label":{"text":"bottom right", "position": "bottom right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":55,"y1":60,"fillcolor":"#ccc"}, + {"label":{"text":"bottom left", "textposition": "bottom left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":55,"y1":60,"fillcolor":"#ccc"}, + {"label":{"text":"bottom center", "textposition": "bottom center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":55,"y1":60,"fillcolor":"#ccc"}, + {"label":{"text":"bottom right", "textposition": "bottom right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":55,"y1":60,"fillcolor":"#ccc"}, - {"label":{"text":"top
start +", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":15,"x1":20,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
middle +", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":43,"x1":48,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
end +", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":70,"x1":75,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start +", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":15,"x1":20,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle +", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":43,"x1":48,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end +", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":70,"x1":75,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
start -", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":30,"x1":35,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
middle -", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":58,"x1":63,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
end -", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":85,"x1":90,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start -", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":30,"x1":35,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle -", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":58,"x1":63,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end -", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":85,"x1":90,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
start + R", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":15,"x0":20,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
middle + R", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":43,"x0":48,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
end + R", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":70,"x0":75,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start + R", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":15,"x0":20,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle + R", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":43,"x0":48,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end + R", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":70,"x0":75,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
start - R", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":30,"x0":35,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
middle - R", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":58,"x0":63,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
end - R", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":85,"x0":90,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start - R", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":30,"x0":35,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle - R", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":58,"x0":63,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end - R", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":85,"x0":90,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
start +", "yanchor": "top", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":15,"x1":20,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
middle +", "yanchor": "top", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":43,"x1":48,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
end +", "yanchor": "top", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":70,"x1":75,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
start +", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":15,"x1":20,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle +", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":43,"x1":48,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end +", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":70,"x1":75,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
start -", "yanchor": "top", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":30,"x1":35,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
middle -", "yanchor": "top", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":58,"x1":63,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
end -", "yanchor": "top", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":85,"x1":90,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
start -", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":30,"x1":35,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle -", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":58,"x1":63,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end -", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":85,"x1":90,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
start + R", "yanchor": "top", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":15,"x0":20,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
middle + R", "yanchor": "top", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":43,"x0":48,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
end + R", "yanchor": "top", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":70,"x0":75,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
start + R", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":15,"x0":20,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle + R", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":43,"x0":48,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end + R", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":70,"x0":75,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
start - R", "yanchor": "top", "position": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":30,"x0":35,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
middle - R", "yanchor": "top", "position": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":58,"x0":63,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
end - R", "yanchor": "top", "position": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":85,"x0":90,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"} + {"label":{"text":"bottom
start - R", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":30,"x0":35,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle - R", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":58,"x0":63,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end - R", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":85,"x0":90,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"} ] }, From 1ab9e2410bc713509b6e501187085caba4d3565e Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 20 Feb 2023 17:46:49 -0500 Subject: [PATCH 33/82] fix docstrings for xanchor and yanchor --- src/components/shapes/attributes.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 9115767745a..7cd6c2cdd7b 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -257,8 +257,12 @@ module.exports = templatedArray('shape', { 'with respect to the horizontal.' ].join(' ') }, - xanchor: annAttrs.xanchor, - yanchor: annAttrs.yanchor, + xanchor: extendFlat({}, annAttrs.xanchor, { + description: 'Sets the text box\'s horizontal position anchor.', + }), + yanchor: extendFlat({}, annAttrs.yanchor, { + description: 'Sets the text box\'s vertical position anchor.', + }), padding: { valType: 'number', dflt: 3, From b9ea25199be791a327855c576dbf83897bdf4260 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 20 Feb 2023 17:57:37 -0500 Subject: [PATCH 34/82] updated plot-schema.json --- dist/plot-schema.json | 87 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/dist/plot-schema.json b/dist/plot-schema.json index 1863b863a2a..fd832b8f45f 100644 --- a/dist/plot-schema.json +++ b/dist/plot-schema.json @@ -7109,6 +7109,93 @@ "nonzero" ] }, + "label": { + "dflt": null, + "editType": "arraydraw", + "font": { + "color": { + "editType": "arraydraw", + "valType": "color" + }, + "description": "Sets the shape label text font.", + "editType": "calc+arraydraw", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc+arraydraw", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "role": "object", + "size": { + "editType": "calc+arraydraw", + "min": 1, + "valType": "number" + } + }, + "padding": { + "description": "Sets padding between edge of label and xanchor / yanchor.", + "dflt": 3, + "editType": "arraydraw", + "valType": "number" + }, + "role": "object", + "text": { + "description": "Sets the text to display with shape.", + "dflt": "", + "editType": "arraydraw", + "valType": "string" + }, + "textangle": { + "description": "Sets the angle at which the `text` is drawn with respect to the horizontal.", + "dflt": 0, + "editType": "calc+arraydraw", + "valType": "angle" + }, + "textposition": { + "description": "Sets the position of the label text relative to the shape.", + "editType": "arraydraw", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right", + "start", + "middle", + "end" + ] + }, + "xanchor": { + "description": "Sets the text box's horizontal position anchor.", + "dflt": "auto", + "editType": "calc+arraydraw", + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ] + }, + "yanchor": { + "description": "Sets the text box's vertical position anchor.", + "dflt": "auto", + "editType": "calc+arraydraw", + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ] + } + }, "layer": { "description": "Specifies whether shapes are drawn below or above traces.", "dflt": "above", From 1f366a883dedb8aa09a858a9952fb3ac3dfc0733 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 20 Feb 2023 18:02:22 -0500 Subject: [PATCH 35/82] updated image baselines --- .../baselines/zz-text_on_shapes_basic.png | Bin 35612 -> 37873 bytes .../baselines/zz-text_on_shapes_position.png | Bin 61993 -> 73256 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/zz-text_on_shapes_basic.png b/test/image/baselines/zz-text_on_shapes_basic.png index 91cdfa1764c936ad158298a9903bca570b59647c..f57d112e47c5e9189891415cd3ef9ba41a9f171a 100644 GIT binary patch literal 37873 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 literal 35612 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 diff --git a/test/image/baselines/zz-text_on_shapes_position.png b/test/image/baselines/zz-text_on_shapes_position.png index 787266c372347850f4e7f603054dbd4a292cdec2..a0a8e6ca56f31cb3280d71ce3d81f77ed0f6d3ff 100644 GIT binary patch literal 73256 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ⅅml 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 From f1087f3d7e8da740c90730a073f68352cf6bf855 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 21 Feb 2023 10:42:08 -0500 Subject: [PATCH 36/82] updated plot-schema.json --- test/plot-schema.json | 45 ++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index b1482ee7116..fd832b8f45f 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -7135,12 +7135,25 @@ }, "padding": { "description": "Sets padding between edge of label and xanchor / yanchor.", - "dflt": 0, + "dflt": 3, "editType": "arraydraw", "valType": "number" }, - "position": { - "description": "Sets the position of the label relative to she shape.", + "role": "object", + "text": { + "description": "Sets the text to display with shape.", + "dflt": "", + "editType": "arraydraw", + "valType": "string" + }, + "textangle": { + "description": "Sets the angle at which the `text` is drawn with respect to the horizontal.", + "dflt": 0, + "editType": "calc+arraydraw", + "valType": "angle" + }, + "textposition": { + "description": "Sets the position of the label text relative to the shape.", "editType": "arraydraw", "valType": "enumerated", "values": [ @@ -7153,29 +7166,13 @@ "bottom left", "bottom center", "bottom right", - "top start", - "top end", - "middle start", - "middle end", - "bottom start", - "bottom end" + "start", + "middle", + "end" ] }, - "role": "object", - "text": { - "description": "Sets the text to display with shape.", - "dflt": null, - "editType": "arraydraw", - "valType": "string" - }, - "textangle": { - "description": "Sets the angle at which the `text` is drawn with respect to the horizontal.", - "dflt": 0, - "editType": "calc+arraydraw", - "valType": "angle" - }, "xanchor": { - "description": "Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side.", + "description": "Sets the text box's horizontal position anchor.", "dflt": "auto", "editType": "calc+arraydraw", "valType": "enumerated", @@ -7187,7 +7184,7 @@ ] }, "yanchor": { - "description": "Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side.", + "description": "Sets the text box's vertical position anchor.", "dflt": "auto", "editType": "calc+arraydraw", "valType": "enumerated", From f1570cf0b8226d0cab584982172f00b3e47990d1 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 21 Feb 2023 15:42:08 -0500 Subject: [PATCH 37/82] fix Jasmine tests in shapes_test.js --- src/components/shapes/draw.js | 3 ++- test/jasmine/tests/shapes_test.js | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index d30ee344119..423af3ed517 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -255,7 +255,8 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe // Note that by setting the `data-index` attr, it is ensured that // the helper group is purged in this modules `draw` function var g = shapeLayer.append('g') - .attr('data-index', index); + .attr('data-index', index) + .attr('drag-helper', true); // Helper path for moving g.append('path') diff --git a/test/jasmine/tests/shapes_test.js b/test/jasmine/tests/shapes_test.js index 50e11f859e6..112add2bee7 100644 --- a/test/jasmine/tests/shapes_test.js +++ b/test/jasmine/tests/shapes_test.js @@ -33,17 +33,17 @@ var dyToEnlargeHeight = { n: -10, s: 10, w: 0, e: 0, nw: -10, se: 10, ne: -10, s // Helper functions function getMoveLineDragElement(index) { index = index || 0; - return d3SelectAll('.shapelayer .shape-group g[data-index="' + index + '"] path').node(); + return d3SelectAll('.shapelayer g[drag-helper][data-index="' + index + '"] path').node(); } function getResizeLineOverStartPointElement(index) { index = index || 0; - return d3SelectAll('.shapelayer .shape-group g[data-index="' + index + '"] circle[data-line-point="start-point"]').node(); + return d3SelectAll('.shapelayer g[drag-helper][data-index="' + index + '"] circle[data-line-point="start-point"]').node(); } function getResizeLineOverEndPointElement(index) { index = index || 0; - return d3SelectAll('.shapelayer .shape-group g[data-index="' + index + '"] circle[data-line-point="end-point"]').node(); + return d3SelectAll('.shapelayer g[drag-helper][data-index="' + index + '"] circle[data-line-point="end-point"]').node(); } describe('Test shapes defaults:', function() { From baec66df7c50d7e4dcb4d9f778a9a4cab8303f92 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 21 Feb 2023 16:46:50 -0500 Subject: [PATCH 38/82] revert dist/plot-schema.json --- dist/plot-schema.json | 87 ------------------------------------------- 1 file changed, 87 deletions(-) diff --git a/dist/plot-schema.json b/dist/plot-schema.json index fd832b8f45f..1863b863a2a 100644 --- a/dist/plot-schema.json +++ b/dist/plot-schema.json @@ -7109,93 +7109,6 @@ "nonzero" ] }, - "label": { - "dflt": null, - "editType": "arraydraw", - "font": { - "color": { - "editType": "arraydraw", - "valType": "color" - }, - "description": "Sets the shape label text font.", - "editType": "calc+arraydraw", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", - "editType": "calc+arraydraw", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "role": "object", - "size": { - "editType": "calc+arraydraw", - "min": 1, - "valType": "number" - } - }, - "padding": { - "description": "Sets padding between edge of label and xanchor / yanchor.", - "dflt": 3, - "editType": "arraydraw", - "valType": "number" - }, - "role": "object", - "text": { - "description": "Sets the text to display with shape.", - "dflt": "", - "editType": "arraydraw", - "valType": "string" - }, - "textangle": { - "description": "Sets the angle at which the `text` is drawn with respect to the horizontal.", - "dflt": 0, - "editType": "calc+arraydraw", - "valType": "angle" - }, - "textposition": { - "description": "Sets the position of the label text relative to the shape.", - "editType": "arraydraw", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right", - "start", - "middle", - "end" - ] - }, - "xanchor": { - "description": "Sets the text box's horizontal position anchor.", - "dflt": "auto", - "editType": "calc+arraydraw", - "valType": "enumerated", - "values": [ - "auto", - "left", - "center", - "right" - ] - }, - "yanchor": { - "description": "Sets the text box's vertical position anchor.", - "dflt": "auto", - "editType": "calc+arraydraw", - "valType": "enumerated", - "values": [ - "auto", - "top", - "middle", - "bottom" - ] - } - }, "layer": { "description": "Specifies whether shapes are drawn below or above traces.", "dflt": "above", From d83e0cdda5373baba210d0ee7d35fe58a90f6462 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 21 Feb 2023 17:31:18 -0500 Subject: [PATCH 39/82] update textangle docstring and fix edge case --- src/components/shapes/attributes.js | 7 ++++--- src/components/shapes/draw.js | 12 ++++++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 7cd6c2cdd7b..7a75f7f5b8d 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -250,11 +250,12 @@ module.exports = templatedArray('shape', { }, textangle: { valType: 'angle', - dflt: 0, editType: 'calc+arraydraw', description: [ - 'Sets the angle at which the `text` is drawn', - 'with respect to the horizontal.' + 'Sets the angle at which the label text is drawn', + 'with respect to the horizontal. For lines, the default textangle is `auto`,', + 'which displays the text at the same angle as the line. For all other shapes,', + 'the default textangle is 0 (horizontal).' ].join(' ') }, xanchor: extendFlat({}, annAttrs.xanchor, { diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 423af3ed517..18dc1d66a56 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -649,10 +649,18 @@ function drawLabel(gd, index, options, shapeGroup) { shapey1 = shapeBBox.bottom; } - // Handle 'auto' angle for lines + // Handle `auto` angle var textangle = options.label.textangle; if(textangle === 'auto') { - textangle = calcTextAngle(shapex0, shapey0, shapex1, shapey1); + if(options.type === 'line') { + // Auto angle for line is same angle as line + textangle = calcTextAngle(shapex0, shapey0, shapex1, shapey1); + } else { + // Auto angle for all other shapes is 0 + // The default angle for other shapes is 0 anyway, so there's no reason to + // explicitly set the angle to `auto`, this is just covering an edge case + textangle = 0; + } } // Do a fake render so we can get the text bounding box height From a91d12f59a70e626ec7e39c985760c608235a4cd Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 21 Feb 2023 17:41:52 -0500 Subject: [PATCH 40/82] remove label dflt --- src/components/shapes/attributes.js | 1 - test/plot-schema.json | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 7a75f7f5b8d..b49338cdf78 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -270,7 +270,6 @@ module.exports = templatedArray('shape', { editType: 'arraydraw', description: 'Sets padding between edge of label and xanchor / yanchor.' }, - dflt: null, editType: 'arraydraw' }, editType: 'arraydraw' diff --git a/test/plot-schema.json b/test/plot-schema.json index fd832b8f45f..decc14c82e1 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -7110,7 +7110,6 @@ ] }, "label": { - "dflt": null, "editType": "arraydraw", "font": { "color": { @@ -7147,8 +7146,7 @@ "valType": "string" }, "textangle": { - "description": "Sets the angle at which the `text` is drawn with respect to the horizontal.", - "dflt": 0, + "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, the default textangle is `auto`, which displays the text at the same angle as the line. For all other shapes, the default textangle is 0 (horizontal).", "editType": "calc+arraydraw", "valType": "angle" }, From 4948d675d4d7c180b1b5c606059ca1b3639f3975 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Thu, 23 Feb 2023 15:45:44 -0500 Subject: [PATCH 41/82] Update src/components/shapes/draw.js Co-authored-by: Mojtaba Samimi <33888540+archmoj@users.noreply.github.com> --- src/components/shapes/draw.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 18dc1d66a56..7177220942c 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -645,7 +645,7 @@ function drawLabel(gd, index, options, shapeGroup) { var shapeBBox = shapeGroup.selectAll('path').node().getBoundingClientRect(); shapex0 = shapeBBox.x; shapex1 = shapeBBox.right; - shapey0 = shapeBBox.y; + shapey0 = shapeBBox.top; shapey1 = shapeBBox.bottom; } From a5e19d3e8324fb3343e20e212b7c182ca9917a7d Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Thu, 23 Feb 2023 15:46:22 -0500 Subject: [PATCH 42/82] Update src/components/shapes/draw.js Co-authored-by: Mojtaba Samimi <33888540+archmoj@users.noreply.github.com> --- src/components/shapes/draw.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 7177220942c..72f3bf0c125 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -643,7 +643,7 @@ function drawLabel(gd, index, options, shapeGroup) { } else { // Get shape bounding box var shapeBBox = shapeGroup.selectAll('path').node().getBoundingClientRect(); - shapex0 = shapeBBox.x; + shapex0 = shapeBBox.left; shapex1 = shapeBBox.right; shapey0 = shapeBBox.top; shapey1 = shapeBBox.bottom; From e55953ebbc656e5d1851ce54d98f2b74cabcc3ac Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Fri, 24 Feb 2023 10:29:21 -0500 Subject: [PATCH 43/82] add new mock --- .../zz-text_on_shapes_reversed_axes.json | 140 ++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 test/image/mocks/zz-text_on_shapes_reversed_axes.json diff --git a/test/image/mocks/zz-text_on_shapes_reversed_axes.json b/test/image/mocks/zz-text_on_shapes_reversed_axes.json new file mode 100644 index 00000000000..6fc7a135ac6 --- /dev/null +++ b/test/image/mocks/zz-text_on_shapes_reversed_axes.json @@ -0,0 +1,140 @@ +{ + "data": [ + { + "x": [ + 0, + 50 + ], + "y": [ + 0, + 50 + ] + } + ], + "layout": { + "width": 800, + "height": 600, + "margin": { + "t": 100, + "b": 50, + "l": 100, + "r": 50 + }, + "yaxis": { + "autorange": "reversed" + }, + "template": { + "layout": { + "shapes": [ + { + "label": {"text": "label"}, + "name": "myPath", + "editable": true, + "layer": "below", + "line": { + "width": 0 + }, + "fillcolor": "gray", + "opacity": 0.5, + "xref": "paper", + "yref": "paper", + "path": "M0.5,0.3C0.5,0.9 0.9,0.9 0.9,0.3C0.9,0.1 0.5,0.1 0.5,0.3ZM0.6,0.4C0.6,0.5 0.66,0.5 0.66,0.4ZM0.74,0.4C0.74,0.5 0.8,0.5 0.8,0.4ZM0.6,0.3C0.63,0.2 0.77,0.2 0.8,0.3Z" + } + ] + } + }, + "shapes": [ + { + "label": {"text": "label top right", "textposition": "top right"}, + "editable": true, + "layer": "below", + "type": "rect", + "line": { + "width": 5 + }, + "fillcolor": "red", + "opacity": 0.5, + "xref": "xaxis", + "yref": "yaxis", + "x0": 25, + "y0": 25, + "x1": 75, + "y1": 75 + }, + { + "label": {"text": "label"}, + "editable": true, + "layer": "top", + "type": "circle", + "line": { + "width": 5 + }, + "fillcolor": "green", + "opacity": 0.5, + "xref": "xaxis", + "yref": "yaxis", + "x0": 125, + "y0": 25, + "x1": 175, + "y1": 75 + }, + { + "label": {"text": "label BLUE"}, + "editable": true, + "line": { + "width": 5 + }, + "fillcolor": "blue", + "path": "M250,25L225,75L275,75Z" + }, + { + "label": {"text": "label"}, + "editable": true, + "line": { + "width": 15 + }, + "path": "M250,225L225,275L275,275" + }, + { + "label": {"text": "label"}, + "editable": true, + "layer": "below", + "path": "M320,100C390,180 290,180 360,100Z", + "fillcolor": "rgba(0,127,127,0.5)", + "line": { + "width": 5 + } + }, + { + "label": {"text": "label"}, + "editable": true, + "line": { + "width": 5, + "color": "orange" + }, + "fillcolor": "rgba(127,255,127,0.5)", + "path": "M0,100V200H50L0,300Q100,300 100,200T150,200C100,300 200,300 200,200S150,200 150,100Z" + }, + { + "label": {"text": "label"}, + "editable": true, + "line": { + "width": 2 + }, + "fillcolor": "yellow", + "path": "M300,70C300,10 380,10 380,70C380,90 300,90 300,70ZM320,60C320,50 332,50 332,60ZM348,60C348,50 360,50 360,60ZM320,70C326,80 354,80 360,70Z" + } + ] + }, + "config": { + "editable": false, + "modeBarButtonsToAdd": [ + "drawline", + "drawopenpath", + "drawclosedpath", + "drawcircle", + "drawrect", + "eraseshape" + ] + } +} \ No newline at end of file From 44d5f0891eb23801edad3b441d917361be122b4a Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 28 Feb 2023 10:31:54 -0500 Subject: [PATCH 44/82] fix text position for paths --- src/components/shapes/draw.js | 38 +++++++++++++------ .../zz-text_on_shapes_reversed_axes.json | 17 ++++----- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 72f3bf0c125..40b318f80d2 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -624,10 +624,34 @@ function drawLabel(gd, index, options, shapeGroup) { .classed('shape-label-text', true) .text(text); - // If x0, x1, y0, y1 are defined explicitly, use those values - // Otherwise, use shape bounding box + // Get x and y bounds of shape var shapex0, shapex1, shapey0, shapey1; - if('x0' in options && 'x1' in options && 'y0' in options && 'y1' in options) { + if(options.path) { + // If shape is defined as a path, get the + // min and max bounds across all polygons in path + var d = getPathString(gd, options); + var polygons = readPaths(d, gd); + shapex0 = Infinity; + shapey0 = Infinity; + shapex1 = -Infinity; + shapey1 = -Infinity; + for(var i = 0; i < polygons.length; i++) { + for(var j = 0; j < polygons[i].length; j++) { + var p = polygons[i][j]; + for(var k = 1; k < p.length; k += 2) { + var _x = p[k]; + var _y = p[k + 1]; + + shapex0 = Math.min(shapex0, _x); + shapex1 = Math.max(shapex1, _x); + shapey0 = Math.min(shapey0, _y); + shapey1 = Math.max(shapey1, _y); + } + } + } + } else { + // Otherwise, we use the x and y bounds defined in the shape options + // and convert them to pixel coordinates // Setup conversion functions var xa = Axes.getFromId(gd, options.xref); var xRefType = Axes.getRefType(options.xref); @@ -635,18 +659,10 @@ function drawLabel(gd, index, options, shapeGroup) { var yRefType = Axes.getRefType(options.yref); var x2p = helpers.getDataToPixel(gd, xa, false, xRefType); var y2p = helpers.getDataToPixel(gd, ya, true, yRefType); - shapex0 = x2p(options.x0); shapex1 = x2p(options.x1); shapey0 = y2p(options.y0); shapey1 = y2p(options.y1); - } else { - // Get shape bounding box - var shapeBBox = shapeGroup.selectAll('path').node().getBoundingClientRect(); - shapex0 = shapeBBox.left; - shapex1 = shapeBBox.right; - shapey0 = shapeBBox.top; - shapey1 = shapeBBox.bottom; } // Handle `auto` angle diff --git a/test/image/mocks/zz-text_on_shapes_reversed_axes.json b/test/image/mocks/zz-text_on_shapes_reversed_axes.json index 6fc7a135ac6..d5f5b3cccb0 100644 --- a/test/image/mocks/zz-text_on_shapes_reversed_axes.json +++ b/test/image/mocks/zz-text_on_shapes_reversed_axes.json @@ -45,7 +45,7 @@ }, "shapes": [ { - "label": {"text": "label top right", "textposition": "top right"}, + "label": {"text": "label 1 (top right)", "textposition": "top right"}, "editable": true, "layer": "below", "type": "rect", @@ -62,7 +62,7 @@ "y1": 75 }, { - "label": {"text": "label"}, + "label": {"text": "label 2"}, "editable": true, "layer": "top", "type": "circle", @@ -75,11 +75,10 @@ "yref": "yaxis", "x0": 125, "y0": 25, - "x1": 175, - "y1": 75 + "radius": 50 }, { - "label": {"text": "label BLUE"}, + "label": {"text": "label 3"}, "editable": true, "line": { "width": 5 @@ -88,7 +87,7 @@ "path": "M250,25L225,75L275,75Z" }, { - "label": {"text": "label"}, + "label": {"text": "label 4"}, "editable": true, "line": { "width": 15 @@ -96,7 +95,7 @@ "path": "M250,225L225,275L275,275" }, { - "label": {"text": "label"}, + "label": {"text": "label 5"}, "editable": true, "layer": "below", "path": "M320,100C390,180 290,180 360,100Z", @@ -106,7 +105,7 @@ } }, { - "label": {"text": "label"}, + "label": {"text": "label 6"}, "editable": true, "line": { "width": 5, @@ -116,7 +115,7 @@ "path": "M0,100V200H50L0,300Q100,300 100,200T150,200C100,300 200,300 200,200S150,200 150,100Z" }, { - "label": {"text": "label"}, + "label": {"text": "label 7"}, "editable": true, "line": { "width": 2 From 5424ac5a666e3a9190fd0e8444df0cb84f66fd33 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 28 Feb 2023 10:39:26 -0500 Subject: [PATCH 45/82] fix mock --- test/image/mocks/zz-text_on_shapes_reversed_axes.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/image/mocks/zz-text_on_shapes_reversed_axes.json b/test/image/mocks/zz-text_on_shapes_reversed_axes.json index d5f5b3cccb0..b5313ff9d88 100644 --- a/test/image/mocks/zz-text_on_shapes_reversed_axes.json +++ b/test/image/mocks/zz-text_on_shapes_reversed_axes.json @@ -75,7 +75,8 @@ "yref": "yaxis", "x0": 125, "y0": 25, - "radius": 50 + "x1": 175, + "y1": 75 }, { "label": {"text": "label 3"}, From 8769cff5a0c54ad6d4b3f2b04c20f3a52536922d Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 28 Feb 2023 16:04:45 -0500 Subject: [PATCH 46/82] add label attributes to newshape (broken) --- .../shapes/draw_newshape/attributes.js | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index 9048dce5b58..b3418c79210 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -1,5 +1,7 @@ 'use strict'; +var fontAttrs = require('../../../plots/font_attributes'); +var annAttrs = require('../../annotations/attributes'); var dash = require('../../drawing/attributes').dash; var extendFlat = require('../../../lib/extend').extendFlat; @@ -78,7 +80,53 @@ module.exports = { '*vertical* allows vertical extend.' ].join(' ') }, - + label: { + text: { + valType: 'string', + dflt: '', + editType: 'arraydraw', + description: 'Sets the text to display with shape.' + }, + font: fontAttrs({ + editType: 'calc+arraydraw', + colorEditType: 'arraydraw', + description: 'Sets the shape label text font.' + }), + textposition: { + valType: 'enumerated', + values: [ + 'top left', 'top center', 'top right', + 'middle left', 'middle center', 'middle right', + 'bottom left', 'bottom center', 'bottom right', + 'start', 'middle', 'end', + ], + editType: 'arraydraw', + description: 'Sets the position of the label text relative to the shape.' + }, + textangle: { + valType: 'angle', + editType: 'calc+arraydraw', + description: [ + 'Sets the angle at which the label text is drawn', + 'with respect to the horizontal. For lines, the default textangle is `auto`,', + 'which displays the text at the same angle as the line. For all other shapes,', + 'the default textangle is 0 (horizontal).' + ].join(' ') + }, + xanchor: extendFlat({}, annAttrs.xanchor, { + description: 'Sets the text box\'s horizontal position anchor.', + }), + yanchor: extendFlat({}, annAttrs.yanchor, { + description: 'Sets the text box\'s vertical position anchor.', + }), + padding: { + valType: 'number', + dflt: 3, + editType: 'arraydraw', + description: 'Sets padding between edge of label and xanchor / yanchor.' + }, + editType: 'arraydraw' + }, editType: 'none' }, From f192a166e342dc4826e1c99bbbae7369b5403b77 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Tue, 28 Feb 2023 16:45:56 -0500 Subject: [PATCH 47/82] adjust edit types for newshape.label --- .../shapes/draw_newshape/attributes.js | 5 -- test/plot-schema.json | 81 +++++++++++++++++++ 2 files changed, 81 insertions(+), 5 deletions(-) diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index b3418c79210..4ac3eacb89c 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -84,12 +84,10 @@ module.exports = { text: { valType: 'string', dflt: '', - editType: 'arraydraw', description: 'Sets the text to display with shape.' }, font: fontAttrs({ editType: 'calc+arraydraw', - colorEditType: 'arraydraw', description: 'Sets the shape label text font.' }), textposition: { @@ -100,7 +98,6 @@ module.exports = { 'bottom left', 'bottom center', 'bottom right', 'start', 'middle', 'end', ], - editType: 'arraydraw', description: 'Sets the position of the label text relative to the shape.' }, textangle: { @@ -122,10 +119,8 @@ module.exports = { padding: { valType: 'number', dflt: 3, - editType: 'arraydraw', description: 'Sets padding between edge of label and xanchor / yanchor.' }, - editType: 'arraydraw' }, editType: 'none' }, diff --git a/test/plot-schema.json b/test/plot-schema.json index decc14c82e1..274a50f57c7 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3573,6 +3573,87 @@ "nonzero" ] }, + "label": { + "font": { + "color": { + "editType": "calc+arraydraw", + "valType": "color" + }, + "description": "Sets the shape label text font.", + "editType": "calc+arraydraw", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc+arraydraw", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "role": "object", + "size": { + "editType": "calc+arraydraw", + "min": 1, + "valType": "number" + } + }, + "padding": { + "description": "Sets padding between edge of label and xanchor / yanchor.", + "dflt": 3, + "valType": "number" + }, + "role": "object", + "text": { + "description": "Sets the text to display with shape.", + "dflt": "", + "valType": "string" + }, + "textangle": { + "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, the default textangle is `auto`, which displays the text at the same angle as the line. For all other shapes, the default textangle is 0 (horizontal).", + "editType": "calc+arraydraw", + "valType": "angle" + }, + "textposition": { + "description": "Sets the position of the label text relative to the shape.", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right", + "start", + "middle", + "end" + ] + }, + "xanchor": { + "description": "Sets the text box's horizontal position anchor.", + "dflt": "auto", + "editType": "calc+arraydraw", + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ] + }, + "yanchor": { + "description": "Sets the text box's vertical position anchor.", + "dflt": "auto", + "editType": "calc+arraydraw", + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ] + } + }, "layer": { "description": "Specifies whether new shapes are drawn below or above traces.", "dflt": "above", From 7ca5cf838211acbeb53bb554f61f2fd3b6833774 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Tue, 28 Feb 2023 17:18:37 -0500 Subject: [PATCH 48/82] fix syntax in zz-text_on_shapes_reversed_axes mock --- test/image/mocks/zz-text_on_shapes_reversed_axes.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/image/mocks/zz-text_on_shapes_reversed_axes.json b/test/image/mocks/zz-text_on_shapes_reversed_axes.json index b5313ff9d88..ddd1da129fd 100644 --- a/test/image/mocks/zz-text_on_shapes_reversed_axes.json +++ b/test/image/mocks/zz-text_on_shapes_reversed_axes.json @@ -137,4 +137,4 @@ "eraseshape" ] } -} \ No newline at end of file +} From 822fe0df7e653891fc3ba70dfbdf014350712247 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Tue, 28 Feb 2023 17:43:50 -0500 Subject: [PATCH 49/82] add baseline --- .../zz-text_on_shapes_reversed_axes.png | Bin 0 -> 67269 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/zz-text_on_shapes_reversed_axes.png diff --git a/test/image/baselines/zz-text_on_shapes_reversed_axes.png b/test/image/baselines/zz-text_on_shapes_reversed_axes.png new file mode 100644 index 0000000000000000000000000000000000000000..f221ec0ba1e682a9ba1fbfc07f5ede24c4f8f425 GIT binary patch literal 67269 zcmeFZWl&t*wl$n?=wJaFfP+5XBk>~Ne`Aan?|QDo!CK!yvk~xt4$_BDrx2SNoOY2@8cZgr5~68nXm~Tf zz8S*tyx6|!%vH6?XJ3S`u&k_1O;-+y`nOl>Lol2GO3rwUPlo{i_4N>hi7o`jh<)&v z7t#)u5muAC7WB7|KmxzqLHX<70zcQ_y+=+3rxVkF@L_*>y+@Ye{_P_lU`)v%!Di&I zjY9vvFeJEL^zSR8Ga(0IhT47bp#IxO!hnTd{dJYV&;MEIe|GdgXY?;S@SkA%JC^(h zp8kWQe@RO~iuzAx`b(n!Hz`yc<8GYg7}WQdWLdI|tZfUCGc@{t>}3E(_SInXF)0dnK~ zw=HI9G&Mx3CkC9i9)eB)wc*z%3<8@G$`g0zA~(pB{_0|L|6SGHW}Se`ZKI!+bbL(j`TDUCy(GT z!TZxJ1|0MI(;WNH(_F;`hIA^Vn|71&+NS>apf2fox<${d^EI(J$5+2QhKjvVAqkT^ zKqLgX=gfZ_5knkizXQK{o$Ybi&G7W~_j3)C2)mcP@V!_aYxcR~pqX;+Z8Uc4o4UJZ zQJk=iH(;}4sLgT76AKISXdn?TNv4k9N{q3% zQT1^~{g=uMl@8*7>FMeC_;~!3Z3CClwV@0HLZ+{dj40(_)U*2nv$NLF89+_ z%kc0($v>i5{$TYX<%{zJ3K7Z1m_tgH6SR~KjE!NbI~2+0nEdt7Gfqsu6sZwti{gPm z>c;+ZijgPW6CFn|0c_@Mz8H8uV^f;cm%yMnUGXyNv)JWE{#c_w�t}8cN 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%0Dm>*5#1L&K&c&!RmzVQb; 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 literal 67269 zcmeFZWl&t*wl$n?=wJaFfP+5XBk>~Ne`Aan?|QDo!CK!yvk~xt4$_BDrx2SNoOY2@8cZgr5~68nXm~Tf zz8S*tyx6|!%vH6?XJ3S`u&k_1O;-+y`nOl>Lol2GO3rwUPlo{i_4N>hi7o`jh<)&v z7t#)u5muAC7WB7|KmxzqLHX<70zcQ_y+=+3rxVkF@L_*>y+@Ye{_P_lU`)v%!Di&I zjY9vvFeJEL^zSR8Ga(0IhT47bp#IxO!hnTd{dJYV&;MEIe|GdgXY?;S@SkA%JC^(h zp8kWQe@RO~iuzAx`b(n!Hz`yc<8GYg7}WQdWLdI|tZfUCGc@{t>}3E(_SInXF)0dnK~ zw=HI9G&Mx3CkC9i9)eB)wc*z%3<8@G$`g0zA~(pB{_0|L|6SGHW}Se`ZKI!+bbL(j`TDUCy(GT z!TZxJ1|0MI(;WNH(_F;`hIA^Vn|71&+NS>apf2fox<${d^EI(J$5+2QhKjvVAqkT^ zKqLgX=gfZ_5knkizXQK{o$Ybi&G7W~_j3)C2)mcP@V!_aYxcR~pqX;+Z8Uc4o4UJZ zQJk=iH(;}4sLgT76AKISXdn?TNv4k9N{q3% zQT1^~{g=uMl@8*7>FMeC_;~!3Z3CClwV@0HLZ+{dj40(_)U*2nv$NLF89+_ z%kc0($v>i5{$TYX<%{zJ3K7Z1m_tgH6SR~KjE!NbI~2+0nEdt7Gfqsu6sZwti{gPm z>c;+ZijgPW6CFn|0c_@Mz8H8uV^f;cm%yMnUGXyNv)JWE{#c_w�t}8cN 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≤N3EG!ojy*J%44G!SgBKm#TTeDL}QJ5qf* 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 From 52463fa07dc9173f74626b042c5852549035e1e2 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Wed, 1 Mar 2023 16:49:20 -0500 Subject: [PATCH 62/82] update plot-schema --- test/plot-schema.json | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 7db87374ce9..06ecf5d2b86 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3634,7 +3634,7 @@ ] }, "xanchor": { - "description": "Sets the text box's horizontal position anchor.", + "description": "Sets the label's horizontal position anchor This anchor binds the specified `label.textposition` to the *left*, *center* or *right* of the label text. For example, if `label.textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the shape.", "dflt": "auto", "editType": "none", "valType": "enumerated", @@ -3646,12 +3646,10 @@ ] }, "yanchor": { - "description": "Sets the text box's vertical position anchor.", - "dflt": "auto", + "description": "Sets the label's vertical position anchor This anchor binds the specified `label.textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `label.textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the shape.", "editType": "none", "valType": "enumerated", "values": [ - "auto", "top", "middle", "bottom" @@ -7255,7 +7253,7 @@ ] }, "xanchor": { - "description": "Sets the text box's horizontal position anchor.", + "description": "Sets the label's horizontal position anchor This anchor binds the specified `label.textposition` to the *left*, *center* or *right* of the label text. For example, if `label.textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the shape.", "dflt": "auto", "editType": "calc+arraydraw", "valType": "enumerated", @@ -7267,12 +7265,10 @@ ] }, "yanchor": { - "description": "Sets the text box's vertical position anchor.", - "dflt": "auto", + "description": "Sets the label's vertical position anchor This anchor binds the specified `label.textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `label.textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the shape.", "editType": "calc+arraydraw", "valType": "enumerated", "values": [ - "auto", "top", "middle", "bottom" From 394b48f9c921f06375c1206be3884c8f32cc0406 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 2 Mar 2023 11:56:43 -0500 Subject: [PATCH 63/82] improve label.textposition docstring --- src/components/shapes/attributes.js | 9 ++++++++- src/components/shapes/draw_newshape/attributes.js | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 0f937676fb4..06f536fa684 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -246,7 +246,14 @@ module.exports = templatedArray('shape', { 'start', 'middle', 'end', ], editType: 'arraydraw', - description: 'Sets the position of the label text relative to the shape.' + description: [ + 'Sets the position of the label text relative to the shape.', + 'Supported values for rectangles, circles and paths are', + '`top left`, `top center`, `top right`, `middle left`,', + '`middle center`, `middle right`, `bottom left`, `bottom center`,', + 'and `bottom right`.', + 'Supported values for lines are `start`, `middle`, and `end`.', + ].join(' ') }, textangle: { valType: 'angle', diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index b98fec2d0a2..01d54bfd725 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -99,7 +99,14 @@ module.exports = { 'start', 'middle', 'end', ], editType: 'none', - description: 'Sets the position of the label text relative to the shape.' + description: [ + 'Sets the position of the label text relative to the shape.', + 'Supported values for rectangles, circles and paths are', + '`top left`, `top center`, `top right`, `middle left`,', + '`middle center`, `middle right`, `bottom left`, `bottom center`,', + 'and `bottom right`.', + 'Supported values for lines are `start`, `middle`, and `end`.', + ].join(' ') }, textangle: { valType: 'angle', From 1325b7cd02b5f6d316a7a2cecc6ed4b5b1850716 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 2 Mar 2023 11:58:00 -0500 Subject: [PATCH 64/82] only coerce label properties if label text is given --- src/components/shapes/defaults.js | 17 +++++++++-------- src/components/shapes/draw_newshape/defaults.js | 16 +++++++++------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index a9a8b6e4e2c..969e393e42e 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -135,12 +135,13 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { // Label options var isLine = shapeType === 'line'; - coerce('label.text'); - coerce('label.textangle', isLine ? 'auto' : 0); - var labelTextPosition = coerce('label.textposition', isLine ? 'middle' : 'middle center'); - coerce('label.xanchor'); - // Default yanchor value depends on shape type and label textposition - coerce('label.yanchor', dfltLabelYanchor(isLine, labelTextPosition)); - coerce('label.padding'); - Lib.coerceFont(coerce, 'label.font', fullLayout.font); + var labelText = coerce('label.text'); + if(labelText) { + coerce('label.textangle', isLine ? 'auto' : 0); + var labelTextPosition = coerce('label.textposition', isLine ? 'middle' : 'middle center'); + coerce('label.xanchor'); + coerce('label.yanchor', dfltLabelYanchor(isLine, labelTextPosition)); + coerce('label.padding'); + Lib.coerceFont(coerce, 'label.font', fullLayout.font); + } } diff --git a/src/components/shapes/draw_newshape/defaults.js b/src/components/shapes/draw_newshape/defaults.js index fff5b9f4a5a..0e4fc5c89c2 100644 --- a/src/components/shapes/draw_newshape/defaults.js +++ b/src/components/shapes/draw_newshape/defaults.js @@ -34,13 +34,15 @@ module.exports = function supplyDrawNewShapeDefaults(layoutIn, layoutOut, coerce } var isLine = layoutIn.dragmode === 'drawline'; - coerce('newshape.label.text'); - coerce('newshape.label.textangle', isLine ? 'auto' : 0); - var labelTextPosition = coerce('newshape.label.textposition', isLine ? 'middle' : 'middle center'); - coerce('newshape.label.xanchor'); - coerce('newshape.label.yanchor', dfltLabelYanchor(isLine, labelTextPosition)); - coerce('newshape.label.padding'); - Lib.coerceFont(coerce, 'newshape.label.font', layoutOut.font); + var labelText = coerce('newshape.label.text'); + if(labelText) { + coerce('newshape.label.textangle', isLine ? 'auto' : 0); + var labelTextPosition = coerce('newshape.label.textposition', isLine ? 'middle' : 'middle center'); + coerce('newshape.label.xanchor'); + coerce('newshape.label.yanchor', dfltLabelYanchor(isLine, labelTextPosition)); + coerce('newshape.label.padding'); + Lib.coerceFont(coerce, 'newshape.label.font', layoutOut.font); + } coerce('activeshape.fillcolor'); coerce('activeshape.opacity'); From 63bb5d977a798fd2d5e2f0d39f4d08aaa041114b Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 2 Mar 2023 11:59:55 -0500 Subject: [PATCH 65/82] fix line xanchor behavior when x0 == x1 --- src/components/shapes/draw.js | 57 ++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 19eccb684ee..edbbb9e4a2f 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -23,6 +23,7 @@ var svgTextUtils = require('../../lib/svg_text_utils'); var constants = require('./constants'); var helpers = require('./helpers'); var getPathString = helpers.getPathString; +var FROM_TL = require('../../constants/alignment').FROM_TL; // Shapes are stored in gd.layout.shapes, an array of objects @@ -604,7 +605,7 @@ function drawLabel(gd, index, options, shapeGroup) { shapeGroup.selectAll('.shape-label').remove(); // If no label, return - if(!options.label) return; + if(!options.label.text) return; var labelGroupAttrs = { 'data-index': index, @@ -743,38 +744,58 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu // Text position functions differently for lines vs. other shapes if(shapeType === 'line') { // Set base position for start vs. center vs. end of line (default is 'center') - if(textPosition.indexOf('start') !== -1) { + if(textPosition === 'start') { textx = shapex0; texty = shapey0; - if(xanchor === 'auto') { - if(textAngle === 'auto') xanchor = (shapex1 >= shapex0) ? 'left' : 'right'; - else xanchor = (shapex1 >= shapex0) ? 'right' : 'left'; - } - } else if(textPosition.indexOf('end') !== -1) { + } else if(textPosition === 'end') { textx = shapex1; texty = shapey1; - if(xanchor === 'auto') { - if(textAngle === 'auto') xanchor = (shapex1 >= shapex0) ? 'right' : 'left'; - else xanchor = (shapex1 >= shapex0) ? 'left' : 'right'; - } } else { // Default: center textx = (shapex0 + shapex1) / 2; texty = (shapey0 + shapey1) / 2; - if(xanchor === 'auto') xanchor = 'center'; + } + + // Set xanchor if xanchor is 'auto' + if(xanchor === 'auto') { + if(textPosition === 'start') { + if(textAngle === 'auto') { + if(shapex1 > shapex0) xanchor = 'left'; + else if(shapex1 < shapex0) xanchor = 'right'; + else xanchor = 'center'; + } else { + if(shapex1 > shapex0) xanchor = 'right'; + else if(shapex1 < shapex0) xanchor = 'left'; + else xanchor = 'center'; + } + } else if(textPosition === 'end') { + if(textAngle === 'auto') { + if(shapex1 > shapex0) xanchor = 'right'; + else if(shapex1 < shapex0) xanchor = 'left'; + else xanchor = 'center'; + } else { + if(shapex1 > shapex0) xanchor = 'left'; + else if(shapex1 < shapex0) xanchor = 'right'; + else xanchor = 'center'; + } + } else { + xanchor = 'center'; + } } // Special case for padding when angle is 'auto' for lines // Padding should be treated as an orthogonal offset in this case // Otherwise, padding is just a simple x and y offset + var paddingConstantsX = { left: 1, center: 0, right: -1 }; + var paddingConstantsY = { bottom: -1, middle: 0, top: 1 }; if(textAngle === 'auto') { // Set direction to apply padding (based on `yanchor` only) - var paddingDirection = { bottom: 1, middle: 0, top: -1 }[yanchor]; - paddingX = textPadding * Math.sin(textAngleRad) * paddingDirection; - paddingY = -textPadding * Math.cos(textAngleRad) * paddingDirection; + var paddingDirection = paddingConstantsY[yanchor]; + paddingX = -textPadding * Math.sin(textAngleRad) * paddingDirection; + paddingY = textPadding * Math.cos(textAngleRad) * paddingDirection; } else { // Set direction to apply padding (based on `xanchor` and `yanchor`) - var paddingDirectionX = { left: 1, center: 0, right: -1 }[xanchor]; - var paddingDirectionY = { bottom: -1, middle: 0, top: 1 }[yanchor]; + var paddingDirectionX = paddingConstantsX[xanchor]; + var paddingDirectionY = paddingConstantsY[yanchor]; paddingX = textPadding * paddingDirectionX; paddingY = textPadding * paddingDirectionY; } @@ -814,7 +835,7 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu } // Shift vertical (& horizontal) position according to `yanchor` - var shiftFraction = { middle: 0.5, bottom: 1, top: 0 }[yanchor]; + var shiftFraction = FROM_TL[yanchor]; // Adjust so that text is anchored at top of first line rather than at baseline of first line var baselineAdjust = shapeOptions.label.font.size; var textHeight = textBB.height; From 61e3df7ef02ac54a7225a664562853c98e0c664b Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 2 Mar 2023 12:07:03 -0500 Subject: [PATCH 66/82] docstring update --- src/components/shapes/attributes.js | 1 + src/components/shapes/draw_newshape/attributes.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 06f536fa684..0f346628a07 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -253,6 +253,7 @@ module.exports = templatedArray('shape', { '`middle center`, `middle right`, `bottom left`, `bottom center`,', 'and `bottom right`.', 'Supported values for lines are `start`, `middle`, and `end`.', + 'Default: `middle center` for rectangles, circles, and paths; `middle` for lines.', ].join(' ') }, textangle: { diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index 01d54bfd725..a3e47d64e7e 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -106,6 +106,7 @@ module.exports = { '`middle center`, `middle right`, `bottom left`, `bottom center`,', 'and `bottom right`.', 'Supported values for lines are `start`, `middle`, and `end`.', + 'Default: `middle center` for rectangles, circles, and paths; `middle` for lines.', ].join(' ') }, textangle: { From 40933d044daa4e0ccf6a4bbdfaa5a7d4a639850b Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 2 Mar 2023 12:26:37 -0500 Subject: [PATCH 67/82] update plot-schema --- test/plot-schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 06ecf5d2b86..e3d2dcbc40e 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3615,7 +3615,7 @@ "valType": "angle" }, "textposition": { - "description": "Sets the position of the label text relative to the shape.", + "description": "Sets the position of the label text relative to the shape. Supported values for rectangles, circles and paths are `top left`, `top center`, `top right`, `middle left`, `middle center`, `middle right`, `bottom left`, `bottom center`, and `bottom right`. Supported values for lines are `start`, `middle`, and `end`. Default: `middle center` for rectangles, circles, and paths; `middle` for lines.", "editType": "none", "valType": "enumerated", "values": [ @@ -7234,7 +7234,7 @@ "valType": "angle" }, "textposition": { - "description": "Sets the position of the label text relative to the shape.", + "description": "Sets the position of the label text relative to the shape. Supported values for rectangles, circles and paths are `top left`, `top center`, `top right`, `middle left`, `middle center`, `middle right`, `bottom left`, `bottom center`, and `bottom right`. Supported values for lines are `start`, `middle`, and `end`. Default: `middle center` for rectangles, circles, and paths; `middle` for lines.", "editType": "arraydraw", "valType": "enumerated", "values": [ From 8d35f6e8199999de9b30054c56cc381a7810e8a2 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 2 Mar 2023 17:50:29 -0500 Subject: [PATCH 68/82] set default angle to auto for all shapes --- src/components/shapes/attributes.js | 1 + src/components/shapes/defaults.js | 2 +- src/components/shapes/draw.js | 2 -- src/components/shapes/draw_newshape/attributes.js | 7 ++++--- src/components/shapes/draw_newshape/defaults.js | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 0f346628a07..a30cb73f86e 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -258,6 +258,7 @@ module.exports = templatedArray('shape', { }, textangle: { valType: 'angle', + dflt: 'auto', editType: 'calc+arraydraw', description: [ 'Sets the angle at which the label text is drawn', diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index 969e393e42e..158bbc9fb0c 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -137,7 +137,7 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { var isLine = shapeType === 'line'; var labelText = coerce('label.text'); if(labelText) { - coerce('label.textangle', isLine ? 'auto' : 0); + coerce('label.textangle'); var labelTextPosition = coerce('label.textposition', isLine ? 'middle' : 'middle center'); coerce('label.xanchor'); coerce('label.yanchor', dfltLabelYanchor(isLine, labelTextPosition)); diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index edbbb9e4a2f..5eb7c5aad09 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -674,8 +674,6 @@ function drawLabel(gd, index, options, shapeGroup) { textangle = calcTextAngle(shapex0, shapey0, shapex1, shapey1); } else { // Auto angle for all other shapes is 0 - // The default angle for other shapes is 0 anyway, so there's no reason to - // explicitly set the angle to `auto`, this is just covering an edge case textangle = 0; } } diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index a3e47d64e7e..b50b712f210 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -111,12 +111,13 @@ module.exports = { }, textangle: { valType: 'angle', + dflt: 'auto', editType: 'none', description: [ 'Sets the angle at which the label text is drawn', - 'with respect to the horizontal. For lines, the default textangle is `auto`,', - 'which displays the text at the same angle as the line. For all other shapes,', - 'the default textangle is 0 (horizontal).' + 'with respect to the horizontal. For lines, angle `auto`', + 'is the same angle as the line. For all other shapes,', + 'angle `auto` is horizontal.' ].join(' ') }, xanchor: { diff --git a/src/components/shapes/draw_newshape/defaults.js b/src/components/shapes/draw_newshape/defaults.js index 0e4fc5c89c2..b33e8bbe32b 100644 --- a/src/components/shapes/draw_newshape/defaults.js +++ b/src/components/shapes/draw_newshape/defaults.js @@ -36,7 +36,7 @@ module.exports = function supplyDrawNewShapeDefaults(layoutIn, layoutOut, coerce var isLine = layoutIn.dragmode === 'drawline'; var labelText = coerce('newshape.label.text'); if(labelText) { - coerce('newshape.label.textangle', isLine ? 'auto' : 0); + coerce('newshape.label.textangle'); var labelTextPosition = coerce('newshape.label.textposition', isLine ? 'middle' : 'middle center'); coerce('newshape.label.xanchor'); coerce('newshape.label.yanchor', dfltLabelYanchor(isLine, labelTextPosition)); From d5d19278fa63402ff7dd6f0f7534500bb38a4f82 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 2 Mar 2023 17:52:17 -0500 Subject: [PATCH 69/82] set min padding to 0 --- src/components/shapes/attributes.js | 7 ++++--- src/components/shapes/draw_newshape/attributes.js | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index a30cb73f86e..326d2d78d28 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -262,9 +262,9 @@ module.exports = templatedArray('shape', { editType: 'calc+arraydraw', description: [ 'Sets the angle at which the label text is drawn', - 'with respect to the horizontal. For lines, the default textangle is `auto`,', - 'which displays the text at the same angle as the line. For all other shapes,', - 'the default textangle is 0 (horizontal).' + 'with respect to the horizontal. For lines, angle `auto`', + 'is the same angle as the line. For all other shapes,', + 'angle `auto` is horizontal.' ].join(' ') }, xanchor: { @@ -299,6 +299,7 @@ module.exports = templatedArray('shape', { padding: { valType: 'number', dflt: 3, + min: 0, editType: 'arraydraw', description: 'Sets padding between edge of label and xanchor / yanchor.' }, diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index b50b712f210..a9543d8b575 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -152,6 +152,7 @@ module.exports = { padding: { valType: 'number', dflt: 3, + min: 0, editType: 'none', description: 'Sets padding between edge of label and xanchor / yanchor.' }, From c34d6de95dd0e486183876344f6f864c8b6ed011 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 2 Mar 2023 18:32:18 -0500 Subject: [PATCH 70/82] update plot-schema --- test/plot-schema.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index e3d2dcbc40e..98f4e213a9b 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3600,6 +3600,7 @@ "description": "Sets padding between edge of label and xanchor / yanchor.", "dflt": 3, "editType": "none", + "min": 0, "valType": "number" }, "role": "object", @@ -3610,7 +3611,8 @@ "valType": "string" }, "textangle": { - "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, the default textangle is `auto`, which displays the text at the same angle as the line. For all other shapes, the default textangle is 0 (horizontal).", + "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle `auto` is the same angle as the line. For all other shapes, angle `auto` is horizontal.", + "dflt": "auto", "editType": "none", "valType": "angle" }, @@ -7219,6 +7221,7 @@ "description": "Sets padding between edge of label and xanchor / yanchor.", "dflt": 3, "editType": "arraydraw", + "min": 0, "valType": "number" }, "role": "object", @@ -7229,7 +7232,8 @@ "valType": "string" }, "textangle": { - "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, the default textangle is `auto`, which displays the text at the same angle as the line. For all other shapes, the default textangle is 0 (horizontal).", + "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle `auto` is the same angle as the line. For all other shapes, angle `auto` is horizontal.", + "dflt": "auto", "editType": "calc+arraydraw", "valType": "angle" }, From ffea9624ea356fa3fac1217d70a75f1f0087c667 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 6 Mar 2023 11:06:25 -0500 Subject: [PATCH 71/82] docstring: specify padding is in px --- src/components/shapes/attributes.js | 2 +- src/components/shapes/draw_newshape/attributes.js | 2 +- test/plot-schema.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 326d2d78d28..8a6acd0f294 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -301,7 +301,7 @@ module.exports = templatedArray('shape', { dflt: 3, min: 0, editType: 'arraydraw', - description: 'Sets padding between edge of label and xanchor / yanchor.' + description: 'Sets padding (in px) between edge of label and xanchor / yanchor.' }, editType: 'arraydraw' }, diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index a9543d8b575..a27127d4bbf 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -154,7 +154,7 @@ module.exports = { dflt: 3, min: 0, editType: 'none', - description: 'Sets padding between edge of label and xanchor / yanchor.' + description: 'Sets padding (in px) between edge of label and xanchor / yanchor.' }, editType: 'none' }, diff --git a/test/plot-schema.json b/test/plot-schema.json index 98f4e213a9b..c15dcdf55e0 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3597,7 +3597,7 @@ } }, "padding": { - "description": "Sets padding between edge of label and xanchor / yanchor.", + "description": "Sets padding (in px) between edge of label and xanchor / yanchor.", "dflt": 3, "editType": "none", "min": 0, @@ -7218,7 +7218,7 @@ } }, "padding": { - "description": "Sets padding between edge of label and xanchor / yanchor.", + "description": "Sets padding (in px) between edge of label and xanchor / yanchor.", "dflt": 3, "editType": "arraydraw", "min": 0, From ebe85c455cad31114669354a7c3d642487fd2d9c Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 6 Mar 2023 11:35:03 -0500 Subject: [PATCH 72/82] calculate textangle sin and cos only once --- src/components/shapes/draw.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 5eb7c5aad09..39949ce57af 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -734,6 +734,8 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu var textPadding = shapeOptions.label.padding; var shapeType = shapeOptions.type; var textAngleRad = Math.PI / 180 * actualTextAngle; + var sinA = Math.sin(textAngleRad); + var cosA = Math.cos(textAngleRad); var xanchor = shapeOptions.label.xanchor; var yanchor = shapeOptions.label.yanchor; @@ -788,8 +790,8 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu if(textAngle === 'auto') { // Set direction to apply padding (based on `yanchor` only) var paddingDirection = paddingConstantsY[yanchor]; - paddingX = -textPadding * Math.sin(textAngleRad) * paddingDirection; - paddingY = textPadding * Math.cos(textAngleRad) * paddingDirection; + paddingX = -textPadding * sinA * paddingDirection; + paddingY = textPadding * cosA * paddingDirection; } else { // Set direction to apply padding (based on `xanchor` and `yanchor`) var paddingDirectionX = paddingConstantsX[xanchor]; @@ -837,8 +839,8 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu // Adjust so that text is anchored at top of first line rather than at baseline of first line var baselineAdjust = shapeOptions.label.font.size; var textHeight = textBB.height; - var xshift = (textHeight * shiftFraction - baselineAdjust) * Math.sin(textAngleRad); - var yshift = -(textHeight * shiftFraction - baselineAdjust) * Math.cos(textAngleRad); + var xshift = (textHeight * shiftFraction - baselineAdjust) * sinA; + var yshift = -(textHeight * shiftFraction - baselineAdjust) * cosA; return { textx: textx + xshift, texty: texty + yshift, xanchor: xanchor }; } From d113bcf4db9eeb5d6c82275b3abce03ea8dbdeed Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 6 Mar 2023 13:20:44 -0500 Subject: [PATCH 73/82] docstring updates --- src/components/shapes/attributes.js | 2 +- src/components/shapes/draw_newshape/attributes.js | 12 ++++++------ test/plot-schema.json | 14 +++++++------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 8a6acd0f294..99d32919257 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -301,7 +301,7 @@ module.exports = templatedArray('shape', { dflt: 3, min: 0, editType: 'arraydraw', - description: 'Sets padding (in px) between edge of label and xanchor / yanchor.' + description: 'Sets padding (in px) between edge of label and edge of shape.' }, editType: 'arraydraw' }, diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index a27127d4bbf..a3dee781f05 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -84,11 +84,11 @@ module.exports = { valType: 'string', dflt: '', editType: 'none', - description: 'Sets the text to display with shape.' + description: 'Sets the text to display with the new shape.' }, font: fontAttrs({ editType: 'none', - description: 'Sets the shape label text font.' + description: 'Sets the new shape label text font.' }), textposition: { valType: 'enumerated', @@ -100,7 +100,7 @@ module.exports = { ], editType: 'none', description: [ - 'Sets the position of the label text relative to the shape.', + 'Sets the position of the label text relative to the new shape.', 'Supported values for rectangles, circles and paths are', '`top left`, `top center`, `top right`, `middle left`,', '`middle center`, `middle right`, `bottom left`, `bottom center`,', @@ -132,7 +132,7 @@ module.exports = { 'For example, if `label.textposition` is set to *top right* and', '`xanchor` to *right* then the right-most portion of the', 'label text lines up with the right-most edge of the', - 'shape.', + 'new shape.', ].join(' '), }, yanchor: { @@ -146,7 +146,7 @@ module.exports = { 'For example, if `label.textposition` is set to *top right* and', '`yanchor` to *top* then the top-most portion of the', 'label text lines up with the top-most edge of the', - 'shape.', + 'new shape.', ].join(' ') }, padding: { @@ -154,7 +154,7 @@ module.exports = { dflt: 3, min: 0, editType: 'none', - description: 'Sets padding (in px) between edge of label and xanchor / yanchor.' + description: 'Sets padding (in px) between edge of label and edge of new shape.' }, editType: 'none' }, diff --git a/test/plot-schema.json b/test/plot-schema.json index c15dcdf55e0..06657818da4 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3580,7 +3580,7 @@ "editType": "none", "valType": "color" }, - "description": "Sets the shape label text font.", + "description": "Sets the new shape label text font.", "editType": "none", "family": { "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", @@ -3597,7 +3597,7 @@ } }, "padding": { - "description": "Sets padding (in px) between edge of label and xanchor / yanchor.", + "description": "Sets padding (in px) between edge of label and edge of new shape.", "dflt": 3, "editType": "none", "min": 0, @@ -3605,7 +3605,7 @@ }, "role": "object", "text": { - "description": "Sets the text to display with shape.", + "description": "Sets the text to display with the new shape.", "dflt": "", "editType": "none", "valType": "string" @@ -3617,7 +3617,7 @@ "valType": "angle" }, "textposition": { - "description": "Sets the position of the label text relative to the shape. Supported values for rectangles, circles and paths are `top left`, `top center`, `top right`, `middle left`, `middle center`, `middle right`, `bottom left`, `bottom center`, and `bottom right`. Supported values for lines are `start`, `middle`, and `end`. Default: `middle center` for rectangles, circles, and paths; `middle` for lines.", + "description": "Sets the position of the label text relative to the new shape. Supported values for rectangles, circles and paths are `top left`, `top center`, `top right`, `middle left`, `middle center`, `middle right`, `bottom left`, `bottom center`, and `bottom right`. Supported values for lines are `start`, `middle`, and `end`. Default: `middle center` for rectangles, circles, and paths; `middle` for lines.", "editType": "none", "valType": "enumerated", "values": [ @@ -3636,7 +3636,7 @@ ] }, "xanchor": { - "description": "Sets the label's horizontal position anchor This anchor binds the specified `label.textposition` to the *left*, *center* or *right* of the label text. For example, if `label.textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the shape.", + "description": "Sets the label's horizontal position anchor This anchor binds the specified `label.textposition` to the *left*, *center* or *right* of the label text. For example, if `label.textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the new shape.", "dflt": "auto", "editType": "none", "valType": "enumerated", @@ -3648,7 +3648,7 @@ ] }, "yanchor": { - "description": "Sets the label's vertical position anchor This anchor binds the specified `label.textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `label.textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the shape.", + "description": "Sets the label's vertical position anchor This anchor binds the specified `label.textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `label.textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the new shape.", "editType": "none", "valType": "enumerated", "values": [ @@ -7218,7 +7218,7 @@ } }, "padding": { - "description": "Sets padding (in px) between edge of label and xanchor / yanchor.", + "description": "Sets padding (in px) between edge of label and edge of shape.", "dflt": 3, "editType": "arraydraw", "min": 0, From c703c119e934b1ac34cdba75dbf06065ea00cf41 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Mon, 6 Mar 2023 13:37:09 -0500 Subject: [PATCH 74/82] simplify dfltYanchor implementation --- src/components/shapes/defaults.js | 19 ++++++------------- .../shapes/draw_newshape/defaults.js | 19 ++++++------------- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index 158bbc9fb0c..79163ae2d09 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -16,19 +16,12 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { }; function dfltLabelYanchor(isLine, labelTextPosition) { - var dfltYanchor; - if(isLine) { - dfltYanchor = 'bottom'; - } else { - if(labelTextPosition.indexOf('top') !== -1) { - dfltYanchor = 'top'; - } else if(labelTextPosition.indexOf('bottom') !== -1) { - dfltYanchor = 'bottom'; - } else { - dfltYanchor = 'middle'; - } - } - return dfltYanchor; + // If shape is a line, default y-anchor is 'bottom' (so that text is above line by default) + // Otherwise, default y-anchor is equal to y-component of `textposition` + // (so that text is positioned inside shape bounding box by default) + return isLine ? 'bottom' : + labelTextPosition.indexOf('top') !== -1 ? 'top' : + labelTextPosition.indexOf('bottom') !== -1 ? 'bottom' : 'middle'; } function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { diff --git a/src/components/shapes/draw_newshape/defaults.js b/src/components/shapes/draw_newshape/defaults.js index b33e8bbe32b..059688c9986 100644 --- a/src/components/shapes/draw_newshape/defaults.js +++ b/src/components/shapes/draw_newshape/defaults.js @@ -5,19 +5,12 @@ var Lib = require('../../../lib'); function dfltLabelYanchor(isLine, labelTextPosition) { - var dfltYanchor; - if(isLine) { - dfltYanchor = 'bottom'; - } else { - if(labelTextPosition.indexOf('top') !== -1) { - dfltYanchor = 'top'; - } else if(labelTextPosition.indexOf('bottom') !== -1) { - dfltYanchor = 'bottom'; - } else { - dfltYanchor = 'middle'; - } - } - return dfltYanchor; + // If shape is a line, default y-anchor is 'bottom' (so that text is above line by default) + // Otherwise, default y-anchor is equal to y-component of `textposition` + // (so that text is positioned inside shape bounding box by default) + return isLine ? 'bottom' : + labelTextPosition.indexOf('top') !== -1 ? 'top' : + labelTextPosition.indexOf('bottom') !== -1 ? 'bottom' : 'middle'; } module.exports = function supplyDrawNewShapeDefaults(layoutIn, layoutOut, coerce) { From 468363e4c0aaf7d43f1b40091853002c19deee64 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 9 Mar 2023 11:02:40 -0500 Subject: [PATCH 75/82] change temp render logic --- src/components/shapes/draw.js | 39 +++++++++++++---------------------- 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 39949ce57af..d26057e0e39 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -678,18 +678,13 @@ function drawLabel(gd, index, options, shapeGroup) { } } - // Do a fake render so we can get the text bounding box height - var _labelText = labelGroup.append('text') - .attr(labelTextAttrs) - .classed('shape-label-text', true) - .text(text); - _labelText.call(function(s) { + // Do an initial render so we can get the text bounding box height + labelText.call(function(s) { s.call(Drawing.font, font).attr({}); svgTextUtils.convertToTspans(s, gd); return s; }); - var textBB = Drawing.bBox(_labelText.node()); - _labelText.remove(); + var textBB = Drawing.bBox(labelText.node()); // Calculate correct (x,y) for text // We also determine true xanchor since xanchor depends on position when set to 'auto' @@ -698,23 +693,17 @@ function drawLabel(gd, index, options, shapeGroup) { var texty = textPos.texty; var xanchor = textPos.xanchor; - function textLayout(s) { - s.call(Drawing.font, font) - .attr({ - 'text-anchor': { - left: 'start', - center: 'middle', - right: 'end' - }[xanchor], - 'y': texty, - 'x': textx, - 'transform': 'rotate(' + textangle + ',' + textx + ',' + texty + ')' - }); - svgTextUtils.convertToTspans(s, gd); - return s; - } - - labelText.call(textLayout); + // Update (x,y) position, xanchor, and angle + labelText.attr({ + 'text-anchor': { + left: 'start', + center: 'middle', + right: 'end' + }[xanchor], + 'y': texty, + 'x': textx, + 'transform': 'rotate(' + textangle + ',' + textx + ',' + texty + ')' + }).call(svgTextUtils.positionText, textx, texty); } function calcTextAngle(shapex0, shapey0, shapex1, shapey1) { From cdf2d37b9cf45598957263dbb0e69e630c89354a Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Wed, 8 Mar 2023 11:20:35 -0500 Subject: [PATCH 76/82] update shape label while editing an editable shape --- src/components/shapes/display_outlines.js | 2 +- src/components/shapes/draw.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/shapes/display_outlines.js b/src/components/shapes/display_outlines.js index deae80a5291..6f19980ed82 100644 --- a/src/components/shapes/display_outlines.js +++ b/src/components/shapes/display_outlines.js @@ -36,7 +36,7 @@ module.exports = function displayOutlines(polygons, outlines, dragOptions, nCall // recursive call displayOutlines(polygons, outlines, dragOptions, nCalls++); - if(pointsOnEllipse(polygons[0])) { + if(pointsOnEllipse(polygons[0]) || dragOptions.hasText) { update({redrawing: true}); } } diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index d26057e0e39..33574f85b20 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -168,6 +168,7 @@ function drawOne(gd, index) { plotinfo: plotinfo, gd: gd, editHelpers: editHelpers, + hasText: options.label.text, isActiveShape: true // i.e. to enable controllers }; From 9eb7c900ba4f8092e94501ddcb5f8b7fcf15942b Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 9 Mar 2023 12:53:10 -0500 Subject: [PATCH 77/82] test label behavior for draw_newshape --- test/jasmine/tests/draw_newshape_test.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/jasmine/tests/draw_newshape_test.js b/test/jasmine/tests/draw_newshape_test.js index e013fd902f1..e4a5dd37f99 100644 --- a/test/jasmine/tests/draw_newshape_test.js +++ b/test/jasmine/tests/draw_newshape_test.js @@ -3,6 +3,7 @@ var parseSvgPath = require('parse-svg-path'); var Plotly = require('../../../lib/index'); var Lib = require('../../../src/lib'); +var d3Select = require('../../strict-d3').select; var d3SelectAll = require('../../strict-d3').selectAll; var createGraphDiv = require('../assets/create_graph_div'); var destroyGraphDiv = require('../assets/destroy_graph_div'); @@ -840,6 +841,7 @@ describe('Draw new shapes to layout', function() { var newFig = Lib.extendFlat({}, fig); newFig.layout.dragmode = 'drawline'; + newFig.layout.newshape = { label: { text: 'Shape label' } }; return Plotly.react(gd, newFig); }) @@ -851,6 +853,11 @@ describe('Draw new shapes to layout', function() { expect(shapes.length).toEqual(++n); var obj = shapes[n - 1]._input; expect(obj.type).toEqual('line'); + expect( + d3Select('.shape-group[data-index="' + (n - 1) + '"]') + .select('text') + .text() + ).toEqual('Shape label'); print(obj); mockItem.testPos[n - 1]({ x0: obj.x0, From 3d2c79205104857d12ea009f5e0fe4b175779741 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 9 Mar 2023 14:13:21 -0500 Subject: [PATCH 78/82] update docstring formatting --- src/components/shapes/attributes.js | 22 +++++++++---------- .../shapes/draw_newshape/attributes.js | 22 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 99d32919257..63aa765f046 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -249,11 +249,11 @@ module.exports = templatedArray('shape', { description: [ 'Sets the position of the label text relative to the shape.', 'Supported values for rectangles, circles and paths are', - '`top left`, `top center`, `top right`, `middle left`,', - '`middle center`, `middle right`, `bottom left`, `bottom center`,', - 'and `bottom right`.', - 'Supported values for lines are `start`, `middle`, and `end`.', - 'Default: `middle center` for rectangles, circles, and paths; `middle` for lines.', + '*top left*, *top center*, *top right*, *middle left*,', + '*middle center*, *middle right*, *bottom left*, *bottom center*,', + 'and *bottom right*.', + 'Supported values for lines are *start*, *middle*, and *end*.', + 'Default: *middle center* for rectangles, circles, and paths; *middle* for lines.', ].join(' ') }, textangle: { @@ -262,9 +262,9 @@ module.exports = templatedArray('shape', { editType: 'calc+arraydraw', description: [ 'Sets the angle at which the label text is drawn', - 'with respect to the horizontal. For lines, angle `auto`', + 'with respect to the horizontal. For lines, angle *auto*', 'is the same angle as the line. For all other shapes,', - 'angle `auto` is horizontal.' + 'angle *auto* is horizontal.' ].join(' ') }, xanchor: { @@ -274,9 +274,9 @@ module.exports = templatedArray('shape', { editType: 'calc+arraydraw', description: [ 'Sets the label\'s horizontal position anchor', - 'This anchor binds the specified `label.textposition` to the *left*, *center*', + 'This anchor binds the specified `textposition` to the *left*, *center*', 'or *right* of the label text.', - 'For example, if `label.textposition` is set to *top right* and', + 'For example, if `textposition` is set to *top right* and', '`xanchor` to *right* then the right-most portion of the', 'label text lines up with the right-most edge of the', 'shape.', @@ -288,9 +288,9 @@ module.exports = templatedArray('shape', { editType: 'calc+arraydraw', description: [ 'Sets the label\'s vertical position anchor', - 'This anchor binds the specified `label.textposition` to the *top*, *middle*', + 'This anchor binds the specified `textposition` to the *top*, *middle*', 'or *bottom* of the label text.', - 'For example, if `label.textposition` is set to *top right* and', + 'For example, if `textposition` is set to *top right* and', '`yanchor` to *top* then the top-most portion of the', 'label text lines up with the top-most edge of the', 'shape.', diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index a3dee781f05..55fe1eef890 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -102,11 +102,11 @@ module.exports = { description: [ 'Sets the position of the label text relative to the new shape.', 'Supported values for rectangles, circles and paths are', - '`top left`, `top center`, `top right`, `middle left`,', - '`middle center`, `middle right`, `bottom left`, `bottom center`,', - 'and `bottom right`.', - 'Supported values for lines are `start`, `middle`, and `end`.', - 'Default: `middle center` for rectangles, circles, and paths; `middle` for lines.', + '*top left*, *top center*, *top right*, *middle left*,', + '*middle center*, *middle right*, *bottom left*, *bottom center*,', + 'and *bottom right*.', + 'Supported values for lines are *start*, *middle*, and *end*.', + 'Default: *middle center* for rectangles, circles, and paths; *middle* for lines.', ].join(' ') }, textangle: { @@ -115,9 +115,9 @@ module.exports = { editType: 'none', description: [ 'Sets the angle at which the label text is drawn', - 'with respect to the horizontal. For lines, angle `auto`', + 'with respect to the horizontal. For lines, angle *auto*', 'is the same angle as the line. For all other shapes,', - 'angle `auto` is horizontal.' + 'angle *auto* is horizontal.' ].join(' ') }, xanchor: { @@ -127,9 +127,9 @@ module.exports = { editType: 'none', description: [ 'Sets the label\'s horizontal position anchor', - 'This anchor binds the specified `label.textposition` to the *left*, *center*', + 'This anchor binds the specified `textposition` to the *left*, *center*', 'or *right* of the label text.', - 'For example, if `label.textposition` is set to *top right* and', + 'For example, if `textposition` is set to *top right* and', '`xanchor` to *right* then the right-most portion of the', 'label text lines up with the right-most edge of the', 'new shape.', @@ -141,9 +141,9 @@ module.exports = { editType: 'none', description: [ 'Sets the label\'s vertical position anchor', - 'This anchor binds the specified `label.textposition` to the *top*, *middle*', + 'This anchor binds the specified `textposition` to the *top*, *middle*', 'or *bottom* of the label text.', - 'For example, if `label.textposition` is set to *top right* and', + 'For example, if `textposition` is set to *top right* and', '`yanchor` to *top* then the top-most portion of the', 'label text lines up with the top-most edge of the', 'new shape.', From 394555c17cf6392d75fcee6a8f52d8c469c93bbe Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 9 Mar 2023 14:26:30 -0500 Subject: [PATCH 79/82] update plot-schema --- test/plot-schema.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 06657818da4..2db7d1ed584 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3611,13 +3611,13 @@ "valType": "string" }, "textangle": { - "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle `auto` is the same angle as the line. For all other shapes, angle `auto` is horizontal.", + "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal.", "dflt": "auto", "editType": "none", "valType": "angle" }, "textposition": { - "description": "Sets the position of the label text relative to the new shape. Supported values for rectangles, circles and paths are `top left`, `top center`, `top right`, `middle left`, `middle center`, `middle right`, `bottom left`, `bottom center`, and `bottom right`. Supported values for lines are `start`, `middle`, and `end`. Default: `middle center` for rectangles, circles, and paths; `middle` for lines.", + "description": "Sets the position of the label text relative to the new shape. Supported values for rectangles, circles and paths are *top left*, *top center*, *top right*, *middle left*, *middle center*, *middle right*, *bottom left*, *bottom center*, and *bottom right*. Supported values for lines are *start*, *middle*, and *end*. Default: *middle center* for rectangles, circles, and paths; *middle* for lines.", "editType": "none", "valType": "enumerated", "values": [ @@ -3636,7 +3636,7 @@ ] }, "xanchor": { - "description": "Sets the label's horizontal position anchor This anchor binds the specified `label.textposition` to the *left*, *center* or *right* of the label text. For example, if `label.textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the new shape.", + "description": "Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the new shape.", "dflt": "auto", "editType": "none", "valType": "enumerated", @@ -3648,7 +3648,7 @@ ] }, "yanchor": { - "description": "Sets the label's vertical position anchor This anchor binds the specified `label.textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `label.textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the new shape.", + "description": "Sets the label's vertical position anchor This anchor binds the specified `textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the new shape.", "editType": "none", "valType": "enumerated", "values": [ @@ -7232,13 +7232,13 @@ "valType": "string" }, "textangle": { - "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle `auto` is the same angle as the line. For all other shapes, angle `auto` is horizontal.", + "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal.", "dflt": "auto", "editType": "calc+arraydraw", "valType": "angle" }, "textposition": { - "description": "Sets the position of the label text relative to the shape. Supported values for rectangles, circles and paths are `top left`, `top center`, `top right`, `middle left`, `middle center`, `middle right`, `bottom left`, `bottom center`, and `bottom right`. Supported values for lines are `start`, `middle`, and `end`. Default: `middle center` for rectangles, circles, and paths; `middle` for lines.", + "description": "Sets the position of the label text relative to the shape. Supported values for rectangles, circles and paths are *top left*, *top center*, *top right*, *middle left*, *middle center*, *middle right*, *bottom left*, *bottom center*, and *bottom right*. Supported values for lines are *start*, *middle*, and *end*. Default: *middle center* for rectangles, circles, and paths; *middle* for lines.", "editType": "arraydraw", "valType": "enumerated", "values": [ @@ -7257,7 +7257,7 @@ ] }, "xanchor": { - "description": "Sets the label's horizontal position anchor This anchor binds the specified `label.textposition` to the *left*, *center* or *right* of the label text. For example, if `label.textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the shape.", + "description": "Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the shape.", "dflt": "auto", "editType": "calc+arraydraw", "valType": "enumerated", @@ -7269,7 +7269,7 @@ ] }, "yanchor": { - "description": "Sets the label's vertical position anchor This anchor binds the specified `label.textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `label.textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the shape.", + "description": "Sets the label's vertical position anchor This anchor binds the specified `textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the shape.", "editType": "calc+arraydraw", "valType": "enumerated", "values": [ From eaf270d1d77bb5aff44085a2bd9e9c09322d7117 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 9 Mar 2023 14:27:08 -0500 Subject: [PATCH 80/82] add draft log --- draftlogs/6454_add.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 draftlogs/6454_add.md diff --git a/draftlogs/6454_add.md b/draftlogs/6454_add.md new file mode 100644 index 00000000000..ea4db52f799 --- /dev/null +++ b/draftlogs/6454_add.md @@ -0,0 +1,2 @@ + - Add `label` attribute to shapes [[#6454](https://github.com/plotly/plotly.js/pull/6454)], with thanks to +the [Volkswagen](https://www.volkswagenag.com) Center of Excellence for Battery Cells for sponsoring development of this feature! \ No newline at end of file From 095561f2e27de27f92dd00fabb45eb916fb6aeec Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Thu, 9 Mar 2023 14:32:10 -0500 Subject: [PATCH 81/82] update draft log --- draftlogs/6454_add.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draftlogs/6454_add.md b/draftlogs/6454_add.md index ea4db52f799..110e69f65c5 100644 --- a/draftlogs/6454_add.md +++ b/draftlogs/6454_add.md @@ -1,2 +1,2 @@ - Add `label` attribute to shapes [[#6454](https://github.com/plotly/plotly.js/pull/6454)], with thanks to -the [Volkswagen](https://www.volkswagenag.com) Center of Excellence for Battery Cells for sponsoring development of this feature! \ No newline at end of file +the [Volkswagen](https://www.volkswagenag.com) Center of Excellence for Battery Cells for sponsoring development! \ No newline at end of file From d927b6a20dd8c55ed908938b2f5482b74981b776 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Fri, 10 Mar 2023 10:24:32 -0500 Subject: [PATCH 82/82] run linter --- src/components/shapes/draw.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index b74006d1e6b..6c61f68c960 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -701,9 +701,9 @@ function drawLabel(gd, index, options, shapeGroup) { center: 'middle', right: 'end' }[xanchor], - 'y': texty, - 'x': textx, - 'transform': 'rotate(' + textangle + ',' + textx + ',' + texty + ')' + y: texty, + x: textx, + transform: 'rotate(' + textangle + ',' + textx + ',' + texty + ')' }).call(svgTextUtils.positionText, textx, texty); }

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≤N3EG!ojy*J%44G!SgBKm#TTeDL}QJ5qf* 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 literal 0 HcmV?d00001 From d50da33155d4c10f39fa1fbb8349f3febf64c130 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Tue, 28 Feb 2023 20:52:08 -0500 Subject: [PATCH 50/82] fix circular dependency --- .../shapes/draw_newshape/attributes.js | 20 +++++++++++++------ test/plot-schema.json | 7 ++++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index 4ac3eacb89c..a36d865b591 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -1,7 +1,6 @@ 'use strict'; var fontAttrs = require('../../../plots/font_attributes'); -var annAttrs = require('../../annotations/attributes'); var dash = require('../../drawing/attributes').dash; var extendFlat = require('../../../lib/extend').extendFlat; @@ -102,7 +101,7 @@ module.exports = { }, textangle: { valType: 'angle', - editType: 'calc+arraydraw', + editType: 'none', description: [ 'Sets the angle at which the label text is drawn', 'with respect to the horizontal. For lines, the default textangle is `auto`,', @@ -110,15 +109,24 @@ module.exports = { 'the default textangle is 0 (horizontal).' ].join(' ') }, - xanchor: extendFlat({}, annAttrs.xanchor, { + xanchor: { + valType: 'enumerated', + values: ['auto', 'left', 'center', 'right'], + dflt: 'auto', + editType: 'none', description: 'Sets the text box\'s horizontal position anchor.', - }), - yanchor: extendFlat({}, annAttrs.yanchor, { + }, + yanchor: { + valType: 'enumerated', + values: ['auto', 'top', 'middle', 'bottom'], + dflt: 'auto', + editType: 'none', description: 'Sets the text box\'s vertical position anchor.', - }), + }, padding: { valType: 'number', dflt: 3, + editType: 'none', description: 'Sets padding between edge of label and xanchor / yanchor.' }, }, diff --git a/test/plot-schema.json b/test/plot-schema.json index 274a50f57c7..42f706d43a6 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3598,6 +3598,7 @@ "padding": { "description": "Sets padding between edge of label and xanchor / yanchor.", "dflt": 3, + "editType": "none", "valType": "number" }, "role": "object", @@ -3608,7 +3609,7 @@ }, "textangle": { "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, the default textangle is `auto`, which displays the text at the same angle as the line. For all other shapes, the default textangle is 0 (horizontal).", - "editType": "calc+arraydraw", + "editType": "none", "valType": "angle" }, "textposition": { @@ -3632,7 +3633,7 @@ "xanchor": { "description": "Sets the text box's horizontal position anchor.", "dflt": "auto", - "editType": "calc+arraydraw", + "editType": "none", "valType": "enumerated", "values": [ "auto", @@ -3644,7 +3645,7 @@ "yanchor": { "description": "Sets the text box's vertical position anchor.", "dflt": "auto", - "editType": "calc+arraydraw", + "editType": "none", "valType": "enumerated", "values": [ "auto", From 8cec651347d274df0450977374435c1ca1751439 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Tue, 28 Feb 2023 21:05:31 -0500 Subject: [PATCH 51/82] set newshape label editType --- src/components/shapes/draw_newshape/attributes.js | 1 + test/plot-schema.json | 1 + 2 files changed, 2 insertions(+) diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index a36d865b591..b03db9cdc55 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -129,6 +129,7 @@ module.exports = { editType: 'none', description: 'Sets padding between edge of label and xanchor / yanchor.' }, + editType: 'none' }, editType: 'none' }, diff --git a/test/plot-schema.json b/test/plot-schema.json index 42f706d43a6..1709ff728b5 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3574,6 +3574,7 @@ ] }, "label": { + "editType": "none", "font": { "color": { "editType": "calc+arraydraw", From 36771a82c1429fe71839ba4d9866c742b70eb5ff Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 28 Feb 2023 21:08:09 -0500 Subject: [PATCH 52/82] change default xanchor and yanchor behavior --- src/components/shapes/attributes.js | 15 ++++++++--- src/components/shapes/defaults.js | 26 +++++++++++++++--- src/components/shapes/draw.js | 41 +++++++++++++++++------------ 3 files changed, 58 insertions(+), 24 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index b49338cdf78..5cc70e44f85 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -258,12 +258,19 @@ module.exports = templatedArray('shape', { 'the default textangle is 0 (horizontal).' ].join(' ') }, - xanchor: extendFlat({}, annAttrs.xanchor, { + xanchor: { + valType: 'enumerated', + values: ['auto', 'left', 'center', 'right'], + dflt: 'auto', + editType: 'calc+arraydraw', description: 'Sets the text box\'s horizontal position anchor.', - }), - yanchor: extendFlat({}, annAttrs.yanchor, { + }, + yanchor: { + valType: 'enumerated', + values: ['top', 'middle', 'bottom'], + editType: 'calc+arraydraw', description: 'Sets the text box\'s vertical position anchor.', - }), + }, padding: { valType: 'number', dflt: 3, diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index a20e10b3634..ed1dfa9d0bb 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -15,6 +15,22 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { }); }; +function dfltLabelYanchor(shapeType, labelTextPosition) { + var dfltYanchor; + if(shapeType === 'line') { + dfltYanchor = 'bottom'; + } else { + if(labelTextPosition.indexOf('top') !== -1) { + dfltYanchor = 'top'; + } else if(labelTextPosition.indexOf('bottom') !== -1) { + dfltYanchor = 'bottom'; + } else { + dfltYanchor = 'middle'; + } + } + return dfltYanchor; +} + function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { function coerce(attr, dflt) { return Lib.coerce(shapeIn, shapeOut, attributes, attr, dflt); @@ -119,10 +135,14 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { // Label options coerce('label.text'); - coerce('label.xanchor'); - coerce('label.yanchor'); coerce('label.textangle', shapeType === 'line' ? 'auto' : 0); - coerce('label.textposition', shapeType === 'line' ? 'middle' : 'middle center'); + var labelTextPosition = coerce( + 'label.textposition', + shapeType === 'line' ? 'middle' : 'middle center' + ); + coerce('label.xanchor'); + // Default yanchor value depends on shape type and label textposition + coerce('label.yanchor', dfltLabelYanchor(shapeType, labelTextPosition)); coerce('label.padding'); Lib.coerceFont(coerce, 'label.font', fullLayout.font); } diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 40b318f80d2..19eccb684ee 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -731,6 +731,7 @@ function calcTextAngle(shapex0, shapey0, shapex1, shapey1) { function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actualTextAngle, textBB) { var textPosition = shapeOptions.label.textposition; + var textAngle = shapeOptions.label.textangle; var textPadding = shapeOptions.label.padding; var shapeType = shapeOptions.type; var textAngleRad = Math.PI / 180 * actualTextAngle; @@ -745,24 +746,27 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu if(textPosition.indexOf('start') !== -1) { textx = shapex0; texty = shapey0; - if(xanchor === 'auto') xanchor = (shapex1 >= shapex0) ? 'right' : 'left'; + if(xanchor === 'auto') { + if(textAngle === 'auto') xanchor = (shapex1 >= shapex0) ? 'left' : 'right'; + else xanchor = (shapex1 >= shapex0) ? 'right' : 'left'; + } } else if(textPosition.indexOf('end') !== -1) { textx = shapex1; texty = shapey1; - if(xanchor === 'auto') xanchor = (shapex1 >= shapex0) ? 'left' : 'right'; + if(xanchor === 'auto') { + if(textAngle === 'auto') xanchor = (shapex1 >= shapex0) ? 'right' : 'left'; + else xanchor = (shapex1 >= shapex0) ? 'left' : 'right'; + } } else { // Default: center textx = (shapex0 + shapex1) / 2; texty = (shapey0 + shapey1) / 2; if(xanchor === 'auto') xanchor = 'center'; } - // Default yanchor is 'bottom' for lines (should handle in defaults.js) - if(yanchor === 'auto') yanchor = 'bottom'; - // Special case for padding when angle is 'auto' for lines // Padding should be treated as an orthogonal offset in this case // Otherwise, padding is just a simple x and y offset - if(shapeOptions.label.textangle === 'auto') { + if(textAngle === 'auto') { // Set direction to apply padding (based on `yanchor` only) var paddingDirection = { bottom: 1, middle: 0, top: -1 }[yanchor]; paddingX = textPadding * Math.sin(textAngleRad) * paddingDirection; @@ -782,27 +786,30 @@ function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actu // Horizontal needs a little extra padding to look balanced paddingX = textPadding + 3; if(textPosition.indexOf('right') !== -1) { - textx = Math.max(shapex0, shapex1) + paddingX; - if(xanchor === 'auto') xanchor = 'left'; - } else if(textPosition.indexOf('left') !== -1) { - textx = Math.min(shapex0, shapex1) - paddingX; + textx = Math.max(shapex0, shapex1) - paddingX; if(xanchor === 'auto') xanchor = 'right'; + } else if(textPosition.indexOf('left') !== -1) { + textx = Math.min(shapex0, shapex1) + paddingX; + if(xanchor === 'auto') xanchor = 'left'; } else { // Default: center textx = (shapex0 + shapex1) / 2; if(xanchor === 'auto') xanchor = 'center'; } // calc vertical position - paddingY = textPadding; if(textPosition.indexOf('top') !== -1) { - texty = Math.min(shapey0, shapey1) - paddingY; - if(yanchor === 'auto') yanchor = 'bottom'; + texty = Math.min(shapey0, shapey1); } else if(textPosition.indexOf('bottom') !== -1) { - texty = Math.max(shapey0, shapey1) + paddingY; - if(yanchor === 'auto') yanchor = 'top'; - } else { // Default: middle + texty = Math.max(shapey0, shapey1); + } else { texty = (shapey0 + shapey1) / 2; - if(yanchor === 'auto') yanchor = 'middle'; + } + // Apply padding + paddingY = textPadding; + if(yanchor === 'bottom') { + texty = texty - paddingY; + } else if(yanchor === 'top') { + texty = texty + paddingY; } } From 3f9727ab836dfdfadb1025c5f2403e86ef315459 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 28 Feb 2023 21:09:12 -0500 Subject: [PATCH 53/82] update mocks --- test/image/mocks/zz-text_on_shapes_basic.json | 3 +- .../mocks/zz-text_on_shapes_position.json | 66 +++++++++---------- 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/test/image/mocks/zz-text_on_shapes_basic.json b/test/image/mocks/zz-text_on_shapes_basic.json index 501b9262662..0918a6a94bf 100644 --- a/test/image/mocks/zz-text_on_shapes_basic.json +++ b/test/image/mocks/zz-text_on_shapes_basic.json @@ -18,7 +18,8 @@ {"label":{"text":"xanchor right, position not set
two lines", "xanchor":"right", "padding": 10, "font": {"family":"Courier New, monospace", "size":20}}, "xref":"paper","yref":"paper","type":"line","x0":0.8,"x1":0.9,"y0":0.8,"y1":0.9}, {"label":{"text":"position auto, xanchor center, angle -30", "xanchor":"center", "textangle":-30}, "layer":"below","x0":2,"x1":3,"y0":7,"y1":9.5,"opacity":0.5,"fillcolor":"#05e","line":{"width":3,"color":"#025","dash":"dashdot"}}, {"label":{"text":"position auto, yanchor top", "yanchor": "top"}, "yref":"paper","type":"line","x0":1.1,"x1":2.4,"y0":0.1,"y1":0.4,"line":{"color":"#039","dash":"dot","width":2}}, - {"label":{"text":"position auto, xanchor center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"} + {"label":{"text":"position auto, xanchor center", "xanchor":"center"}, "xref":"paper","x0":0.8,"x1":0.9,"y0":1,"y1":3,"fillcolor":"#ccc"}, + {"label":{"text":"position end", "textposition": "end"}, "yref":"paper","type":"line","x0":4.1,"x1":6.4,"y0":0.2,"y1":0.0,"line":{"color":"#339","width":3}} ] }, "config": { diff --git a/test/image/mocks/zz-text_on_shapes_position.json b/test/image/mocks/zz-text_on_shapes_position.json index ca6967552c6..3969f334971 100644 --- a/test/image/mocks/zz-text_on_shapes_position.json +++ b/test/image/mocks/zz-text_on_shapes_position.json @@ -12,50 +12,50 @@ "margin": {"l":20,"r":20,"pad":0}, "showlegend":false, "shapes":[ - {"label":{"text":"top left", "textposition": "top left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":90,"y1":95,"fillcolor":"#ccc"}, - {"label":{"text":"top center", "textposition": "top center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":90,"y1":95,"fillcolor":"#ccc"}, - {"label":{"text":"top right", "textposition": "top right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":90,"y1":95,"fillcolor":"#ccc"}, + {"label":{"text":"top left", "textposition": "top left", "font": { "size": 16 }, "padding": 5}, "x0":15,"x1":30,"y0":87,"y1":98,"fillcolor":"#ccc"}, + {"label":{"text":"top center", "textposition": "top center", "font": { "size": 16 }, "padding": 5}, "x0":43,"x1":58,"y0":87,"y1":98,"fillcolor":"#ccc"}, + {"label":{"text":"top right", "textposition": "top right", "font": { "size": 16 }, "padding": 5}, "x0":70,"x1":85,"y0":87,"y1":98,"fillcolor":"#ccc"}, - {"label":{"text":"middle left", "textposition": "middle left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":72,"y1":77,"fillcolor":"#ccc"}, - {"label":{"text":"middle center", "textposition": "middle center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":72,"y1":77,"fillcolor":"#ccc"}, - {"label":{"text":"middle right", "textposition": "middle right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":72,"y1":77,"fillcolor":"#ccc"}, + {"label":{"text":"middle left", "textposition": "middle left", "font": { "size": 16 }, "padding": 5}, "x0":15,"x1":30,"y0":69,"y1":80,"fillcolor":"#ccc"}, + {"label":{"text":"middle center", "textposition": "middle center", "font": { "size": 16 }, "padding": 5}, "x0":43,"x1":58,"y0":69,"y1":80,"fillcolor":"#ccc"}, + {"label":{"text":"middle right", "textposition": "middle right", "font": { "size": 16 }, "padding": 5}, "x0":70,"x1":85,"y0":69,"y1":80,"fillcolor":"#ccc"}, - {"label":{"text":"bottom left", "textposition": "bottom left", "font": { "size": 16 }, "padding": 10}, "x0":20,"x1":25,"y0":55,"y1":60,"fillcolor":"#ccc"}, - {"label":{"text":"bottom center", "textposition": "bottom center", "font": { "size": 16 }, "padding": 10}, "x0":48,"x1":53,"y0":55,"y1":60,"fillcolor":"#ccc"}, - {"label":{"text":"bottom right", "textposition": "bottom right", "font": { "size": 16 }, "padding": 10}, "x0":75,"x1":80,"y0":55,"y1":60,"fillcolor":"#ccc"}, + {"label":{"text":"bottom left", "textposition": "bottom left", "font": { "size": 16 }, "padding": 5}, "x0":15,"x1":30,"y0":52,"y1":63,"fillcolor":"#ccc"}, + {"label":{"text":"bottom center", "textposition": "bottom center", "font": { "size": 16 }, "padding": 5}, "x0":43,"x1":58,"y0":52,"y1":63,"fillcolor":"#ccc"}, + {"label":{"text":"bottom right", "textposition": "bottom right", "font": { "size": 16 }, "padding": 5}, "x0":70,"x1":85,"y0":52,"y1":63,"fillcolor":"#ccc"}, - {"label":{"text":"top
start +", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":15,"x1":20,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
middle +", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":43,"x1":48,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
end +", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":70,"x1":75,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start +", "textposition": "start", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":15,"x1":20,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle +", "textposition": "middle", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":43,"x1":48,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end +", "textposition": "end", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":70,"x1":75,"y0":40,"y1":43,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
start -", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":30,"x1":35,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
middle -", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":58,"x1":63,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
end -", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":85,"x1":90,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start -", "textposition": "start", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":30,"x1":35,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle -", "textposition": "middle", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":58,"x1":63,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end -", "textposition": "end", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":85,"x1":90,"y0":43,"y1":40,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
start + R", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":15,"x0":20,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
middle + R", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":43,"x0":48,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
end + R", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":70,"x0":75,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start + R", "textposition": "start", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":15,"x0":20,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle + R", "textposition": "middle", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":43,"x0":48,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end + R", "textposition": "end", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":70,"x0":75,"y1":30,"y0":33,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
start - R", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":30,"x0":35,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
middle - R", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":58,"x0":63,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"top
end - R", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":85,"x0":90,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
start - R", "textposition": "start", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":30,"x0":35,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
middle - R", "textposition": "middle", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":58,"x0":63,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"top
end - R", "textposition": "end", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":85,"x0":90,"y1":33,"y0":30,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
start +", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":15,"x1":20,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
middle +", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":43,"x1":48,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
end +", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":70,"x1":75,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
start +", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":15,"x1":20,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle +", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":43,"x1":48,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end +", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":70,"x1":75,"y0":20,"y1":23,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
start -", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":30,"x1":35,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
middle -", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":58,"x1":63,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
end -", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x0":85,"x1":90,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
start -", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":30,"x1":35,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle -", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":58,"x1":63,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end -", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x0":85,"x1":90,"y0":23,"y1":20,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
start + R", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":15,"x0":20,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
middle + R", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":43,"x0":48,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
end + R", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":70,"x0":75,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
start + R", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":15,"x0":20,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle + R", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":43,"x0":48,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end + R", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":70,"x0":75,"y1":10,"y0":13,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
start - R", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":30,"x0":35,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
middle - R", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":58,"x0":63,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, - {"label":{"text":"bottom
end - R", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 10, "textangle": 0}, "x1":85,"x0":90,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"} + {"label":{"text":"bottom
start - R", "yanchor": "top", "textposition": "start", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":30,"x0":35,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
middle - R", "yanchor": "top", "textposition": "middle", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":58,"x0":63,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"}, + {"label":{"text":"bottom
end - R", "yanchor": "top", "textposition": "end", "font": { "size": 16 }, "padding": 5, "textangle": 0}, "x1":85,"x0":90,"y1":13,"y0":10,"fillcolor":"#ccc", "type": "line"} ] }, From e493873bcfc29368148a26a7cab0e5eaf9f6bebb Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Tue, 28 Feb 2023 21:10:07 -0500 Subject: [PATCH 54/82] validate new mock --- test/image/mocks/zz-text_on_shapes_reversed_axes.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/test/image/mocks/zz-text_on_shapes_reversed_axes.json b/test/image/mocks/zz-text_on_shapes_reversed_axes.json index ddd1da129fd..95ea77db3c6 100644 --- a/test/image/mocks/zz-text_on_shapes_reversed_axes.json +++ b/test/image/mocks/zz-text_on_shapes_reversed_axes.json @@ -54,8 +54,6 @@ }, "fillcolor": "red", "opacity": 0.5, - "xref": "xaxis", - "yref": "yaxis", "x0": 25, "y0": 25, "x1": 75, @@ -64,15 +62,12 @@ { "label": {"text": "label 2"}, "editable": true, - "layer": "top", "type": "circle", "line": { "width": 5 }, "fillcolor": "green", "opacity": 0.5, - "xref": "xaxis", - "yref": "yaxis", "x0": 125, "y0": 25, "x1": 175, From a17a31507721ceb07259c6ef83c9e28896e2dda4 Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Tue, 28 Feb 2023 21:11:47 -0500 Subject: [PATCH 55/82] update yanchor values and defaults in draw_newshape --- src/components/shapes/draw_newshape/attributes.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index b03db9cdc55..7d87ae07eec 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -118,8 +118,7 @@ module.exports = { }, yanchor: { valType: 'enumerated', - values: ['auto', 'top', 'middle', 'bottom'], - dflt: 'auto', + values: ['top', 'middle', 'bottom'], editType: 'none', description: 'Sets the text box\'s vertical position anchor.', }, From f54f1022b4d7a595505e5580cd81cf7a66f5a1a8 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Tue, 28 Feb 2023 21:34:32 -0500 Subject: [PATCH 56/82] input newshape label attributes --- src/components/shapes/defaults.js | 4 ++-- src/components/shapes/draw_newshape/defaults.js | 11 ++++++++++- test/image/mocks/zz-text_on_shapes_reversed_axes.json | 8 +++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index a20e10b3634..177764b6d70 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -119,10 +119,10 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { // Label options coerce('label.text'); - coerce('label.xanchor'); - coerce('label.yanchor'); coerce('label.textangle', shapeType === 'line' ? 'auto' : 0); coerce('label.textposition', shapeType === 'line' ? 'middle' : 'middle center'); + coerce('label.xanchor'); + coerce('label.yanchor'); coerce('label.padding'); Lib.coerceFont(coerce, 'label.font', fullLayout.font); } diff --git a/src/components/shapes/draw_newshape/defaults.js b/src/components/shapes/draw_newshape/defaults.js index 3043559025d..3a25feeddca 100644 --- a/src/components/shapes/draw_newshape/defaults.js +++ b/src/components/shapes/draw_newshape/defaults.js @@ -1,7 +1,7 @@ 'use strict'; var Color = require('../../color'); - +var Lib = require('../../../lib'); module.exports = function supplyDrawNewShapeDefaults(layoutIn, layoutOut, coerce) { coerce('newshape.drawdirection'); @@ -16,6 +16,15 @@ module.exports = function supplyDrawNewShapeDefaults(layoutIn, layoutOut, coerce coerce('newshape.line.dash'); } + var isLine = layoutIn.dragmode === 'drawline'; + coerce('newshape.label.text'); + coerce('newshape.label.textangle', isLine ? 'auto' : 0); + coerce('newshape.label.textposition', isLine ? 'middle' : 'middle center'); + coerce('newshape.label.xanchor'); + coerce('newshape.label.yanchor'); + coerce('newshape.label.padding'); + Lib.coerceFont(coerce, 'newshape.label.font', layoutOut.font); + coerce('activeshape.fillcolor'); coerce('activeshape.opacity'); }; diff --git a/test/image/mocks/zz-text_on_shapes_reversed_axes.json b/test/image/mocks/zz-text_on_shapes_reversed_axes.json index 95ea77db3c6..aeeec4a6a51 100644 --- a/test/image/mocks/zz-text_on_shapes_reversed_axes.json +++ b/test/image/mocks/zz-text_on_shapes_reversed_axes.json @@ -119,7 +119,13 @@ "fillcolor": "yellow", "path": "M300,70C300,10 380,10 380,70C380,90 300,90 300,70ZM320,60C320,50 332,50 332,60ZM348,60C348,50 360,50 360,60ZM320,70C326,80 354,80 360,70Z" } - ] + ], + "dragmode": "drawline", + "newshape": { + "label": { + "text": "TEXT" + } + } }, "config": { "editable": false, From f642a52d76b0706ac7610e9e92bbf055781631e9 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Tue, 28 Feb 2023 21:41:18 -0500 Subject: [PATCH 57/82] draw labels on new shapes --- src/components/shapes/draw_newshape/newshapes.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/shapes/draw_newshape/newshapes.js b/src/components/shapes/draw_newshape/newshapes.js index 0b2494477da..582b307c603 100644 --- a/src/components/shapes/draw_newshape/newshapes.js +++ b/src/components/shapes/draw_newshape/newshapes.js @@ -77,6 +77,8 @@ module.exports = function newShapes(outlines, dragOptions) { var newShape = { editable: true, + label: newStyle.label, + xref: xPaper ? 'paper' : xaxis._id, yref: yPaper ? 'paper' : yaxis._id, From dfb608eb8a3a7a139b2f418edbc9e74c96782091 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Tue, 28 Feb 2023 22:03:12 -0500 Subject: [PATCH 58/82] provide missing editTypes --- src/components/shapes/draw_newshape/attributes.js | 4 +++- test/plot-schema.json | 10 ++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index b03db9cdc55..21899750c8e 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -83,10 +83,11 @@ module.exports = { text: { valType: 'string', dflt: '', + editType: 'none', description: 'Sets the text to display with shape.' }, font: fontAttrs({ - editType: 'calc+arraydraw', + editType: 'none', description: 'Sets the shape label text font.' }), textposition: { @@ -97,6 +98,7 @@ module.exports = { 'bottom left', 'bottom center', 'bottom right', 'start', 'middle', 'end', ], + editType: 'none', description: 'Sets the position of the label text relative to the shape.' }, textangle: { diff --git a/test/plot-schema.json b/test/plot-schema.json index 1709ff728b5..7db87374ce9 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -3577,21 +3577,21 @@ "editType": "none", "font": { "color": { - "editType": "calc+arraydraw", + "editType": "none", "valType": "color" }, "description": "Sets the shape label text font.", - "editType": "calc+arraydraw", + "editType": "none", "family": { "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", - "editType": "calc+arraydraw", + "editType": "none", "noBlank": true, "strict": true, "valType": "string" }, "role": "object", "size": { - "editType": "calc+arraydraw", + "editType": "none", "min": 1, "valType": "number" } @@ -3606,6 +3606,7 @@ "text": { "description": "Sets the text to display with shape.", "dflt": "", + "editType": "none", "valType": "string" }, "textangle": { @@ -3615,6 +3616,7 @@ }, "textposition": { "description": "Sets the position of the label text relative to the shape.", + "editType": "none", "valType": "enumerated", "values": [ "top left", From feb2f3846e6e5744a96969997cf14d83ad615e2a Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Wed, 1 Mar 2023 16:29:47 -0500 Subject: [PATCH 59/82] standardize default yanchor behavior between shape and draw_newshape --- src/components/shapes/defaults.js | 20 ++++++------------ .../shapes/draw_newshape/defaults.js | 21 +++++++++++++++++-- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/components/shapes/defaults.js b/src/components/shapes/defaults.js index af68bc13452..a9a8b6e4e2c 100644 --- a/src/components/shapes/defaults.js +++ b/src/components/shapes/defaults.js @@ -15,9 +15,9 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { }); }; -function dfltLabelYanchor(shapeType, labelTextPosition) { +function dfltLabelYanchor(isLine, labelTextPosition) { var dfltYanchor; - if(shapeType === 'line') { + if(isLine) { dfltYanchor = 'bottom'; } else { if(labelTextPosition.indexOf('top') !== -1) { @@ -134,21 +134,13 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { } // Label options + var isLine = shapeType === 'line'; coerce('label.text'); - coerce('label.textangle', shapeType === 'line' ? 'auto' : 0); -<<<<<<< HEAD - var labelTextPosition = coerce( - 'label.textposition', - shapeType === 'line' ? 'middle' : 'middle center' - ); + coerce('label.textangle', isLine ? 'auto' : 0); + var labelTextPosition = coerce('label.textposition', isLine ? 'middle' : 'middle center'); coerce('label.xanchor'); // Default yanchor value depends on shape type and label textposition - coerce('label.yanchor', dfltLabelYanchor(shapeType, labelTextPosition)); -======= - coerce('label.textposition', shapeType === 'line' ? 'middle' : 'middle center'); - coerce('label.xanchor'); - coerce('label.yanchor'); ->>>>>>> dfb608eb8a3a7a139b2f418edbc9e74c96782091 + coerce('label.yanchor', dfltLabelYanchor(isLine, labelTextPosition)); coerce('label.padding'); Lib.coerceFont(coerce, 'label.font', fullLayout.font); } diff --git a/src/components/shapes/draw_newshape/defaults.js b/src/components/shapes/draw_newshape/defaults.js index 3a25feeddca..fff5b9f4a5a 100644 --- a/src/components/shapes/draw_newshape/defaults.js +++ b/src/components/shapes/draw_newshape/defaults.js @@ -3,6 +3,23 @@ var Color = require('../../color'); var Lib = require('../../../lib'); + +function dfltLabelYanchor(isLine, labelTextPosition) { + var dfltYanchor; + if(isLine) { + dfltYanchor = 'bottom'; + } else { + if(labelTextPosition.indexOf('top') !== -1) { + dfltYanchor = 'top'; + } else if(labelTextPosition.indexOf('bottom') !== -1) { + dfltYanchor = 'bottom'; + } else { + dfltYanchor = 'middle'; + } + } + return dfltYanchor; +} + module.exports = function supplyDrawNewShapeDefaults(layoutIn, layoutOut, coerce) { coerce('newshape.drawdirection'); coerce('newshape.layer'); @@ -19,9 +36,9 @@ module.exports = function supplyDrawNewShapeDefaults(layoutIn, layoutOut, coerce var isLine = layoutIn.dragmode === 'drawline'; coerce('newshape.label.text'); coerce('newshape.label.textangle', isLine ? 'auto' : 0); - coerce('newshape.label.textposition', isLine ? 'middle' : 'middle center'); + var labelTextPosition = coerce('newshape.label.textposition', isLine ? 'middle' : 'middle center'); coerce('newshape.label.xanchor'); - coerce('newshape.label.yanchor'); + coerce('newshape.label.yanchor', dfltLabelYanchor(isLine, labelTextPosition)); coerce('newshape.label.padding'); Lib.coerceFont(coerce, 'newshape.label.font', layoutOut.font); From 11b34219bffe851fc9bbc98d66b80dfbebc088fd Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Wed, 1 Mar 2023 16:38:28 -0500 Subject: [PATCH 60/82] better docstrings for xanchor and yanchor --- src/components/shapes/attributes.js | 20 +++++++++++++++++-- .../shapes/draw_newshape/attributes.js | 20 +++++++++++++++++-- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 5cc70e44f85..0f937676fb4 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -263,13 +263,29 @@ module.exports = templatedArray('shape', { values: ['auto', 'left', 'center', 'right'], dflt: 'auto', editType: 'calc+arraydraw', - description: 'Sets the text box\'s horizontal position anchor.', + description: [ + 'Sets the label\'s horizontal position anchor', + 'This anchor binds the specified `label.textposition` to the *left*, *center*', + 'or *right* of the label text.', + 'For example, if `label.textposition` is set to *top right* and', + '`xanchor` to *right* then the right-most portion of the', + 'label text lines up with the right-most edge of the', + 'shape.', + ].join(' '), }, yanchor: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], editType: 'calc+arraydraw', - description: 'Sets the text box\'s vertical position anchor.', + description: [ + 'Sets the label\'s vertical position anchor', + 'This anchor binds the specified `label.textposition` to the *top*, *middle*', + 'or *bottom* of the label text.', + 'For example, if `label.textposition` is set to *top right* and', + '`yanchor` to *top* then the top-most portion of the', + 'label text lines up with the top-most edge of the', + 'shape.', + ].join(' ') }, padding: { valType: 'number', diff --git a/src/components/shapes/draw_newshape/attributes.js b/src/components/shapes/draw_newshape/attributes.js index a1c8cee7995..b98fec2d0a2 100644 --- a/src/components/shapes/draw_newshape/attributes.js +++ b/src/components/shapes/draw_newshape/attributes.js @@ -116,13 +116,29 @@ module.exports = { values: ['auto', 'left', 'center', 'right'], dflt: 'auto', editType: 'none', - description: 'Sets the text box\'s horizontal position anchor.', + description: [ + 'Sets the label\'s horizontal position anchor', + 'This anchor binds the specified `label.textposition` to the *left*, *center*', + 'or *right* of the label text.', + 'For example, if `label.textposition` is set to *top right* and', + '`xanchor` to *right* then the right-most portion of the', + 'label text lines up with the right-most edge of the', + 'shape.', + ].join(' '), }, yanchor: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], editType: 'none', - description: 'Sets the text box\'s vertical position anchor.', + description: [ + 'Sets the label\'s vertical position anchor', + 'This anchor binds the specified `label.textposition` to the *top*, *middle*', + 'or *bottom* of the label text.', + 'For example, if `label.textposition` is set to *top right* and', + '`yanchor` to *top* then the top-most portion of the', + 'label text lines up with the top-most edge of the', + 'shape.', + ].join(' ') }, padding: { valType: 'number', From ea9493e748d61907f1fd04397e15b89d34b1c54a Mon Sep 17 00:00:00 2001 From: Emily Kellison-Linn <4672118+emilykl@users.noreply.github.com> Date: Wed, 1 Mar 2023 16:45:36 -0500 Subject: [PATCH 61/82] update image baselines --- .../baselines/zz-text_on_shapes_basic.png | Bin 37873 -> 40079 bytes .../baselines/zz-text_on_shapes_position.png | Bin 73256 -> 77517 bytes .../zz-text_on_shapes_reversed_axes.png | Bin 67269 -> 67426 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/zz-text_on_shapes_basic.png b/test/image/baselines/zz-text_on_shapes_basic.png index f57d112e47c5e9189891415cd3ef9ba41a9f171a..72f5fbfe57013ac144e844dbe9765cb0bd1679e2 100644 GIT binary patch literal 40079 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 p`x z3}Sh1M(V8#-z*-iK`KLZGLRj-2|TL3kbq0jR@>@*ysF5N9B2WsYSGV{AVpwvRKS_d zb5?fml9C@oj<5QT;;;p*v<7UD^M z2_k>&_FG9NALHGX3!xVTbWl@a$vPzPd{{WuiZJg>i?bsN!w;MK={Fg3%q7w&J}dm) zl$I#(Z(H@j1nr6nahVzM59h{u_rHo50vCbsrVDh7wMMh)@c#I-UQ;H ziznaXCXFXG#S>4#5qsw5Ext=-pOh=)&+>5IgnKYSO)5|}V9R;M=b@KLc4_;uYvV;)06Tb$iGPK~@Y66n=ZltyMLn8a22v|wNEq3=RxdQo z*e@q|BbEYF%m~-H9E*3{u+i=Q;szL#L>3aNU3a)11SgWZ6bc=O3RGG(QyMAB*Fz*? z*M{v@m8E0%iFDr)FQ=#Cndob4`|2e>4nI;@jc|Mjh0!RSBn@SI12YO1G76{Kh(}5c z`4t9a=gXQH<|+QvgJDtqmnA`Zu95hxtZktJmg^Q0lTar>h^kdo5exD*NX2Uus%Z&3 zl)bAzruH-o_sgr>rf_3pLCGQ!wxD{vVGb2(o}*{`Lm&RtV*McB;tUb79x^yCWD4g@ zNz*IWTuu`qP)q?sS)o4!tPVj73M@1h%ewSzjfMz-&qK8Y+L1`g__51LGcUC%9Oqg* zcl7g!II8;+n9Q7h9gVYHrBMrpIf$c!IaqQatf2mWAoO73eW9JU)@cvaI=48}g`q_G z{a4vZ?*7QYY1KIjwzl|x^BVbIOFB~5{ffvWq@23^ zN;h19?ka3CU}b)M|+)3vu#uEeEPG@mEW=OI@r~pN`1Djl_-xuMitkxInUeKQ%I0lQr9ARBdd=Ve5!Q;vHMh^uRCZ-Af3R=e;%m?`@^{< z8_8nV^YzQyN|3A$S-Y>j&-(;^S*e>@kg38Hj4;)B9@u9H@5-lMX%8&$Jh0Vm6W6cI zKPtT|M8Zx32Mwd)Drl0Xnp`(4JP%erL3OwsibTD)dL904C^Sq*+34>l!4_FS8cFft z)oOP8erL)Q_ay?@bYsJLg+{X&`+wY$7@HC7o@IFd}5ce{>BGPBxzV2 z-r9~Cf4&BnK9ygpdWOGNW-|>0k=}RFc>ngu0uGD9Qq{6A1cKW&S#v;^*qnN)zd&7Z z4*3Y^lI4P(P~b@U-M)9yWa$P93nm=%Ir8<7qxmkQS1d~6()=!KmOPRFuFyLW@paUZ zMZxWk{9GI~wP(rksq3D4CDEspe4RgB;sYhJ);rxBDdtr|>U?7Clrapl} z_`@zp=pGQ!2-H9{+XGc!YkhrvH>l{*GpQqb3*e?d1$yJy22}9@l6gU{Ch~^J3n`%i zm!Q#)m`>y_^suRcENK!bl9o_{uY+)C8gzAbh`e)oAa(llnF(MASj zaQ^HWWI!IM?|5;b2oRA5yA5g}uB0J(1Du5Skc#V*jBD00a$V` z_kE-~VM@ja;aV;5_vZ~>Jy`#dgmoXBJ$@Pk*`N|UP;_g}<+w~*Jid~z;{V-_B=~T< zt8<@u@^=ScN4^(17{OoB9w-M+PYi(EfrKVPK(Ied24FC{2z3g557`MYED7~xKOr+Jm+??J^FmxC4Wx(Gsr za3U+n>py|!98$!mKlOp9lDRns#%H8rR)2o~LPSp@8cgHmh;M9pA2g172yhfnw=7dP zIR-jeu&l5M4!qMr-e^z^92_pn9sbDw;3#8m0N+;bkv%q(UKwbKriVlpqjCscAgpkE zOC)>;;=rvy0v-n*qi46G>p&zz&m`3yLvII8+Gw}@!}I?J4G9y% za`LrDIVh5hrULyI9Nt$5O5z$SjV`PmdaFhDf=<0S_!M|KK;O}dDH?%?BJDxP5CT`; zZZ$q{a~X6=;cUxdHKrvKULOTFZx*>RFbZuIO|=6@JhUj~Fa&0-4)OMd;Q9el+&U;^ z0TW|jbl@{kVuWNXV0kMb3~aJg6iPr=$w9?O4IK^B(IiDoj{3*mx~OE^=H|;k8Gyjk L)z4*}Q$iB};83K) literal 37873 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 diff --git a/test/image/baselines/zz-text_on_shapes_position.png b/test/image/baselines/zz-text_on_shapes_position.png index a0a8e6ca56f31cb3280d71ce3d81f77ed0f6d3ff..d0e81973cfc66f28ad698bb4a0265da16b62f956 100644 GIT binary patch literal 77517 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 literal 73256 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ⅅml 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