From dc2f3babf300e8ec740eba3d0b741b04b64e1a38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=B6stl?= Date: Tue, 20 Mar 2018 19:49:31 +0100 Subject: [PATCH 1/8] Move assertions from hover_label_test.js to custom_assertions.js #2193 - Reason: prepare writing fixed size shape tests. --- test/jasmine/assets/custom_assertions.js | 26 ++++++++++++++++++++++ test/jasmine/tests/hover_label_test.js | 28 +++--------------------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/test/jasmine/assets/custom_assertions.js b/test/jasmine/assets/custom_assertions.js index aa594999e82..ba791a38250 100644 --- a/test/jasmine/assets/custom_assertions.js +++ b/test/jasmine/assets/custom_assertions.js @@ -190,3 +190,29 @@ exports.checkTicks = function(axLetter, vals, msg) { expect(d3.select(this).text()).toBe(vals[i], msg + ': ' + i); }); }; + +exports.assertElemRightTo = function(elem, refElem, msg) { + var elemBB = elem.getBoundingClientRect(); + var refElemBB = refElem.getBoundingClientRect(); + expect(elemBB.left >= refElemBB.right).toBe(true, msg); +}; + + +exports.assertElemTopsAligned = function(elem1, elem2, msg) { + var elem1BB = elem1.getBoundingClientRect(); + var elem2BB = elem2.getBoundingClientRect(); + + // Hint: toBeWithin tolerance is exclusive, hence a + // diff of exactly 1 would fail the test + var tolerance = 1.1; + expect(elem1BB.top - elem2BB.top).toBeWithin(0, tolerance, msg); +}; + +exports.assertElemInside = function(elem, container, msg) { + var elemBB = elem.getBoundingClientRect(); + var contBB = container.getBoundingClientRect(); + expect(contBB.left < elemBB.left && + contBB.right > elemBB.right && + contBB.top < elemBB.top && + contBB.bottom > elemBB.bottom).toBe(true, msg); +}; diff --git a/test/jasmine/tests/hover_label_test.js b/test/jasmine/tests/hover_label_test.js index 847c7b96cc9..1ad54ea3b6c 100644 --- a/test/jasmine/tests/hover_label_test.js +++ b/test/jasmine/tests/hover_label_test.js @@ -17,6 +17,9 @@ var fail = require('../assets/fail_test'); var customAssertions = require('../assets/custom_assertions'); var assertHoverLabelStyle = customAssertions.assertHoverLabelStyle; var assertHoverLabelContent = customAssertions.assertHoverLabelContent; +var assertElemRightTo = customAssertions.assertElemRightTo; +var assertElemTopsAligned = customAssertions.assertElemTopsAligned; +var assertElemInside = customAssertions.assertElemInside; describe('hover info', function() { 'use strict'; @@ -1136,15 +1139,6 @@ describe('hover info', function() { msgPrefixFmt + 'Primary text inside box'); assertElemInside(nodes.secondaryText, nodes.secondaryBox, msgPrefixFmt + 'Secondary text inside box'); - - function assertElemInside(elem, container, msg) { - var elemBB = elem.getBoundingClientRect(); - var contBB = container.getBoundingClientRect(); - expect(contBB.left < elemBB.left && - contBB.right > elemBB.right && - contBB.top < elemBB.top && - contBB.bottom > elemBB.bottom).toBe(true, msg); - } } function assertSecondaryRightToPrimaryBox(nodes, msgPrefix) { @@ -1154,22 +1148,6 @@ describe('hover info', function() { msgPrefixFmt + 'Secondary box right to primary box'); assertElemTopsAligned(nodes.secondaryBox, nodes.primaryBox, msgPrefixFmt + 'Top edges of primary and secondary boxes aligned'); - - function assertElemRightTo(elem, refElem, msg) { - var elemBB = elem.getBoundingClientRect(); - var refElemBB = refElem.getBoundingClientRect(); - expect(elemBB.left >= refElemBB.right).toBe(true, msg); - } - - function assertElemTopsAligned(elem1, elem2, msg) { - var elem1BB = elem1.getBoundingClientRect(); - var elem2BB = elem2.getBoundingClientRect(); - - // Hint: toBeWithin tolerance is exclusive, hence a - // diff of exactly 1 would fail the test - var tolerance = 1.1; - expect(elem1BB.top - elem2BB.top).toBeWithin(0, tolerance, msg); - } } describe('centered', function() { From 49f7fb0d56be659b5c62ed69751a94f575b7faf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=B6stl?= Date: Wed, 28 Mar 2018 20:46:57 +0200 Subject: [PATCH 2/8] Enhance documentation of autorange.js `expand` function --- src/plots/cartesian/autorange.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plots/cartesian/autorange.js b/src/plots/cartesian/autorange.js index 797add39ac6..117abcde849 100644 --- a/src/plots/cartesian/autorange.js +++ b/src/plots/cartesian/autorange.js @@ -219,6 +219,8 @@ function needsAutorange(ax) { * Note that `expand` is called during `calc`, when we don't yet know the axis * length; all the inputs should be based solely on the trace data, nothing * about the axis layout. + * Note that `ppad` and `vpad` as well as their asymmetric variants refer to + * the before and after padding of the passed `data` array, not to the whole axis. * * @param {object} ax: the axis being expanded. The result will be more entries * in ax._min and ax._max if necessary to include the new data From d386b2d3e22036b8beef26fdd059e57608a942c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=B6stl?= Date: Mon, 19 Mar 2018 14:57:36 +0100 Subject: [PATCH 3/8] Introduce fixed size shapes #2193 - Shapes (line, rect, circle as well as path) can now be sized by pixel while being positioned relative to data. - New shape attributes `xsizemode`, `xanchor`, `ysizemode` and `yanchor` introduced and semantics of `x0`, `x1`, `y0` and `y1` extended. - Shapes can be sized by pixel on one axis and sized by data on the other. - Fixed size shapes can be moved. - Fixed size lines, rectangles and circles can be resized, paths not. - Fixed size shapes are fully taken into account when an axis is in auto-range mode. --- src/components/shapes/attributes.js | 79 +++- src/components/shapes/calc_autorange.js | 66 ++- src/components/shapes/draw.js | 153 +++++-- src/components/shapes/shape_defaults.js | 58 ++- test/jasmine/tests/shapes_test.js | 527 +++++++++++++++++++++++- 5 files changed, 808 insertions(+), 75 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 622cf147015..070207064c7 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -35,16 +35,20 @@ module.exports = { 'Specifies the shape type to be drawn.', 'If *line*, a line is drawn from (`x0`,`y0`) to (`x1`,`y1`)', + 'with respect to the axes\' sizing mode.', 'If *circle*, a circle is drawn from', '((`x0`+`x1`)/2, (`y0`+`y1`)/2))', 'with radius', '(|(`x0`+`x1`)/2 - `x0`|, |(`y0`+`y1`)/2 -`y0`)|)', + 'with respect to the axes\' sizing mode.', 'If *rect*, a rectangle is drawn linking', '(`x0`,`y0`), (`x1`,`y0`), (`x1`,`y1`), (`x0`,`y1`), (`x0`,`y0`)', + 'with respect to the axes\' sizing mode.', - 'If *path*, draw a custom SVG path using `path`.' + 'If *path*, draw a custom SVG path using `path`.', + 'with respect to the axes\' sizing mode.' ].join(' ') }, @@ -61,7 +65,7 @@ module.exports = { description: [ 'Sets the shape\'s x coordinate axis.', 'If set to an x axis id (e.g. *x* or *x2*), the `x` position', - 'refers to an x coordinate', + 'refers to an x coordinate.', 'If set to *paper*, the `x` position refers to the distance from', 'the left side of the plotting area in normalized coordinates', 'where *0* (*1*) corresponds to the left (right) side.', @@ -71,13 +75,41 @@ module.exports = { 'the date to unix time in milliseconds.' ].join(' ') }), + xsizemode: { + valType: 'enumerated', + values: ['data', 'pixel'], + dflt: 'data', + role: 'info', + editType: 'calcIfAutorange+arraydraw', + description: [ + 'Sets the shapes\'s sizing mode along the x axis.', + 'If set to *data*, `x0`, `x1` and x coordinates within `path` refer to', + 'data values on the x axis.', + 'If set to *pixel*, `xanchor` specifies the x position in terms', + 'of data but `x0`, `x1` and x coordinates within `path`', + 'are pixels relative to `xanchor`. This way, the shape can have', + 'a fixed width while maintaining a position relative to data.' + ].join(' ') + }, + xanchor: { + valType: 'any', + role: 'info', + editType: 'calcIfAutorange+arraydraw', + description: [ + 'Only relevant in conjunction with `xsizemode` set to *pixel*.', + 'Specifies the anchor point on the x axis to which `x0`, `x1`', + 'and x coordinates within `path` are relative to.', + 'E.g. useful to attach a pixel sized shape to a certain data value.', + 'No effect when `xsizemode` not set to *pixel*.' + ].join(' ') + }, x0: { valType: 'any', role: 'info', editType: 'calcIfAutorange+arraydraw', description: [ 'Sets the shape\'s starting x position.', - 'See `type` for more info.' + 'See `type` and `xsizemode` for more info.' ].join(' ') }, x1: { @@ -86,7 +118,7 @@ module.exports = { editType: 'calcIfAutorange+arraydraw', description: [ 'Sets the shape\'s end x position.', - 'See `type` for more info.' + 'See `type` and `xsizemode` for more info.' ].join(' ') }, @@ -100,13 +132,41 @@ module.exports = { 'where *0* (*1*) corresponds to the bottom (top).' ].join(' ') }), + ysizemode: { + valType: 'enumerated', + values: ['data', 'pixel'], + dflt: 'data', + role: 'info', + editType: 'calcIfAutorange+arraydraw', + description: [ + 'Sets the shapes\'s sizing mode along the y axis.', + 'If set to *data*, `y0`, `y1` and y coordinates within `path` refer to', + 'data values on the y axis.', + 'If set to *pixel*, `yanchor` specifies the y position in terms', + 'of data but `y0`, `y1` and y coordinates within `path`', + 'are pixels relative to `yanchor`. This way, the shape can have', + 'a fixed height while maintaining a position relative to data.' + ].join(' ') + }, + yanchor: { + valType: 'any', + role: 'info', + editType: 'calcIfAutorange+arraydraw', + description: [ + 'Only relevant in conjunction with `ysizemode` set to *pixel*.', + 'Specifies the anchor point on the y axis to which `y0`, `y1`', + 'and y coordinates within `path` are relative to.', + 'E.g. useful to attach a pixel sized shape to a certain data value.', + 'No effect when `ysizemode` not set to *pixel*.' + ].join(' ') + }, y0: { valType: 'any', role: 'info', editType: 'calcIfAutorange+arraydraw', description: [ 'Sets the shape\'s starting y position.', - 'See `type` for more info.' + 'See `type` and `ysizemode` for more info.' ].join(' ') }, y1: { @@ -115,7 +175,7 @@ module.exports = { editType: 'calcIfAutorange+arraydraw', description: [ 'Sets the shape\'s end y position.', - 'See `type` for more info.' + 'See `type` and `ysizemode` for more info.' ].join(' ') }, @@ -124,8 +184,11 @@ module.exports = { role: 'info', editType: 'calcIfAutorange+arraydraw', description: [ - 'For `type` *path* - a valid SVG path but with the pixel values', - 'replaced by data values. There are a few restrictions / quirks', + 'For `type` *path* - a valid SVG path with the pixel values', + 'replaced by data values in `xsizemode`/`ysizemode` being *data*', + 'and taken unmodified as pixels relative to `xanchor` and `yanchor`', + 'in case of *pixel* size mode.', + 'There are a few restrictions / quirks', 'only absolute instructions, not relative. So the allowed segments', 'are: M, L, H, V, Q, C, T, S, and Z', 'arcs (A) are not allowed because radius rx and ry are relative.', diff --git a/src/components/shapes/calc_autorange.js b/src/components/shapes/calc_autorange.js index 474cdef3613..06c599255eb 100644 --- a/src/components/shapes/calc_autorange.js +++ b/src/components/shapes/calc_autorange.js @@ -23,25 +23,79 @@ module.exports = function calcAutorange(gd) { if(!shapeList.length || !gd._fullData.length) return; for(var i = 0; i < shapeList.length; i++) { - var shape = shapeList[i], - ppad = shape.line.width / 2; + var shape = shapeList[i]; var ax, bounds; if(shape.xref !== 'paper') { + var vx0 = shape.xsizemode === 'pixel' ? shape.xanchor : shape.x0, + vx1 = shape.xsizemode === 'pixel' ? shape.xanchor : shape.x1; ax = Axes.getFromId(gd, shape.xref); - bounds = shapeBounds(ax, shape.x0, shape.x1, shape.path, constants.paramIsX); - if(bounds) Axes.expand(ax, bounds, {ppad: ppad}); + + bounds = shapeBounds(ax, vx0, vx1, shape.path, constants.paramIsX); + + if(bounds) Axes.expand(ax, bounds, calcXPaddingOptions(shape)); } if(shape.yref !== 'paper') { + var vy0 = shape.ysizemode === 'pixel' ? shape.yanchor : shape.y0, + vy1 = shape.ysizemode === 'pixel' ? shape.yanchor : shape.y1; ax = Axes.getFromId(gd, shape.yref); - bounds = shapeBounds(ax, shape.y0, shape.y1, shape.path, constants.paramIsY); - if(bounds) Axes.expand(ax, bounds, {ppad: ppad}); + + bounds = shapeBounds(ax, vy0, vy1, shape.path, constants.paramIsY); + if(bounds) Axes.expand(ax, bounds, calcYPaddingOptions(shape)); } } }; +function calcXPaddingOptions(shape) { + return calcPaddingOptions(shape.line.width, shape.xsizemode, shape.x0, shape.x1, shape.path, false); +} + +function calcYPaddingOptions(shape) { + return calcPaddingOptions(shape.line.width, shape.ysizemode, shape.y0, shape.y1, shape.path, true); +} + +function calcPaddingOptions(lineWidth, sizeMode, v0, v1, path, isYAxis) { + var ppad = lineWidth / 2, + axisDirectionReverted = isYAxis; + + if(sizeMode === 'pixel') { + var coords = path ? + extractPathCoords(path, isYAxis ? constants.paramIsY : constants.paramIsX) : + [v0, v1]; + var maxValue = Lib.aggNums(Math.max, null, coords), + minValue = Lib.aggNums(Math.min, null, coords), + beforePad = minValue < 0 ? Math.abs(minValue) + ppad : ppad, + afterPad = maxValue > 0 ? maxValue + ppad : ppad; + + return { + ppad: ppad, + ppadplus: axisDirectionReverted ? beforePad : afterPad, + ppadminus: axisDirectionReverted ? afterPad : beforePad + }; + } else { + return {ppad: ppad}; + } +} + +function extractPathCoords(path, paramsToUse) { + var extractedCoordinates = []; + + var segments = path.match(constants.segmentRE); + segments.forEach(function(segment) { + var relevantParamIdx = paramsToUse[segment.charAt(0)].drawn; + if(relevantParamIdx === undefined) return; + + var params = segment.substr(1).match(constants.paramRE); + if(!params || params.length < relevantParamIdx) return; + + extractedCoordinates.push(params[relevantParamIdx]); + }); + + return extractedCoordinates; +} + function shapeBounds(ax, v0, v1, path, paramsToUse) { var convertVal = (ax.type === 'category') ? ax.r2c : ax.d2c; diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 271e37c4861..7b7c1ca61ee 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -122,8 +122,11 @@ function setupDragElement(gd, shapePath, shapeOptions, index) { var MINWIDTH = 10, MINHEIGHT = 10; + var xPixelSized = shapeOptions.xsizemode === 'pixel', + yPixelSized = shapeOptions.ysizemode === 'pixel'; + var update; - var x0, y0, x1, y1, astrX0, astrY0, astrX1, astrY1; + var x0, y0, x1, y1, xAnchor, yAnchor, astrX0, astrY0, astrX1, astrY1, astrXAnchor, astrYAnchor; var n0, s0, w0, e0, astrN, astrS, astrW, astrE, optN, optS, optW, optE; var pathIn, astrPath; @@ -171,15 +174,25 @@ function setupDragElement(gd, shapePath, shapeOptions, index) { // setup update strings and initial values var astr = 'shapes[' + index + ']'; + + if(xPixelSized) { + xAnchor = x2p(shapeOptions.xanchor); + astrXAnchor = astr + '.xanchor'; + } + if(yPixelSized) { + yAnchor = y2p(shapeOptions.yanchor); + astrYAnchor = astr + '.yanchor'; + } + if(shapeOptions.type === 'path') { pathIn = shapeOptions.path; astrPath = astr + '.path'; } else { - x0 = x2p(shapeOptions.x0); - y0 = y2p(shapeOptions.y0); - x1 = x2p(shapeOptions.x1); - y1 = y2p(shapeOptions.y1); + x0 = xPixelSized ? shapeOptions.x0 : x2p(shapeOptions.x0); + y0 = yPixelSized ? shapeOptions.y0 : y2p(shapeOptions.y0); + x1 = xPixelSized ? shapeOptions.x1 : x2p(shapeOptions.x1); + y1 = yPixelSized ? shapeOptions.y1 : y2p(shapeOptions.y1); astrX0 = astr + '.x0'; astrY0 = astr + '.y0'; @@ -195,7 +208,10 @@ function setupDragElement(gd, shapePath, shapeOptions, index) { w0 = x1; astrW = astr + '.x1'; optW = 'x1'; e0 = x0; astrE = astr + '.x0'; optE = 'x0'; } - if(y0 < y1) { + + // For fixed size shapes take opposing direction of y-axis into account. + // Hint: For data sized shapes this is done by the y2p function. + if((!yPixelSized && y0 < y1) || (yPixelSized && y0 > y1)) { n0 = y0; astrN = astr + '.y0'; optN = 'y0'; s0 = y1; astrS = astr + '.y1'; optS = 'y1'; } @@ -218,20 +234,41 @@ function setupDragElement(gd, shapePath, shapeOptions, index) { function moveShape(dx, dy) { if(shapeOptions.type === 'path') { - var moveX = function moveX(x) { return p2x(x2p(x) + dx); }; - if(xa && xa.type === 'date') moveX = helpers.encodeDate(moveX); + var noOp = function(coord) { return coord; }, + moveX = noOp, + moveY = noOp; + + if(xPixelSized) { + update[astrXAnchor] = shapeOptions.xanchor = p2x(xAnchor + dx); + } else { + moveX = function moveX(x) { return p2x(x2p(x) + dx); }; + if(xa && xa.type === 'date') moveX = helpers.encodeDate(moveX); + } - var moveY = function moveY(y) { return p2y(y2p(y) + dy); }; - if(ya && ya.type === 'date') moveY = helpers.encodeDate(moveY); + if(yPixelSized) { + update[astrYAnchor] = shapeOptions.yanchor = p2y(yAnchor + dy); + } else { + moveY = function moveY(y) { return p2y(y2p(y) + dy); }; + if(ya && ya.type === 'date') moveY = helpers.encodeDate(moveY); + } shapeOptions.path = movePath(pathIn, moveX, moveY); update[astrPath] = shapeOptions.path; } else { - update[astrX0] = shapeOptions.x0 = p2x(x0 + dx); - update[astrY0] = shapeOptions.y0 = p2y(y0 + dy); - update[astrX1] = shapeOptions.x1 = p2x(x1 + dx); - update[astrY1] = shapeOptions.y1 = p2y(y1 + dy); + if(xPixelSized) { + update[astrXAnchor] = shapeOptions.xanchor = p2x(xAnchor + dx); + } else { + update[astrX0] = shapeOptions.x0 = p2x(x0 + dx); + update[astrX1] = shapeOptions.x1 = p2x(x1 + dx); + } + + if(yPixelSized) { + update[astrYAnchor] = shapeOptions.yanchor = p2y(yAnchor + dy); + } else { + update[astrY0] = shapeOptions.y0 = p2y(y0 + dy); + update[astrY1] = shapeOptions.y1 = p2y(y1 + dy); + } } shapePath.attr('d', getPathString(gd, shapeOptions)); @@ -240,11 +277,23 @@ function setupDragElement(gd, shapePath, shapeOptions, index) { function resizeShape(dx, dy) { if(shapeOptions.type === 'path') { // TODO: implement path resize - var moveX = function moveX(x) { return p2x(x2p(x) + dx); }; - if(xa && xa.type === 'date') moveX = helpers.encodeDate(moveX); + var noOp = function(coord) { return coord; }, + moveX = noOp, + moveY = noOp; + + if(xPixelSized) { + update[astrXAnchor] = shapeOptions.xanchor = p2x(xAnchor + dx); + } else { + moveX = function moveX(x) { return p2x(x2p(x) + dx); }; + if(xa && xa.type === 'date') moveX = helpers.encodeDate(moveX); + } - var moveY = function moveY(y) { return p2y(y2p(y) + dy); }; - if(ya && ya.type === 'date') moveY = helpers.encodeDate(moveY); + if(yPixelSized) { + update[astrYAnchor] = shapeOptions.yanchor = p2y(yAnchor + dy); + } else { + moveY = function moveY(y) { return p2y(y2p(y) + dy); }; + if(ya && ya.type === 'date') moveY = helpers.encodeDate(moveY); + } shapeOptions.path = movePath(pathIn, moveX, moveY); update[astrPath] = shapeOptions.path; @@ -255,14 +304,21 @@ function setupDragElement(gd, shapePath, shapeOptions, index) { newW = (~dragMode.indexOf('w')) ? w0 + dx : w0, newE = (~dragMode.indexOf('e')) ? e0 + dx : e0; - if(newS - newN > MINHEIGHT) { - update[astrN] = shapeOptions[optN] = p2y(newN); - update[astrS] = shapeOptions[optS] = p2y(newS); + // Do things in opposing direction for y-axis. + // Hint: for data-sized shapes the reversal of axis direction is done in p2y. + if(~dragMode.indexOf('n') && yPixelSized) newN = n0 - dy; + if(~dragMode.indexOf('s') && yPixelSized) newS = s0 - dy; + + // Update shape eventually. Again, be aware of the + // opposing direction of the y-axis of fixed size shapes. + if((!yPixelSized && newS - newN > MINHEIGHT) || + (yPixelSized && newN - newS > MINHEIGHT)) { + update[astrN] = shapeOptions[optN] = yPixelSized ? newN : p2y(newN); + update[astrS] = shapeOptions[optS] = yPixelSized ? newS : p2y(newS); } - if(newE - newW > MINWIDTH) { - update[astrW] = shapeOptions[optW] = p2x(newW); - update[astrE] = shapeOptions[optE] = p2x(newE); + update[astrW] = shapeOptions[optW] = xPixelSized ? newW : p2x(newW); + update[astrE] = shapeOptions[optE] = xPixelSized ? newE : p2x(newE); } } @@ -275,10 +331,8 @@ function getPathString(gd, options) { xa = Axes.getFromId(gd, options.xref), ya = Axes.getFromId(gd, options.yref), gs = gd._fullLayout._size, - x2r, - x2p, - y2r, - y2p; + x2r, x2p, y2r, y2p, + x0, x1, y0, y1; if(xa) { x2r = helpers.shapePositionToRange(xa); @@ -299,13 +353,28 @@ function getPathString(gd, options) { if(type === 'path') { if(xa && xa.type === 'date') x2p = helpers.decodeDate(x2p); if(ya && ya.type === 'date') y2p = helpers.decodeDate(y2p); - return convertPath(options.path, x2p, y2p); + return convertPath(options, x2p, y2p); + } + + if(options.xsizemode === 'pixel') { + var xAnchorPos = x2p(options.xanchor); + x0 = xAnchorPos + options.x0; + x1 = xAnchorPos + options.x1; + } + else { + x0 = x2p(options.x0); + x1 = x2p(options.x1); } - var x0 = x2p(options.x0), - x1 = x2p(options.x1), - y0 = y2p(options.y0), + if(options.ysizemode === 'pixel') { + var yAnchorPos = y2p(options.yanchor); + y0 = yAnchorPos - options.y0; + y1 = yAnchorPos - options.y1; + } + else { + y0 = y2p(options.y0); y1 = y2p(options.y1); + } if(type === 'line') return 'M' + x0 + ',' + y0 + 'L' + x1 + ',' + y1; if(type === 'rect') return 'M' + x0 + ',' + y0 + 'H' + x1 + 'V' + y1 + 'H' + x0 + 'Z'; @@ -322,8 +391,14 @@ function getPathString(gd, options) { } -function convertPath(pathIn, x2p, y2p) { - // convert an SVG path string from data units to pixels +function convertPath(options, x2p, y2p) { + var pathIn = options.path, + xSizemode = options.xsizemode, + ySizemode = options.ysizemode, + xAnchor = options.xanchor, + yAnchor = options.yanchor; + + return pathIn.replace(constants.segmentRE, function(segment) { var paramNumber = 0, segmentType = segment.charAt(0), @@ -332,8 +407,14 @@ function convertPath(pathIn, x2p, y2p) { nParams = constants.numParams[segmentType]; var paramString = segment.substr(1).replace(constants.paramRE, function(param) { - if(xParams[paramNumber]) param = x2p(param); - else if(yParams[paramNumber]) param = y2p(param); + if(xParams[paramNumber]) { + if(xSizemode === 'pixel') param = x2p(xAnchor) + Number(param); + else param = x2p(param); + } + else if(yParams[paramNumber]) { + if(ySizemode === 'pixel') param = y2p(yAnchor) - Number(param); + else param = y2p(param); + } paramNumber++; if(paramNumber > nParams) param = 'X'; diff --git a/src/components/shapes/shape_defaults.js b/src/components/shapes/shape_defaults.js index dc80021f9c8..66259ac63d7 100644 --- a/src/components/shapes/shape_defaults.js +++ b/src/components/shapes/shape_defaults.js @@ -36,32 +36,37 @@ module.exports = function handleShapeDefaults(shapeIn, shapeOut, fullLayout, opt coerce('line.dash'); var dfltType = shapeIn.path ? 'path' : 'rect', - shapeType = coerce('type', dfltType); + shapeType = coerce('type', dfltType), + xSizeMode = coerce('xsizemode'), + ySizeMode = coerce('ysizemode'); // positioning var axLetters = ['x', 'y']; for(var i = 0; i < 2; i++) { var axLetter = axLetters[i], - gdMock = {_fullLayout: fullLayout}; + attrAnchor = axLetter + 'anchor', + sizeMode = axLetter === 'x' ? xSizeMode : ySizeMode, + gdMock = {_fullLayout: fullLayout}, + ax, + pos2r, + r2pos; // xref, yref var axRef = Axes.coerceRef(shapeIn, shapeOut, gdMock, axLetter, '', 'paper'); + if(axRef !== 'paper') { + ax = Axes.getFromId(gdMock, axRef); + r2pos = helpers.rangeToShapePosition(ax); + pos2r = helpers.shapePositionToRange(ax); + } + else { + pos2r = r2pos = Lib.identity; + } + + // Coerce x0, x1, y0, y1 if(shapeType !== 'path') { var dflt0 = 0.25, - dflt1 = 0.75, - ax, - pos2r, - r2pos; - - if(axRef !== 'paper') { - ax = Axes.getFromId(gdMock, axRef); - r2pos = helpers.rangeToShapePosition(ax); - pos2r = helpers.shapePositionToRange(ax); - } - else { - pos2r = r2pos = Lib.identity; - } + dflt1 = 0.75; // hack until V2.0 when log has regular range behavior - make it look like other // ranges to send to coerce, then put it back after @@ -74,9 +79,13 @@ module.exports = function handleShapeDefaults(shapeIn, shapeOut, fullLayout, opt shapeIn[attr0] = pos2r(shapeIn[attr0], true); shapeIn[attr1] = pos2r(shapeIn[attr1], true); - // x0, x1 (and y0, y1) - Axes.coercePosition(shapeOut, gdMock, coerce, axRef, attr0, dflt0); - Axes.coercePosition(shapeOut, gdMock, coerce, axRef, attr1, dflt1); + if(sizeMode === 'pixel') { + coerce(attr0, 0); + coerce(attr1, 10); + } else { + Axes.coercePosition(shapeOut, gdMock, coerce, axRef, attr0, dflt0); + Axes.coercePosition(shapeOut, gdMock, coerce, axRef, attr1, dflt1); + } // hack part 2 shapeOut[attr0] = r2pos(shapeOut[attr0]); @@ -84,6 +93,19 @@ module.exports = function handleShapeDefaults(shapeIn, shapeOut, fullLayout, opt shapeIn[attr0] = in0; shapeIn[attr1] = in1; } + + // Coerce xanchor and yanchor + if(sizeMode === 'pixel') { + // Hack for log axis described above + var inAnchor = shapeIn[attrAnchor]; + shapeIn[attrAnchor] = pos2r(shapeIn[attrAnchor], true); + + Axes.coercePosition(shapeOut, gdMock, coerce, axRef, attrAnchor, 0.25); + + // Hack part 2 + shapeOut[attrAnchor] = r2pos(shapeOut[attrAnchor]); + shapeIn[attrAnchor] = inAnchor; + } } if(shapeType === 'path') { diff --git a/test/jasmine/tests/shapes_test.js b/test/jasmine/tests/shapes_test.js index c80361c0081..c5c9b5e77b6 100644 --- a/test/jasmine/tests/shapes_test.js +++ b/test/jasmine/tests/shapes_test.js @@ -13,6 +13,23 @@ var destroyGraphDiv = require('../assets/destroy_graph_div'); var failTest = require('../assets/fail_test'); var drag = require('../assets/drag'); +var customAssertions = require('../assets/custom_assertions'); +var assertElemRightTo = customAssertions.assertElemRightTo; +var assertElemTopsAligned = customAssertions.assertElemTopsAligned; +var assertElemInside = customAssertions.assertElemInside; + +// Reusable vars +var shapeTypes = [{type: 'rect'}, {type: 'circle'}, {type: 'line'}]; +var resizeDirections = ['n', 's', 'w', 'e', 'nw', 'se', 'ne', 'sw']; +var resizeTypes = [ + {resizeType: 'shrink', resizeDisplayName: 'shrunken'}, + {resizeType: 'enlarge', resizeDisplayName: 'enlarged'} +]; +var dxToShrinkWidth = { n: 0, s: 0, w: 10, e: -10, nw: 10, se: -10, ne: -10, sw: 10 }; +var dyToShrinkHeight = { n: 10, s: -10, w: 0, e: 0, nw: 10, se: -10, ne: 10, sw: -10 }; +var dxToEnlargeWidth = { n: 0, s: 0, w: -10, e: 10, nw: -10, se: 10, ne: 10, sw: -10 }; +var dyToEnlargeHeight = { n: -10, s: 10, w: 0, e: 0, nw: -10, se: 10, ne: -10, sw: 10 }; + describe('Test shapes defaults:', function() { 'use strict'; @@ -626,6 +643,508 @@ describe('Test shapes: a plot with shapes and an overlaid axis', function() { }); }); +function getFirstShapeNode() { + return d3.selectAll('.shapelayer path').node(); +} + +function assertShapeSize(shapeNode, w, h) { + var bBox = shapeNode.getBoundingClientRect(); + expect(bBox.width).toBe(w); + expect(bBox.height).toBe(h); +} + +function assertShapeFullyVisible(shapeElem) { + var gridLayer = d3.selectAll('.gridlayer').node(); + assertElemInside(shapeElem, gridLayer, 'shape element fully visible'); +} + +describe('A path shape sized relative to data', function() { + 'use strict'; + + var gd, data, layout; + + beforeEach(function() { + gd = createGraphDiv(); + data = [{ + x: [1, 5], + y: [1, 5], + type: 'scatter' + }]; + layout = { + title: 'Path shape sized relative to data', + width: 400, + height: 400, + shapes: [{ + type: 'path', + xref: 'x', + yref: 'y', + xsizemode: 'data', + ysizemode: 'data', + path: 'M10,0 L2,10 L1,0 Z', + + // Hint: set those too intentionally + xanchor: '3', + yanchor: '0', + x0: 1, + x1: 3, + y0: 1, + y1: 3 + }] + }; + }); + + afterEach(destroyGraphDiv); + + it('is expanding an auto-ranging axes', function() { + Plotly.plot(gd, data, layout); + + assertShapeFullyVisible(getFirstShapeNode()); + }); +}); + +describe('A fixed size path shape', function() { + 'use strict'; + + var gd, data, layout; + + beforeEach(function() { + gd = createGraphDiv(); + data = [{ + x: [1, 5], + y: [1, 5], + type: 'scatter' + }]; + layout = { + title: 'Fixed size path shape', + width: 400, + height: 400, + shapes: [{ + type: 'path', + xref: 'x', + yref: 'y', + xsizemode: 'pixel', + ysizemode: 'pixel', + path: 'M0,0 L30,0 L15,20 Z', + xanchor: '3', + yanchor: '0', + + // Hint: set those too intentionally + x0: 1, + x1: 3, + y0: 1, + y1: 3 + }] + }; + }); + + afterEach(destroyGraphDiv); + + it('is defined in pixel', function() { + Plotly.plot(gd, data, layout); + + assertShapeSize(getFirstShapeNode(), 30, 20); + }); + + it('is expanding auto-ranging axes', function() { + layout.shapes[0].xanchor = 10; + layout.shapes[0].yanchor = 10; + + Plotly.plot(gd, data, layout); + + assertShapeFullyVisible(getFirstShapeNode()); + }); + + it('is being rendered correctly when linked to a date axis', function() { + data = [{ + x: ['2018-01-01 00:00:00', + '2018-02-01 00:00:00', + '2018-03-01 00:00:00', + '2018-04-01 00:00:00'], + y: [3, 4, 2, 5], + type: 'scatter' + }]; + layout.shapes[0].xanchor = '2018-07-01 00:00:00'; + layout.shapes[0].yanchor = 10; + + Plotly.plot(gd, data, layout); + + var shapeNode = getFirstShapeNode(); + assertShapeFullyVisible(shapeNode); + assertShapeSize(shapeNode, 30, 20); + }); + + it('keeps its dimensions when plot is being resized', function(done) { + Plotly.plot(gd, data, layout); + + assertShapeSize(getFirstShapeNode(), 30, 20); + + Plotly.relayout(gd, {height: 200, width: 600}).then(function() { + assertShapeSize(getFirstShapeNode(), 30, 20); + }) + .catch(failTest) + .then(done); + }); + + it('is draggable', function(done) { + Plotly.plot(gd, data, layout, {editable: true}) + .then(function() { + drag(getFirstShapeNode(), 50, 50).then(function() { + assertShapeSize(getFirstShapeNode(), 30, 20); + done(); + }); + }); + }); + + it('being sized relative to data horizontally is getting narrower ' + + 'when being dragged to expand the x-axis', + function(done) { + layout.shapes[0].xsizemode = 'data'; + layout.shapes[0].path = 'M0,0 L2,0 L1,20 Z'; + + Plotly.plot(gd, data, layout, {editable: true}) + .then(function() { + var shapeNodeBeforeDrag = getFirstShapeNode(); + var widthBeforeDrag = shapeNodeBeforeDrag.getBoundingClientRect().width; + + drag(shapeNodeBeforeDrag, 300, 50).then(function() { + var shapeNodeAfterDrag = getFirstShapeNode(); + var bbox = shapeNodeAfterDrag.getBoundingClientRect(); + expect(bbox.height).toBe(20); + expect(bbox.width).toBeLessThan(widthBeforeDrag); + assertShapeFullyVisible(shapeNodeAfterDrag); + done(); + }); + }); + }); + + it('being sized relative to data vertically is getting lower ' + + 'when being dragged to expand the y-axis', + function(done) { + layout.shapes[0].ysizemode = 'data'; + layout.shapes[0].path = 'M0,0 L30,0 L15,2 Z'; + + Plotly.plot(gd, data, layout, {editable: true}) + .then(function() { + var shapeNodeBeforeDrag = getFirstShapeNode(); + var heightBeforeDrag = shapeNodeBeforeDrag.getBoundingClientRect().height; + + drag(shapeNodeBeforeDrag, 50, 300).then(function() { + var shapeNodeAfterDrag = getFirstShapeNode(); + var bbox = shapeNodeAfterDrag.getBoundingClientRect(); + expect(bbox.width).toBe(30); + expect(bbox.height).toBeLessThan(heightBeforeDrag); + assertShapeFullyVisible(shapeNodeAfterDrag); + done(); + }); + }); + }); +}); + +describe('A fixed size shape', function() { + 'use strict'; + + var gd, data, layout; + + beforeEach(function() { + gd = createGraphDiv(); + data = [{ + x: [1, 5], + y: [1, 5], + type: 'scatter' + }]; + layout = { + title: 'Fixed size shape', + width: 400, + height: 400, + shapes: [{ + type: 'rect', + xref: 'x', + yref: 'y', + xsizemode: 'pixel', + ysizemode: 'pixel', + xanchor: '3', + yanchor: '0', + x0: 3, + x1: 28, + y0: 0, + y1: -25 + }] + }; + }); + + afterEach(destroyGraphDiv); + + it('can be positioned relative to data', function() { + Plotly.plot(gd, data, layout); + + var shapeNode = getFirstShapeNode(); + assertShapeSize(shapeNode, 25, 25); + + // Check position relative to data with zero line and grid line as a reference + var xAxisLine = d3.selectAll('.zerolinelayer .yzl').node(); + assertElemTopsAligned(shapeNode, xAxisLine, 'Top edges of shape and x-axis zero line aligned'); + var gridLine = d3.selectAll('.gridlayer .xgrid:nth-child(3)').node(); + assertElemRightTo(shapeNode, gridLine, 'Shape right to third grid line'); + }); + + it('can be positioned relative to the plotting area', function() { + layout.shapes[0].xref = 'paper'; + layout.shapes[0].yref = 'paper'; + layout.shapes[0].xanchor = '1'; + layout.shapes[0].yanchor = '1'; + Plotly.plot(gd, data, layout); + + var shapeNode = getFirstShapeNode(); + assertShapeSize(shapeNode, 25, 25); + assertElemRightTo(shapeNode, d3.selectAll('.cartesianlayer').node(), 'Shape right to plotting area'); + }); + + it('can be sized by pixel horizontally and relative to data vertically', function() { + layout.shapes[0].ysizemode = 'data'; + layout.shapes[0].y0 = 1; + layout.shapes[0].y1 = 5; + Plotly.plot(gd, data, layout); + + var shapeNode = getFirstShapeNode(); + var bBox = shapeNode.getBoundingClientRect(); + expect(bBox.width).toBeLessThan(bBox.height); + expect(bBox.width).toBe(25); + }); + + it('can be sized relative to data vertically and by pixel horizontally', function() { + layout.shapes[0].xsizemode = 'data'; + layout.shapes[0].x0 = 1; + layout.shapes[0].x1 = 5; + Plotly.plot(gd, data, layout); + + var shapeNode = getFirstShapeNode(); + var bBox = shapeNode.getBoundingClientRect(); + expect(bBox.height).toBeLessThan(bBox.width); + expect(bBox.height).toBe(25); + }); + + it('is being rendered correctly when linked to a date axis', function() { + data = [{ + x: ['2018-01-01 00:00:00', + '2018-02-01 00:00:00', + '2018-03-01 00:00:00', + '2018-04-01 00:00:00'], + y: [3, 4, 2, 5], + type: 'scatter' + }]; + layout.shapes[0].xanchor = '2018-07-01 00:00:00'; + layout.shapes[0].yanchor = 10; + + Plotly.plot(gd, data, layout); + + var shapeNode = getFirstShapeNode(); + assertShapeFullyVisible(shapeNode); + assertShapeSize(shapeNode, 25, 25); + }); + + it('keeps its dimensions when plot is being resized', function(done) { + layout.shapes[0].yanchor = 3; // Ensure visible for debugging + Plotly.plot(gd, data, layout); + + var shapeNode = getFirstShapeNode(); + assertShapeSize(shapeNode, 25, 25); + + Plotly.relayout(gd, {height: 200, width: 600}).then(function() { + var reRenderedShapeNode = getFirstShapeNode(); + assertShapeSize(reRenderedShapeNode, 25, 25); + }) + .catch(failTest) + .then(done); + }); + + it('is draggable', function(done) { + Plotly.plot(gd, data, layout, {editable: true}) + .then(function() { + drag(getFirstShapeNode(), 50, 50).then(function() { + assertShapeSize(getFirstShapeNode(), 25, 25); + done(); + }); + }); + }); + + it('being sized relative to data horizontally is getting narrower ' + + 'when being dragged to expand the x-axis', + function(done) { + layout.shapes[0].xsizemode = 'data'; + layout.shapes[0].x0 = 1; + layout.shapes[0].x1 = 2; + + Plotly.plot(gd, data, layout, {editable: true}) + .then(function() { + var shapeNodeBeforeDrag = getFirstShapeNode(); + var widthBeforeDrag = shapeNodeBeforeDrag.getBoundingClientRect().width; + + drag(shapeNodeBeforeDrag, 300, 50).then(function() { + var shapeNodeAfterDrag = getFirstShapeNode(); + var bbox = shapeNodeAfterDrag.getBoundingClientRect(); + expect(bbox.height).toBe(25); + expect(bbox.width).toBeLessThan(widthBeforeDrag); + assertShapeFullyVisible(shapeNodeAfterDrag); + done(); + }); + }); + }); + + it('being sized relative to data vertically is getting lower ' + + 'when being dragged to expand the y-axis', + function(done) { + layout.shapes[0].ysizemode = 'data'; + layout.shapes[0].y0 = 1; + layout.shapes[0].y1 = 2; + + Plotly.plot(gd, data, layout, {editable: true}) + .then(function() { + var shapeNodeBeforeDrag = getFirstShapeNode(); + var heightBeforeDrag = shapeNodeBeforeDrag.getBoundingClientRect().height; + + drag(shapeNodeBeforeDrag, 50, 300).then(function() { + var shapeNodeAfterDrag = getFirstShapeNode(); + var bbox = shapeNodeAfterDrag.getBoundingClientRect(); + expect(bbox.width).toBe(25); + expect(bbox.height).toBeLessThan(heightBeforeDrag); + assertShapeFullyVisible(shapeNodeAfterDrag); + done(); + }); + }); + }); + + // Helper to combine two arrays of objects + function combinations(arr1, arr2) { + var combinations = []; + arr1.forEach(function(elemArr1) { + arr2.forEach(function(elemArr2) { + combinations.push(Lib.extendFlat({}, elemArr1, elemArr2)); + }); + }); + return combinations; + } + + var shapeAndResizeTypes = combinations(shapeTypes, resizeTypes); + shapeAndResizeTypes.forEach(function(testCase) { + describe('of type ' + testCase.type + ' can be ' + testCase.resizeDisplayName, function() { + resizeDirections.forEach(function(direction) { + it('over direction ' + direction, function(done) { + layout.shapes[0].type = testCase.type; + + Plotly.plot(gd, data, layout, {editable: true}) + .then(function() { + var shapeNodeBeforeDrag = getFirstShapeNode(); + var bBoxBeforeDrag = shapeNodeBeforeDrag.getBoundingClientRect(); + + var shallShrink = testCase.resizeType === 'shrink'; + var dx = shallShrink ? dxToShrinkWidth[direction] : dxToEnlargeWidth[direction]; + var dy = shallShrink ? dyToShrinkHeight[direction] : dyToEnlargeHeight[direction]; + + drag(shapeNodeBeforeDrag, dx, dy, direction) + .then(function() { + var shapeNodeAfterDrag = getFirstShapeNode(); + var bBoxAfterDrag = shapeNodeAfterDrag.getBoundingClientRect(); + var resizeFactor = shallShrink ? -1 : 1; + expect(bBoxAfterDrag.height).toBe(bBoxBeforeDrag.height + resizeFactor * Math.abs(dy)); + expect(bBoxAfterDrag.width).toBe(bBoxBeforeDrag.width + resizeFactor * Math.abs(dx)); + assertShapeFullyVisible(shapeNodeAfterDrag); + done(); + }); + }); + }); + }); + }); + }); + + describe('is expanding an auto-ranging x-axis', function() { + var sizeVariants = [ + {x0: 5, x1: 25}, + {x0: 5, x1: -25}, + {x0: -5, x1: 25}, + {x0: -5, x1: -25} + ]; + var shapeVariants = combinations(shapeTypes, sizeVariants); + + describe('to the left', function() { + shapeVariants.forEach(function(testCase) { + it('and is fully visible when being a ' + testCase.type + + ' with x0,x1=[' + testCase.x0 + ',' + testCase.x1 + ']', + function() { + layout.shapes[0].type = testCase.type; + layout.shapes[0].xanchor = -1; + layout.shapes[0].x0 = testCase.x0; + layout.shapes[0].x1 = testCase.x1; + Plotly.plot(gd, data, layout); + + expect(gd.layout.xaxis.range[0]).toBeLessThanOrEqual(-1); + assertShapeFullyVisible(getFirstShapeNode()); + }); + }); + }); + + describe('to the right', function() { + shapeVariants.forEach(function(testCase) { + it('and is fully visible when being a ' + testCase.type + + ' with x0,x1=[' + testCase.x0 + ',' + testCase.x1 + ']', + function() { + layout.shapes[0].type = testCase.type; + layout.shapes[0].xanchor = 10; + layout.shapes[0].x0 = testCase.x0; + layout.shapes[0].x1 = testCase.x1; + Plotly.plot(gd, data, layout); + + expect(gd.layout.xaxis.range[1]).toBeGreaterThanOrEqual(10); + assertShapeFullyVisible(getFirstShapeNode()); + }); + }); + }); + }); + + describe('is expanding an auto-ranging y-axis', function() { + var sizeVariants = [ + {y0: 5, y1: 25}, + {y0: 5, y1: -25}, + {y0: -5, y1: 25}, + {y0: -5, y1: -25} + ]; + var shapeVariants = combinations(shapeTypes, sizeVariants); + + describe('to the bottom', function() { + shapeVariants.forEach(function(testCase) { + it('and is fully visible when being a ' + testCase.type + + ' with y0,y1=[' + testCase.y0 + ',' + testCase.y1 + ']', + function() { + layout.shapes[0].type = testCase.type; + layout.shapes[0].yanchor = -1; + layout.shapes[0].y0 = testCase.y0; + layout.shapes[0].y1 = testCase.y1; + Plotly.plot(gd, data, layout); + + expect(gd.layout.yaxis.range[0]).toBeLessThanOrEqual(-1); + assertShapeFullyVisible(getFirstShapeNode()); + }); + }); + }); + + describe('to the top', function() { + shapeVariants.forEach(function(testCase) { + it('and is fully visible when being a ' + testCase.type + + ' with y0,y1=[' + testCase.y0 + ',' + testCase.y1 + ']', + function() { + layout.shapes[0].type = testCase.type; + layout.shapes[0].yanchor = 10; + layout.shapes[0].y0 = testCase.y0; + layout.shapes[0].y1 = testCase.y1; + Plotly.plot(gd, data, layout); + + expect(gd.layout.yaxis.range[1]).toBeGreaterThanOrEqual(10); + assertShapeFullyVisible(getFirstShapeNode()); + }); + }); + }); + }); +}); + describe('@flaky Test shapes', function() { 'use strict'; @@ -675,7 +1194,7 @@ describe('@flaky Test shapes', function() { }); testCases.forEach(function(testCase) { - ['n', 's', 'w', 'e', 'nw', 'se', 'ne', 'sw'].forEach(function(direction) { + resizeDirections.forEach(function(direction) { var testTitle = testCase.title + 'should be resizeable over direction ' + direction; @@ -777,12 +1296,6 @@ describe('@flaky Test shapes', function() { expect(layoutShapes.length).toBe(4); // line, rect, circle and path - var dxToShrinkWidth = { - n: 0, s: 0, w: 10, e: -10, nw: 10, se: -10, ne: -10, sw: 10 - }, - dyToShrinkHeight = { - n: 10, s: -10, w: 0, e: 0, nw: 10, se: -10, ne: 10, sw: -10 - }; layoutShapes.forEach(function(layoutShape, index) { if(layoutShape.path) return; From c2203fa4fad703153b1f3b9d63699f2cbb850037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=B6stl?= Date: Tue, 10 Apr 2018 20:06:52 +0200 Subject: [PATCH 4/8] Rename 'data' to 'scaled' for size mode attrs of fixed size shapes #2193 --- src/components/shapes/attributes.js | 30 ++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/components/shapes/attributes.js b/src/components/shapes/attributes.js index 070207064c7..7fce0cce265 100644 --- a/src/components/shapes/attributes.js +++ b/src/components/shapes/attributes.js @@ -77,18 +77,20 @@ module.exports = { }), xsizemode: { valType: 'enumerated', - values: ['data', 'pixel'], - dflt: 'data', + values: ['scaled', 'pixel'], + dflt: 'scaled', role: 'info', editType: 'calcIfAutorange+arraydraw', description: [ 'Sets the shapes\'s sizing mode along the x axis.', - 'If set to *data*, `x0`, `x1` and x coordinates within `path` refer to', - 'data values on the x axis.', + 'If set to *scaled*, `x0`, `x1` and x coordinates within `path` refer to', + 'data values on the x axis or a fraction of the plot area\'s width', + '(`xref` set to *paper*).', 'If set to *pixel*, `xanchor` specifies the x position in terms', - 'of data but `x0`, `x1` and x coordinates within `path`', + 'of data or plot fraction but `x0`, `x1` and x coordinates within `path`', 'are pixels relative to `xanchor`. This way, the shape can have', - 'a fixed width while maintaining a position relative to data.' + 'a fixed width while maintaining a position relative to data or', + 'plot fraction.' ].join(' ') }, xanchor: { @@ -134,18 +136,20 @@ module.exports = { }), ysizemode: { valType: 'enumerated', - values: ['data', 'pixel'], - dflt: 'data', + values: ['scaled', 'pixel'], + dflt: 'scaled', role: 'info', editType: 'calcIfAutorange+arraydraw', description: [ 'Sets the shapes\'s sizing mode along the y axis.', - 'If set to *data*, `y0`, `y1` and y coordinates within `path` refer to', - 'data values on the y axis.', + 'If set to *scaled*, `y0`, `y1` and y coordinates within `path` refer to', + 'data values on the y axis or a fraction of the plot area\'s height', + '(`yref` set to *paper*).', 'If set to *pixel*, `yanchor` specifies the y position in terms', - 'of data but `y0`, `y1` and y coordinates within `path`', + 'of data or plot fraction but `y0`, `y1` and y coordinates within `path`', 'are pixels relative to `yanchor`. This way, the shape can have', - 'a fixed height while maintaining a position relative to data.' + 'a fixed height while maintaining a position relative to data or', + 'plot fraction.' ].join(' ') }, yanchor: { @@ -185,7 +189,7 @@ module.exports = { editType: 'calcIfAutorange+arraydraw', description: [ 'For `type` *path* - a valid SVG path with the pixel values', - 'replaced by data values in `xsizemode`/`ysizemode` being *data*', + 'replaced by data values in `xsizemode`/`ysizemode` being *scaled*', 'and taken unmodified as pixels relative to `xanchor` and `yanchor`', 'in case of *pixel* size mode.', 'There are a few restrictions / quirks', From ce9691c97a4937af8b26b7f66652c8321f9fda6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=B6stl?= Date: Tue, 10 Apr 2018 21:47:07 +0200 Subject: [PATCH 5/8] Add an image test for fixed size shapes #2193 - Note: not an exhaustive mock with all variations but rather a set of shapes covering the newly introduced capabilities, also useful for manually testing and debugging things. --- test/image/baselines/fixed_size_shapes.png | Bin 0 -> 81489 bytes test/image/mocks/fixed_size_shapes.json | 255 +++++++++++++++++++++ 2 files changed, 255 insertions(+) create mode 100644 test/image/baselines/fixed_size_shapes.png create mode 100644 test/image/mocks/fixed_size_shapes.json diff --git a/test/image/baselines/fixed_size_shapes.png b/test/image/baselines/fixed_size_shapes.png new file mode 100644 index 0000000000000000000000000000000000000000..d98d269d45ddfa8eae03e58c005199e3bf0e2513 GIT binary patch literal 81489 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

{M~dFG%70}@YzgS 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

92L3CD{2v9e-XX4GMb#bA5x% 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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/fixed_size_shapes.json b/test/image/mocks/fixed_size_shapes.json new file mode 100644 index 00000000000..33776e58486 --- /dev/null +++ b/test/image/mocks/fixed_size_shapes.json @@ -0,0 +1,255 @@ +{ + "data": [ + { + "x": [1,4], + "y": [1,4] + }, { + "x": [1,4], + "y": [1,5], + "xaxis": "x2", + "yaxis": "y2" + }, { + "x": [1,4], + "y": [1,5], + "xaxis": "x3", + "yaxis": "y3" + }, { + "x": [1,4], + "y": [1,5], + "xaxis": "x4", + "yaxis": "y4" + } + ], + "layout": { + "title": "Fixed size shapes", + "autosize": false, + "width": 1000, + "height": 800, + "xaxis": { + "domain": [0,0.30], + "anchor": "y", + "title": "rect, circle, line" + }, + "yaxis": { + "domain": [0.55,1], + "type": "linear", + "anchor": "x" + }, + "xaxis2": { + "domain":[0.33,0.66], + "anchor": "y2", + "title": "triangle as path" + }, + "yaxis2": { + "domain": [0.55,1], + "type": "linear", + "anchor": "x2" + }, + "xaxis3": { + "domain":[0.70,1], + "anchor": "y3", + "title": "drag / resize for auto-range" + }, + "yaxis3": { + "domain": [0.55,1], + "type": "linear", + "anchor": "x3" + }, + "xaxis4": { + "domain": [0,0.30], + "anchor": "y4", + "title": "xy pos & x size paper, y size pixel" + }, + "yaxis4": { + "domain": [0,0.45], + "type": "linear", + "anchor": "x4" + }, + "xaxis5": { + "domain":[0.33,0.66], + "anchor": "y5", + "title": "rects w/ mixed size modes" + }, + "yaxis5": { + "domain": [0,0.45], + "type": "linear", + "anchor": "x5" + }, + "xaxis6": { + "domain":[0.70,1], + "anchor": "y6", + "title": "paths w/ mixed size modes" + }, + "yaxis6": { + "domain": [0,0.45], + "type": "linear", + "anchor": "x6" + }, + "shapes": [ + { + "type": "circle", + "xref": "x", + "xsizemode": "pixel", + "yref": "y", + "ysizemode": "pixel", + "fillcolor": "rgba(96, 171, 50,0.7)", + "xanchor": 8, + "yanchor": 8, + "x0": -20, + "x1": 20, + "y0": 20, + "y1": -20, + "line": { + "color": "rgba(96, 171, 50, 1)" + } + }, + { + "type": "rect", + "xref": "x", + "xsizemode": "pixel", + "yref": "y", + "ysizemode": "pixel", + "fillcolor": "rgba(96, 171, 50,0.7)", + "xanchor": 7, + "yanchor": 8, + "x0": -20, + "x1": 20, + "y0": 20, + "y1": -20, + "line": { + "color": "rgba(96, 171, 50, 1)" + } + }, + { + "type": "line", + "xref": "x", + "xsizemode": "pixel", + "yref": "y", + "ysizemode": "pixel", + "fillcolor": "rgba(96, 171, 50,0.7)", + "xanchor": 6, + "yanchor": -3, + "x0": -20, + "x1": 60, + "y0": 0, + "y1": 40, + "line": { + "color": "rgba(96, 171, 50, 1)" + } + }, + { + "type": "path", + "xref": "x2", + "xsizemode": "pixel", + "yref": "y2", + "ysizemode": "pixel", + "fillcolor": "rgba(96, 171, 50,0.7)", + "xanchor": -1, + "yanchor": 10, + "path": "M0,0 L30,0 L15,15 Z", + "line": { + "color": "rgba(96, 171, 50, 1)" + } + }, + { + "type": "rect", + "xref": "x3", + "xsizemode": "pixel", + "yref": "y3", + "ysizemode": "pixel", + "fillcolor": "rgba(96, 171, 50,0.7)", + "xanchor": 2, + "yanchor": 2, + "x0": 3, + "x1": 53, + "y0": 20, + "y1": -20, + "line": { + "color": "rgba(96, 171, 50, 1)" + } + }, + { + "type": "rect", + "xref": "paper", + "xsizemode": "scaled", + "yref": "paper", + "ysizemode": "pixel", + "fillcolor": "rgba(96, 171, 50,0.7)", + "xanchor": 0, + "yanchor": 0, + "x0": 0, + "x1": 0.3, + "y0": 10, + "y1": -10, + "line": { + "color": "rgba(96, 171, 50, 1)" + } + }, + { + "type": "rect", + "xref": "x5", + "xsizemode": "scaled", + "yref": "y5", + "ysizemode": "pixel", + "fillcolor": "rgba(96, 171, 50,0.7)", + "xanchor": 0, + "yanchor": 10, + "x0": 0, + "x1": 10, + "y0": 0, + "y1": -30, + "line": { + "color": "rgba(96, 171, 50, 1)" + } + }, + { + "type": "rect", + "xref": "x5", + "xsizemode": "pixel", + "yref": "y5", + "ysizemode": "scaled", + "fillcolor": "rgba(96, 171, 50,0.7)", + "xanchor": 3, + "yanchor": 3, + "x0": 0, + "x1": 30, + "y0": 0, + "y1": 10, + "line": { + "color": "rgba(96, 171, 50, 1)" + } + }, + { + "type": "path", + "xref": "x6", + "xsizemode": "pixel", + "yref": "y6", + "ysizemode": "scaled", + "fillcolor": "rgba(96, 171, 50,0.7)", + "xanchor": 10, + "yanchor": 10, + "path": "M0,0 L30,0 L15,4 Z", + "line": { + "color": "rgba(96, 171, 50, 1)" + } + }, + { + "type": "path", + "xref": "x6", + "xsizemode": "scaled", + "yref": "y6", + "ysizemode": "pixel", + "fillcolor": "rgba(96, 171, 50,0.7)", + "xanchor": 10, + "yanchor": 10, + "path": "M0,0 L10,0 L5,25 Z", + "line": { + "color": "rgba(96, 171, 50, 1)" + } + } + ] + }, + "config": { + "editable": "true" + } +} \ No newline at end of file From 502aa6aecccef94f0fe2080b3d56d29653a58847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=B6stl?= Date: Wed, 11 Apr 2018 07:40:49 +0200 Subject: [PATCH 6/8] Add missing trailing new line char in fixed_size_shapes.json mock #2193 --- test/image/mocks/fixed_size_shapes.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/image/mocks/fixed_size_shapes.json b/test/image/mocks/fixed_size_shapes.json index 33776e58486..2137568acd4 100644 --- a/test/image/mocks/fixed_size_shapes.json +++ b/test/image/mocks/fixed_size_shapes.json @@ -252,4 +252,4 @@ "config": { "editable": "true" } -} \ No newline at end of file +} From 3bf6abb2af5da60cfe99285e5a8a49eb2b7eb101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=B6stl?= Date: Wed, 11 Apr 2018 08:08:43 +0200 Subject: [PATCH 7/8] Add log, date and categorical axes to fixed_size_shapes mock #2193 --- test/image/baselines/fixed_size_shapes.png | Bin 81489 -> 87291 bytes test/image/mocks/fixed_size_shapes.json | 22 ++++++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/test/image/baselines/fixed_size_shapes.png b/test/image/baselines/fixed_size_shapes.png index d98d269d45ddfa8eae03e58c005199e3bf0e2513..306caf72ed0c3a21a4449165247bdc2ca01ab754 100644 GIT binary patch literal 87291 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 VrM!E+ZIy!j80eU4S8KXN{sRDIOh^C# literal 81489 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

{M~dFG%70}@YzgS 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

92L3CD{2v9e-XX4GMb#bA5x% z^}o?-iAt0+c*jQIB`X`czB!UVym5tr`KL2%AiPEb-PFs8*)O$gYg4iufBz5?!T2FY z7zfFLT4+2fThR14hvDJ>#ICWu1QL!bH;np=8_s<#S152_;M$T{S{5+gKh*R)V?wVi07~SK zB6Zc(hF=7@xjT|;xAltoBh?^i4Kaqq5PCE8W|2AX+!fE*25x=DZ0?c-V;P230c~3f z#8RjBkds@G5c`a$l)s;3IbvT8LK3K2mHjKwnJd1hvrx)6y``}{5%*B|WPrj6MrfByV-HJN=|1Ciq6 z92hNp{{cQDcUOf$c%62mw`;zT{flTV!CVBgj655C^7W}En!F=5o0UHpi8DY8bkCbp zl(?n02l(3B+F~I?PH}zqOPKRr5y|~SCx71Q?t%B-fZ%R?S3$79iF(Y$TI!QA!+vPN z4$+?2j~V9)Bm@g7J%`T^jrnV|_m}Xy=c>m(uCM>~ob9eM0+b%sdFHESqH=Fd4my<( z-77(5ibJTjFKt>w+OrEicW$0|d-qGZP3N=G0w0N|kqI9OUe*_Lt%<}S=NzSpJ~$re zc>TEpgvhcCia6HIpA@j9wMfI)iG2#pNhq+ok>W!O!hov>?lrV!ge;yg5OJ;G#t2b8 zP9C6E)zqsgx^7off1O&S@IyT=c!i5rC=N{cyD@C1P}#M#DX}s1^n=nK0A_dJatfS?|grQW(Ev-dv)R z^uWZF!mYZHtMl<)Wq0-l3ffPsrnXA(k{0KzDe}T!F-)jQOCAfHuJD3OElL`5j0ii}R27r9bKIA7G6~N6znph&-OuUlfdNyVpbw)@YCkv&p zsDK>m(PQ!A`GA_qRVv^6!R-E0q8|7o+wYB?^jW{WS@>Y`D_?j`W=Rg zNhH3qF8^dwNljWK-LQ=HCv5g#F-%yKe)j%b`gw(Ct8Iq_18#lV)%4YdxG=lnM8`!v z0{^|Q?AGtTmJ(}^Q0FMC$FqflzJd|gh3qRL{McN6bcSjXZ!qG2h zI~wtJtXDoRWvOQ$70g?|xJKJ~widY^<5F+v)K-K0f_+(iw}k@6FPH(10=JtCr_UfU z98cDVcaTexSG_vuP)h#(OJ5NevE|UqpFigFt6_0y>>%@OyT;2D2Ing9)I3x3Xy|Gq67ta|D^43O)d;vDGGw@N!!cA15$RpzrHTe-}s?%d-To3jbewZyi?E*0qg`fOJVp zY*0!;DMh+LN&RYf%{Av3_qfMB#yHY6UyWfw)Y~jF0f&&Xak9zNW%2D1_9H=E7FKX-^p1=& zLAnk{-38mFc%g0LS`q}Ck1uylA(+2sv^ka=s)|Z(bC#N>eP3iKbqHiQu||%$6iCIM zc`PcFF7Ed;uJ+!4zqQ}r<_o1IJ2n^$v2L$bw<2Ow{~MamVufDce$Qy!1ZlW3o^JV} zhE{_y>FkoVN0nX?$k;e!?LJSyM%15f)vG*s{lNtA6GJKdQe1iJp;!<@7(OlwzWdG9 z6!6_^J0*K4ml;?C=m>%D{#NfQIrHowbB@@8`}M`q+w#qxq3n^qBF~gEA;wcBi7(kr zlabT7p@t(Jb&-5y9xTJr8g1JgKjG9kGTWUC9qu1CFL{U08Ic_ggBC1}ZP zIp>-+JDZA)olV57iGo@q`1e#p!l*?Q?Q|+alE}e6f;l}uc?Rfvwi1K)+36Up`uSGHm%$V*1aQA& z^Xn4^khgL7ib#}leNsaWmUrwy9PSU{EbL_R!g3@)mV|x;G$@VcnSo0{vP{UE+m%K0Euya5iO;w#0PJ&Nm&>yh^;CukRt^_@&Lte3MMC0DP{au>V2;A@!~vbqW@)% zS+-FaI16{jK>lb%>g~ZFJzt3qPV%1jB=FTS^5jKnrfGhXs}L?9c{eWeQg@)+!w+r- z<=42I%R$%R?~|29xU|A&12zLCcF&KBmu4(Di*-a&_VG!`d)g$*a}lw5iQANjote7c!OsH2r(x6$X3-C#b@WNV=GrYZR{HU=ZZRJ@v=vCAo)w?_u5YCPRynq!*YQS#Ls1JO7UP~rB>Ak-zX>EH%)@Wb&#qEaw7 zE{GJu-zgc;ZHyMBm03-y|JsXhXtjOhCL1LMwBX0-mWihb^8?OLGwQQ~PIi#QsQNqr zO0{YNCblVv+=2=smi8B=0kD6>50Yra7V0=Bz&RRkN&)A{`Eh}#;b__^O&9ba2HlQd zYZyo1BI<3M(X@EX%NA6QPF5L!fugw&xiAL-qCZ(_d$hVqWP!=*jFp|;7qh6yIA_hp zA2hckX-9e^letKj0(;DoW?zjAkb+p6f@0PMdCz&Hq=Vu9{tk}W&_`uE&>}$qTYLb$ z?nOJUmb;QjTe?AOOVsFxP7J<(hkiN)UJ~B>3W#(>aza9R1c#s3 z|Fl*Mqz6jz^*5vIT}1av^SYE{sUBI5MSa1^dU15^JNy)NFf&!4M(qo8!o;P->4FaX z6ez_^p?pz4djrs|u|-Y1lm4t20ok2RRY-!;BnLdRdadT9!6mW~fjo1N#(@0K*2G~s z2vfjo^Z=%ql;qyS$xLV8wh!I_I<~HtgOclyJ@f~;xE^RzKU0CMcYW%fG|T_6F5&&( z@6G0?-ji12Q{L-V4;?F35E$*=%k;C;7GwQfH!ibJ)lbO}7$~QZ0gr29#0SGiGt5#& zbss3*Haci!-)fg{@YMfK8cv5v0c{FdKG3EZv;~*rJp=~hWEYCY-oer9%9Qf83YM}* zdc!Lx!8+6^sM0skVF9N@8y&jXo-;D+`knEPlN^0$+&bfX2w%B`VEzv)4&SyJNt#Nl zTetZ84H6xE`KBMk4RVwIFix`&Ro;g3^G6-FOprT~=Ha`G_4_+J1iWo))btf0fj=Y2 zZAYb~Y&w>|rN!a}T0bXW_M6NggN7JazPXEe>Q9rmT&QKmASCpZa`=V1x$|sM3jNQc z_|7-MGZE&?IMlV=>@${Uvm>vKE)75PyFVZcWkCe2 zpLrxdZtp43;!S-4@NGIP=WYCVME%bITF^0M^rN~Oa!?BBkA^HW>Xt6Qtv}<>-}Y-J z^X1-x6a9O+&y*_JDn2SyAlnISDA}J|{uDL-y%?_NVCX!zoVPBbCo{MyQY4R-+>0v;VKYjfVYAOYj1v zs>R*q?xnbik9w|^JLKqYzW zV6yswOPQ%aDi)&NdEdc}#c!+TC}8 z;;O>P7?&QC<06l=*Sk4F188Gf922n^gP<-&u5~cR*_9@_Gw}H(|iGm4N z0Rbh-1E~S0-Xvy_WqiW0=Q?w9xZ3eBG6?hXx+n^S2Rr-?V2Dwv*%!*sn-!B_kx|~K z3ox{Q`)?Q{ka3OQ=2fM6i8->U)T4vt-(maD*u}T)z%u@%xJ8Us2mh{ea@ZV9;@53e z6rG5A?O0~X;4)^nW`3YN5P*B*7U+)_|GHl&9y|!hno1Z6rl4(rU!Qy){}IR?0&iJ0 zBx@psH*2Jq&ZXGpHiJ53JWeKTNzwQMveKSi@V|7GORMTL%rpQn<0l1A14wK2rIZ%i z5=*6vBlnlylo-2b?MnZ?r1S%Yfd)|f0)SW$Bx&H{;xYjk)SU4gG|Y|$N}BbD?91Pd zPUi&M=331?Wp4-5^7N`LhgzR!AeUjF6ZrC5FmD{9bF0vRii3ffxnuMic$saq8uLIa z#&ME(J1!mRX7t4zQ>1*wLWWqI7hNc$ih#Y>M(mk0(yDZGF||jJ6M5R=->b z>!moD7ksixwz?oeGTQc^EwcW6E6GP3&C}_uCDE=oO4W&LMZ9yG@dcVw&#skk*h zK5ln7tU>Fdag9YmtdgeMH$_HFiNbsmz3ut|#1f>qR?4=V-DhCEFHmR~^c$`-WIslC zUML;6O=*#YaxF)k)*jfWiQWXAEAjd&1tLGrkFt6rrB7u5s{f3D@c|v&n%)qJ*t1%A z3BZ)PV0Oa+GtsKf)FuI^n{4u>1hW~d7BpB<0h$KB-Bw~#5P1w1=kj?F9f__wThdsG&rm9Ng-#??yoPAih>I#!doJx9$kiQ_Njrx?2u zAWgWJdp6V1VD12z=l6htK9!-f`@PSy!M)sE1@lP)PrrP2m^;dXnpR#wJ6sLGbR(cc zU7&xWqLSJE0gTpA-P_*>QNQ875YWmU5w_-wzC;Ln9$MbGpIy0RsuBH;g(u{##tQ^v z61mLRExf_sAYKls%Y=^)QA8zjW$88-OCqJ2Jx%>wL%(DFZDZuS-$_Tu$HZtt>M3{D zN-(7^oC?9Y0y@d`2UkJ!{_8R>@fTn4zz_@;8Ue=`BKk)%@8x1K`=4BO>&nXT#>!ED z$?39Mxw>e%#;j6CoUkfJ|p=*5CmHx<%j#z2l46J5QO=b!bDFjM;*bSnNi)B24awUTzf|3OUiEqPa^$1LgxC zQY=iJzly)qKe`U#I_3VuQ`2beSTiFl0LiUPwo)Q)i?NSaDU)&AWU%P(M#*RWpr@a* z@WtSRNSEsApuggH3t?|48WujDLv;r8^ezq$^Yfd;>tb%JGvwCj@0!(#O zkV_Q%Y6c6uevlR>GXDfm>G*^>sa#>|<>kh-`J1OsRG0(Ba&eWj9s-%k?^d8RbiidA zTKOfyditAU;rL^&L9TMjPurq_XT@e={Hx=6^&|Z8fj%H)-ZIX=ese8vt6ry~&rPDd z^jG#pY_IvSo29KA&_+xB{xJz^*^skR*>Qm`B?=XCV9BfFq2BLm*+R1d8Mo6v491q42Tll%XLw)`CvG_sx zC)_PXd~gG&y$6ZIB=ZH^;k}u)o(`VYC-=Ac;}wtDEXK6hY~VZlU4l_il|%>J<>p!q z7+VsjKdN5N(%{OIGg4O*ey{8@zfw5)`i~$*VW5DgidJn|vWrz`SY0CMhh+?7l1I$7 z6NRPJIAY7?rs!UP>yJ2vt#M9g)bdProeR{0S@d3)4^aw^b&QO&Ls{g}O`*RZsJ{dx zOluHTIF{*QIsBA?hqYf_B44S%F!&6x6@UG9>{IVL*X7md3;4Jsp>Q@Co)CltT($nh z=-p0CuW=ChG_%wP_`zB74M4J42PDd`R^3_4nB^DQ%427w=NWyk%_K|(adwrXzqezZ z4l(7lx+@+NP!&}&+I$rOp^-V!!!H=6%2DmL;S zUS8V#$1`-~itKLvG}l5VPnPz{RcYs4lYPKmxQ7JlAnMIJeM(RK$W`UTJbvE0<9hH_ zxT4$nw-sjpV-U+A=ClYx^ByQP|LFyBvMB?v;e}K{KXQhqCE`++E1R;K8Vdvv%f;%y z(x7?}r_E$s4HdoGe?&1BAkB-kMv`(0xjiw^aSqr3d|xpq@HWdJocu zQOIW_>P=5^PwJkD3?qPYT7Kqz{OK6wZ)JglEAgMgs#{p6W!tdGBl5bnHR#?8lnPRQ z!ynpx?_z&#a9p*krW7_L2b|mcRiW*q)P)ZUIt z*GbcSy?4ziZyAJcmkWbP0SmMF?k%CJpwznSa!zx(wT&2_RsneC5O*XUYup(;Z}R zpkIK31RxoP?rmmMR-v}w$ZoHtKfjF%{e%1ipa#ecM8->tjXsZCyWfoNeiG-$wc}Hv z!ggPSa*43_US|*!@#l&%1BS%}+I5A@u>E zAY94+^ya{~|5_jCGE=na`jX4gp>DM#hYHT(;fseVl;mZ0j7nxk*C0o3J3w@B7%s#{ zmFgllTrnfhF8lfE)aNR9OOK(;)bF$hNIv~@2>(hft;C?Vw%!223Lv?*O}KAmm{@EJwuctRU&&raXd6na}d7HGxxQ{%mARqdlGaG6n?I1b_be<7Lqk z%kiZ3pR33C)l?YuK4IG#JVma7_U8PZp?BW~KsqzwYqwxxvp?noN=tQ|)Osk7X4%!O zt7bYVnSqJ`G6vay+h?&hp_0red5BWZu-S3j=v44-!##m$8bm|=S^aDcBcHHtm z?=xT!&3${KytHbWmfcOJy+21vLg}Bt%71JtHo1M#ma)EvRjXTfmkywM!b?J#)-dp? zBhr*!z(1PhFs#0~+<*Tzqjeg@Ntz_J$;UhQElSq*XU_qTaTM%!wyZL+_nA5~?UCmXXNF2+HC z^G`cZ93AqOomoY&h}sQvJJn?ovbm`jZGWS`^r?7CO<>n9x3;eg0>-i`-S4K?4RcBk z=RUYhL+e$p{_(x34%8jDCQ5mMj7tOi7zEStx#Rn=$PX0yg;^~EMDp#5?(e?5Gn?rr z&xp?Y+a+}T(YL4$(58LUsn-(HSzqFgVBzD|EjarZuH!36kDZ#a%*u1VfBynl|8ryZ z3`G55L8Xb>ws7u4bP3w1S`a{&nEfKV)Y|%R=ggE97V04bq1%UnNklhRh zdN&YYb%UPSP(51Ue*R#z7D9h-+6hz{y2kQ0tkS3ySZHYM5tuXmhCc8AWSu^yySfwX z@A-XLiB{|b7Ig6q67UKvpo)%E*AnQHvRM)OAYWv8vO_<9vQ-l>OgB6;2E!5o1`F0< z>a2PF_l+O9*b#^N$4A5J+k`aTIbzKrY5D||Ju<;M4LeWz3+uHa+t%<*K>EivyYj4f z2hUe$G@vLG3Zw7<}FT`L=Jc1bPxODc(`o>QH>XJYi-k(0!fW)S31w~kQgj^1I9}j@oH9OL$ z6RLr1TU2J!M{|kkNs>D+KHww)|N2%N3Lm)sFqjNN}1C`d(x!@-2xh+h-ypKQsp4`jt zkky`7^kO+SKahZ$m+m+^H8nL~p=_9q!#m6MUQ`9k>b@-e$x4ho5IPH4p`%X=>;H54 zU>Vx^G-LGgAv$rEnP0Wa{mMe?hqmumvqu)1Nj^%F*oVH7x^5r(jet?l?z<@@RKgc1 zx0^&}0m-^!seJY8sx~1znVT8#lJwDAH(K%AX45e^&38xNB48q{9~e-wflXD!a`6;K zpLT6mlrKg*FL8G2Y(9L}Q=+C6Ih8M%J^o0r;YI%=t% zO<<)rcKB$Do)I~cGx$0&l}$Q?hV_Q?jBXXB!h>6PE`21?pZqu2XT|;e*cItKA4fF1 zW4jKs7HWQ2$NN#O@o)E*W zR~Zis)IX+%JFg#1&X{MgxB?d7x~YBYL$9~Am%6cl^mJ+e{~zm)NH?B5 zd6#w+F_kZ8XF2>RRXs6Hd!NLn8Pu;ZQ=ibHL$|{}9nKyYtQZVxvZE34Kzmi2P}1H6 zwj7U$BXma5#60)oW%owd`ysYUrDlN>+|=;MGt=`hH9M`AK0D_Yw$!+`-a3$Sa%vn) ze8As{$d0;#MIqjZOrjL|WF|83&*?KvG0&3@>E%VnqT7G~b9EL4l_{&E4T=+~gB?AY z2~JmmZKM(XkS^fW@l>{v1H7G3xn*qMXQQtMCt16l&Np$ zdqI?t-fv=N#^1@vrv#e17RB6o+OEDhV)=~8qT=4Zn+}D>fR&$g%94G4xlU=kP1`g; z|CAS>K7HC$4_}S+Vg?&L)xd%KDRy-puTU2*!s9|(qpLloLH?46`ZifoUu9BxS5rhO zHjloXv;U*&!)8L=k5v*y^fTT6H8 zvW1}h3?hB@)a23qo3Cu%|rvet|BM{doLACW(Vvu?I{*cWfk(^N6R;U8jH=i$6}T8 zVXJQ+Upb1(1~^dobdCP-TY81nq#USK!B=~Wu(mtE9|6)vkC1xJAN3(W_h4N;g-p_F z)(H{VI%(R-ua;R4*j~g&aB02a0n3YD#h>!vUpp2Ovli)oR@nj#k8XhSXw?F3HGe!R zCNRja7D`FxE`W8IQ536G3Vt3X`W+2)24|%8JS%~uuEltj8b$hpMbAWXo;B3-M}ivw zl}sReq|x9h?rv1@+x}ULvm}3XT4%`OyrYi^Ru==vdc8EdbI$NwOn4zV>p3J<24qtw zn6aMEayn_#&_y3Ecnj2+F`!S+KbeO%iXd3`s6}Tc;wsSSX{j4%^OzLyt-Vu(-K+C; zDiy2k`HnY%YO(99fF=+0ZYeKL&i78bwN#jkyj8n$A|tSECO)gjk>871abS;BRKQ@& zdQ7%}2Mh~pp(1lAC@IEGgI-GAT?M%86y))}t3X{9Q4Mq`1VaPi0*o8P7G!vr zIF`r;_{-g>poqTz+6Lg_ialsz?04_RfYp@+?X3yaNJ^o`kloXv)z>GW%ifTcCAr+y&r}`uaOXya&Fsv#hq_=83zzj2Z;onC6w4|YKCQ9c z*C^5670uiO0S@wKZY43S8hzhfI9~rm+qpuKmbtw8V)OpN>EniNoqqkp@=*noUob$M z3wX(kIbA7=c?u}p8~9McdxuT`Zqj}*TeXauJrMlbec>McNNSJCUl9pS%tcrmj~#!U zdiSu;Zae0+)1f{4r;BCZ0J&p)pjmV%^X@MO3gy&_`G2w2z@dAyJO?#r=E=?2{O!45 z#Eul(=Ouu1vXx)O@u5%O5Gm?slbxi$=^cWe0~HFka-m` z8hPppIKiW!1wrPb>l&~yDz-?VeSn5D=Y>5^7DV#^S^<&G{9~ZhX9Ud|l~Ny-GIC<& zYnRLI=)9^8!AmnP3(L&Bb%^z#mjI~aRi8nezVXWHqpM+R)=v%|hJ)tYU7&=EpstSQ zD5e9pf5b{YQ^Cvo8JY>az8rk~c9OG$`t`?!+Cl`eM6|h_m=hsh4FdnGcBx6=($bQQ zwKW_1xhJP)gGZgo^XGY$x)N0$$MYD6>XxtMmQl~qZ7MpLZFiWCfH}?SaszXkpWf&( zwCcbkOuLt_UstV+2&B&lxO_p>xECCxh_5eBEhlo3ag|EWiJeUrh;^1(hVSg;V*0U#<+W2z+BJQ zOZshSqwY9)IPRX#@m}K)ZiD$DXt6hZc=2P>CJ$q91e`65Gag4(P4Qois05vUAzg~XW>lO)~4SPuXV~-r!j7ZXD@zLQjQiIW9lSx&aXteprwMb z&*h=h*X`Zb^T9M~bDU2ObEei5$U2Wes*YTPg9c#Io^d#}hH*|IizSdlPnGZFzP|NAk|JKHnEOe2exZ~We3fyzrp(|eWGs) z%ATP`H5cHM+n=$yH+rF%%hxzOe#<3w-iqbk+T&v!8xP28s%Mx@0xmn37FZ;{neE=j z!=-rD@!=7}rDPXj}e}*8L!|H;G4S3zYFl zoXof&3lQ7*i|5#aGIIr$Gb#<-?b~EP2@Jk#w#xS1gx)@wYy!K=2^oFe&!uPkX%`11 z_#G@tyDo8j`f`q7_O7(k$>QPo*qIl&J|7q;%el0AhG?~f_Gi?F zAj7@46s?pyVuXQK&nM`-XHq`V?}KL6mwbm6DAXpcYeG3xLPV?5jYr2se(e%)3(vVz z@&ZpKeDZVlf(@i?k7E9PZS?_Ag`nI2GvGO%Ole39ddjF;6gsc>myC2~LPxmrJkN95 zJR`}k5SVazi9e%_JfyM+eeo(ew(+60!P%U^UwSK$(aXtV?i}@)A6=g$sDH~)WfZvc zR(0R^CyI1~)K}78Gzal{=!B$@j_rlT%ekC$6NjnQI|Wp+?0^O<^1wI~SlM>yTy%uf z_G8rBe%%*Vt^!A4FV(p;4kF)6Ne)`(jd5s&?~t8Nt}`hlW}PwT=(}!mH_>+T&768p zyv&vbt@7{-ijT+qLRlsx0pOYS_^IGN3I}7qRk9Un4h_)Llox=p+40}Hao_A?yD>R> zd)-KZPBv2riH$=RUn5Xl4#RgrPAHcXwq4Zd&OwCHkt_McQT^J?dU(C^hsQT^l;8O$ z;_R%d^d(d~J65H?X1ha9cjXFAzO1B}D*hbP^iX#&B2|0W%tH3k$^CY9zyHRCLK09Q zPxfy|@*j_44%Bhk>b2wAkn{Ze2Pz%L!^6#!f}GahJ`oVloI`3;5eK=`zkM2?fM7!c zwZ%O0zpnA`|A4gYF6M1X1&sgam9BHdfRJRMu~_?Wm$|%Z4(JZ{zmN5M4MqR=ZT)A1 z{ACkHg*Aei?rg+Nk0YL^Ix~HrXutNJ3Gh)rx`6w;4O&UZf`*@2xW1}ZPTgo@tNvRP za_-7uG5RwYznMo){IfIHLSwWr~(urnKIx0>41YynX5*jeqlKDis=Mp+YWkS(P z!r$SUl443P)^u4n&W~ov4}5yqYI@5B<$FL|T7|)ScUNaH426N6z2Ek&ewdV_)bJN% zHzys{jWMgr&`h`-HX(c|QhF&juP_RdNsJ`Yt$`B9;KcjfHZxPU0NoRex&fe0vr2jg zRUnh{fD@B?qiizz3dgq?kVaJczB6fY22?|_s?&~>R#%&-I1Id?#;Yn7mRhbi%##nH z00h9=yP%wb@;T?r2Uh_MjAySu76(8*%2%8pbRn$;W3`|_Kn4`$zbn177PfQZxFX)rMtg#`X<^&0m^a%$0Uh+q!K^@LqH_9NFaqR(*;yCCT z3w6A~8yT772VGNvr*p~zkp`C|m|DUC^}q>2j+MNFyyDq6^TXra#rI%x6A%xAzD#GO zB&4KWphpTlR6KcbVDIn?V7#S3=F|wF57%CH2Ch>s943?{?uWfTd$E1-ODUosNYPb= z6L`UZnsXwXTZDUHnxk4F=rOBRZXP=qxC1&XeCP|dH)w>)LzCePf#$;`7}lyz(+=?= zR6L5HI@5XV<@;fD0`$WAQ}f~a`Idm5TIYTIlp3qahfqHcUHh+6h@|@!LY_clkX!dW z#Uaim{YkysiHI5zB4AjsxJ_;k3@2q{PJV@ehP{M#Az;G-JgtIygZ%$DJy4akd|z*v9e{6l&fo)SW-I`t~6-m$;B9 z$ER} zT^}gUv-(!GJ8g_*P(bB-p?aOfiv(L({G+cS-99`#xGIcGlKTo4b zee`O3Dwr>z$9*$Z_z=vIkO#az`s;@lVGhWG%G?w_C|)_4({7>0I_d|d$vF)z$AKm2 z#?r^$Ki2h)d7mF`P1|+QIDJG?9<6}p(0N=OWOMaFwgjWP`J9-GXzg^pSRCwvM^mp& zn-J*cg@l)@lECBpE2Qy@^8^^Hn6aV{iJBIIohjR^z#t{{IQD032^NSGfDgkZ;G9lZ zvfF~m^BfJs{9fmOb`acTv-(A(>u&P^cDoV{>^7DNE3m-zeXsvatz6*g@69xLZ08!d@T6YT`RdqWf7zPn&H6D{V2UI~m>$A%2kMScgn1-ru7-V|EM?g=vHgfT>h86~t!!|h> zQ|FjR0RP-dXbM)0cTW!8*1oQ*6`55$sSb{GwXAA3%+OWBE&|L+eG-jcd zbf88Ls;BMlU=kZW&b9SooCp{83qYL|!rUTtYoh!WXsFfN2I}KCMg8H1 ztS;cK$Kt+IdKYeF_f)v}M&lP@O0@GFIRen}C@i)IRAD_i!0H2;deMC$$oP6>rl z;jKPwk%dS>4JA_1wn6M#`@X2+>XBycp`w2)Z6#@hy z>KhWKHPFB70}BS{*UvW2u6`U&l~}F!i<;_iJzuf6NYEc}3v#q1qhV}y9N$noCUeT_ zsG}fg8A$u^_-$spKl~@j3MQeLE&3lw-cJwnhqD6)k5{jps*~KeSyM5o}sC<(9 zzHukFd282T9L;`PS)?#lD34g+F*Wc+J(%pC(e)-gBBgZB1mh_GSzjF< zy8K4tJ=pighsR(iD-{^b%d#`sWC)<;zn06BXAtXHCxhwhdY&Jet6}iug4d)wO>wWQ z&G-7tSNHK}RYIx0N8FScdgzXvM3?Mq@3A!FmS%!kbF>m?%%_QFWkn4cUUBv{-mv&zPb~8_qe;fuU~x z*xYF&woiF3i8cs-p$(iGU`u2icDRGnjPX*Ew(&5C^!{U2&M<@0Fw|&!B!4K{&9l=s z)Vnb#^U^cCbjf3%jp{-;-0lWFtZ$YtruuiBLFP+SB4(^0^3fSj6qWy`O^my$AQ}jDtPQT7hI448ZJaLO&A->`BeSt5_Vz_T zu=oY)hsL2|@HsC&;uRk}$_Gz|TWYcIa>P9XqVo1T6BJ8rf_RJkD~=RB`KZCl;369x z$0y+TXeO-u9*m&}wh?W3G$xSdO_yxh?*1Tu#&(O0@&$<2(poTxTCqvgt@1Z(KVGjO zGrW%I!dFkGi>El=U1C2gR&SB0WY%G&*2HS2&CfU5!4skz?IcD7#FFCLX_mCMlJFGC z?1cov)UB1D*V5sy8kG83g@Q!48X}PDX%;Gv_z+QELzS(sja6meodUKBRD4R!FRVj=nOWB+M42rUZLFJ3@yT}6Cw3Y+KJnJH?JBY1*u{Ydo!xi-@C?o9i^TwQ@e6N^u7vpX zv_%*qRu!53>?<10QP;o;hA;k+z}=|U$?RfRJOWxyX|H?<%w0m*YjjMmLV^$i_!~b| zfxewz)JVz@`~IQ2_GWY%=LL@ta>Go;k$zdDP_ZgnW5s}ESd0P?k&GI$S zt#x{J%#a(+$N96}a!i@gVF!OPH;EE^i5f=3etRh9_gi=y5iF141*kehCFdBZ1d_Y& z!i7~Pb0i2b`K{^V4kY*^@rftt!+6CDtbMT=``R8Vy(#3TGkOnW)v7v~b6ShgLOP|- zA4>j$4|q{gR4~k&QEa|ZkAEc=uwg7uW~~~RuwaIFvk{FWm3&l8g_G}5jRe8tG23sC zk{Yom7hVxd;1;tsX&;s{A>r8JSl$j^7<>M_bAdt?KDWXm@deoVTekUkqtT~c?9g4w zn|Y&DhRVZbNz@i?ESMmcd@D8>3&VpwDCv`f7o!J#IF*SY#)7hTS_s41*Ftpmv9@p5 zKAiZ7mdR=WYd8Bfeu30Jh9W1;zheO+OSMayxq~p0)@%|ujHg}c6!g49wy*C2)wYa`mST00+*mQ_;a&Pm#MI^6O5OJZC#aU(h zYk|>EhdLUpWQ2q}1bWl>r1pqYNQRl@IKgp208 zVs5d63@!m@fY@yNA>yYDXpC~vtNk(EM^(_h`*a-Fgu)o3yB(WCQZ;1ooPxNcWY_(C$n;AGu}QJnJXo z=46pd_KR-D&7MeNT=O86V=<7++Wh#U1dYEIKt}8H z73}EN0jtVm*C|yF-j038r!p)PepvN~UTBlYCD`F&)DDt2GNMhVIyt&<^~5^jdY4SJG~wjncH-#N_X5`+`Y;zC&ew=FdH7bK3F~$2#sKv3|YpaLqsxO#P&! z+E192l1eb5(S(ZCDT5#~Q%|_$)TBx##_=A!t*=8~bb= zf}}A{*&*@U!PA$=*049cr}Vyrtio05oLGLnhIbnodR>U3%W;?{x?^<^Fe|rUZrFTV zispMP_fPvEi2TqV1&3;3g#tv5o8dV45uRts?fe_M{ng+f2MZVll<=iG(h~@Fh8}n^ z*EYmB&SFoYcVOqaK6$xMDF|;#X113i9VOagj7wk4;B)+-CD5K3YCMmyo@XymGHipb z&Of)hIN$ah=Js!BDJ1CR-6|S!bQEOx}tOezo+hm+84<3sQv&A}7J1X_RW>ZJV#dScSEjfK)kJ^2^p6;+F=Ub8PeW(^6UdG z0d9U}U%;Md-HtD{0LlQu#QgNSG9yex28 zjlQ0~gbzo+nnTIW#D@yfj5G=Gze?{aVjjG#<%a2K)9X>G*Ut;Qw$~Uiz6=%;Fc(o! z^#=m0jnptKcSP9-$#2Njq_!;j%JRdgwHt^DmOr`*A-hrA$wJ=Evj_Sl8@mN&Pe;I~ zdY)(qdP!b*ugx{#dNh-4y9bjy?O?W62h80hQ-|BKw+q14hyGqh$wl-Gkm3>iwif|(IAotzE&8BF*Hdwq6TlV1>@O(D93 zQv8rjx@ob&47QxoK><(5qQ8-QE{>8f$blMJy8ps83YBHOHu)m&%ZN?+PK{LUD@?>o z_lnMm!8c;pOtsP&TjInzi6wC`mTr{d%p>5&;?L_0?vM~MwQG{L*i3L5wqSEIHOmkv zw-Rew;t-GuE(K;6%NXMwBvdVK(;bY+C*<1!Y`-Q+NkIGR8{T;VUxnntqriraC9=u- zua1xVE`C%t&{XWvf*_~S_*O8f$ypd)gALw!Z{neV1McxL4Xb{&zpPjJJ=kG$&o)O+ zyU&#~VOsHUt^!o?Fe=<%U&o2P`I0sdoN@Diib)}kJ@C!}@ zTcB^gLqns4WJt#DOl8zw=HtCbZPfwkCu=$*J@v)KC@B6h+K4a=K|=V{x0{8>EE0Et zz~^bzbE7_=-7gav2n=*Wrx3mf`za^R_(p2BGxYL|oA%XhG` z>AKjp9`>68{2uRJokGKuobbZ$SG`~qt{CEGsNeyXs7gs`_-yF75JywM?EsI(QEUAX z=aD20mV&7!si%hMhoVvT1Yj$)rn}HYj!`+cNw9Q8T=4zy{vgva0Y=V&vm3l(6 zMtw@m=7H`H*=#gtVJPdA#fCB?p~CaSk`MfZKHVwowb?S3>Kk8c*u!0MD0#Z{R?T^) zGuiK}Dv0vbG*cdlG{qUzGB=h@6N45@rwsi}AZg^S%GBs8!y=t##f$_;T{+N~-UJmWmA_Sx{Jdi}6E}+ujUAW}wS?Yb3zCN=w`}XkXm(R#T44yIe zU4I4m>B+!2#@|v{zcX5mSHRMuA{tr#Bft1}A`3h~iu?bO_qzNMmkul!9cKR3|CVR_ g-^={(qG6qhOgKk3Ph$HBTmgS%r4%I##SIYuANm63ApigX diff --git a/test/image/mocks/fixed_size_shapes.json b/test/image/mocks/fixed_size_shapes.json index 2137568acd4..8cce393f526 100644 --- a/test/image/mocks/fixed_size_shapes.json +++ b/test/image/mocks/fixed_size_shapes.json @@ -4,13 +4,17 @@ "x": [1,4], "y": [1,4] }, { - "x": [1,4], - "y": [1,5], + "x": [1,3,4], + "y": ["Giraffes","Apes","Zebras"], "xaxis": "x2", "yaxis": "y2" }, { - "x": [1,4], - "y": [1,5], + "x": [ + "2018-01-01 00:00:00", + "2018-02-01 00:00:00", + "2018-03-01 00:00:00" + ], + "y": [1,5,7], "xaxis": "x3", "yaxis": "y3" }, { @@ -32,7 +36,7 @@ }, "yaxis": { "domain": [0.55,1], - "type": "linear", + "type": "log", "anchor": "x" }, "xaxis2": { @@ -42,7 +46,7 @@ }, "yaxis2": { "domain": [0.55,1], - "type": "linear", + "type": "categorical", "anchor": "x2" }, "xaxis3": { @@ -128,7 +132,7 @@ "ysizemode": "pixel", "fillcolor": "rgba(96, 171, 50,0.7)", "xanchor": 6, - "yanchor": -3, + "yanchor": 2, "x0": -20, "x1": 60, "y0": 0, @@ -145,7 +149,7 @@ "ysizemode": "pixel", "fillcolor": "rgba(96, 171, 50,0.7)", "xanchor": -1, - "yanchor": 10, + "yanchor": 1, "path": "M0,0 L30,0 L15,15 Z", "line": { "color": "rgba(96, 171, 50, 1)" @@ -158,7 +162,7 @@ "yref": "y3", "ysizemode": "pixel", "fillcolor": "rgba(96, 171, 50,0.7)", - "xanchor": 2, + "xanchor": "2018-02-15 00:00:00", "yanchor": 2, "x0": 3, "x1": 53, From eb853ab9dd5c9fb360bdabcea4179586fa0bba7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=B6stl?= Date: Wed, 11 Apr 2018 16:30:47 +0200 Subject: [PATCH 8/8] Fix drag cursor bug for shapes - Bug revealed during review of #2193 - Bug: if a shape is not or not completely on screen at time of drag element setup, obtained bounding box would not be correct leading to the calculation of a wrong cursor once the shape scrolls into the viewport. --- src/components/shapes/draw.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/shapes/draw.js b/src/components/shapes/draw.js index 7b7c1ca61ee..53673e7c173 100644 --- a/src/components/shapes/draw.js +++ b/src/components/shapes/draw.js @@ -138,7 +138,6 @@ function setupDragElement(gd, shapePath, shapeOptions, index) { prepFn: startDrag, doneFn: endDrag }, - dragBBox = dragOptions.element.getBoundingClientRect(), dragMode; dragElement.init(dragOptions); @@ -146,6 +145,10 @@ function setupDragElement(gd, shapePath, shapeOptions, index) { shapePath.node().onmousemove = updateDragMode; function updateDragMode(evt) { + // element might not be on screen at time of setup, + // so obtain bounding box here + var dragBBox = dragOptions.element.getBoundingClientRect(); + // choose 'move' or 'resize' // based on initial position of cursor within the drag element var w = dragBBox.right - dragBBox.left,