From ee2211b90c27d82f7fcefebb31366167a93915e3 Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Mon, 29 Feb 2016 17:26:25 -0800 Subject: [PATCH 01/13] Add new tickpadding property to control distance between ticks when tickmode is auto --- src/plots/cartesian/axes.js | 2 ++ src/plots/cartesian/layout_attributes.js | 9 +++++++++ src/plots/cartesian/tick_label_defaults.js | 1 + 3 files changed, 12 insertions(+) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 1cb336e09e7..8b73297f965 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -465,10 +465,12 @@ axes.calcTicks = function calcTicks(ax) { if(!nt) { if(ax.type === 'category') { minPx = ax.tickfont ? (ax.tickfont.size || 12) * 1.2 : 15; + minPx += ax.tickpadding; nt = ax._length / minPx; } else { minPx = ax._id.charAt(0) === 'y' ? 40 : 80; + minPx += ax.tickpadding; nt = Plotly.Lib.constrain(ax._length / minPx, 4, 9) + 1; } } diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 731d9b9d81d..89742514f50 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -248,6 +248,15 @@ module.exports = { 'vertically.' ].join(' ') }, + tickpadding: { + valType: 'number', + dflt: 0, + role: 'style', + description: [ + 'Sets extra padding between ticks.', + 'This can be used to control the number of ticks displayed without explicitly specifying nticks.', + ].join(' ') + }, tickprefix: { valType: 'string', dflt: '', diff --git a/src/plots/cartesian/tick_label_defaults.js b/src/plots/cartesian/tick_label_defaults.js index 11608362711..d0754069fc5 100644 --- a/src/plots/cartesian/tick_label_defaults.js +++ b/src/plots/cartesian/tick_label_defaults.js @@ -37,6 +37,7 @@ module.exports = function handleTickLabelDefaults(containerIn, containerOut, coe color: dfltFontColor }); coerce('tickangle'); + coerce('tickpadding'); if(axType !== 'category') { var tickFormat = coerce('tickformat'); From ce47ed7f1080b6f3c4959345e4808cba6bd22813 Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Tue, 1 Mar 2016 11:19:25 -0800 Subject: [PATCH 02/13] Fixup formatting for lint --- src/plots/cartesian/layout_attributes.js | 2 +- src/plots/cartesian/tick_label_defaults.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 89742514f50..690975b6dbf 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -254,7 +254,7 @@ module.exports = { role: 'style', description: [ 'Sets extra padding between ticks.', - 'This can be used to control the number of ticks displayed without explicitly specifying nticks.', + 'This can be used to control the number of ticks displayed without explicitly specifying nticks.' ].join(' ') }, tickprefix: { diff --git a/src/plots/cartesian/tick_label_defaults.js b/src/plots/cartesian/tick_label_defaults.js index d0754069fc5..f67f9d365b6 100644 --- a/src/plots/cartesian/tick_label_defaults.js +++ b/src/plots/cartesian/tick_label_defaults.js @@ -37,7 +37,7 @@ module.exports = function handleTickLabelDefaults(containerIn, containerOut, coe color: dfltFontColor }); coerce('tickangle'); - coerce('tickpadding'); + coerce('tickpadding'); if(axType !== 'category') { var tickFormat = coerce('tickformat'); From cd1cc72adf6f91354feb4697c23dcf064f1caded Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Tue, 1 Mar 2016 12:51:18 -0800 Subject: [PATCH 03/13] Ensure tickpadding is always defined (even with default value 0). Propagate tickpadding property into colorbar. --- src/components/colorbar/attributes.js | 1 + src/components/colorbar/draw.js | 1 + src/plots/cartesian/tick_label_defaults.js | 3 ++- src/plots/gl3d/layout/axis_attributes.js | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/colorbar/attributes.js b/src/components/colorbar/attributes.js index 9ded21dd822..6ef6a148213 100644 --- a/src/components/colorbar/attributes.js +++ b/src/components/colorbar/attributes.js @@ -162,6 +162,7 @@ module.exports = { showticklabels: axesAttrs.showticklabels, tickfont: axesAttrs.tickfont, tickangle: axesAttrs.tickangle, + tickpadding: axesAttrs.tickpadding, tickformat: axesAttrs.tickformat, tickprefix: axesAttrs.tickprefix, showtickprefix: axesAttrs.showtickprefix, diff --git a/src/components/colorbar/draw.js b/src/components/colorbar/draw.js index 28c83ae1e78..d0f36a28196 100644 --- a/src/components/colorbar/draw.js +++ b/src/components/colorbar/draw.js @@ -156,6 +156,7 @@ module.exports = function draw(gd, id) { showticklabels: opts.showticklabels, tickfont: opts.tickfont, tickangle: opts.tickangle, + tickpadding: opts.tickpadding, tickformat: opts.tickformat, exponentformat: opts.exponentformat, showexponent: opts.showexponent, diff --git a/src/plots/cartesian/tick_label_defaults.js b/src/plots/cartesian/tick_label_defaults.js index f67f9d365b6..2b4e7ff2532 100644 --- a/src/plots/cartesian/tick_label_defaults.js +++ b/src/plots/cartesian/tick_label_defaults.js @@ -37,7 +37,6 @@ module.exports = function handleTickLabelDefaults(containerIn, containerOut, coe color: dfltFontColor }); coerce('tickangle'); - coerce('tickpadding'); if(axType !== 'category') { var tickFormat = coerce('tickformat'); @@ -47,6 +46,8 @@ module.exports = function handleTickLabelDefaults(containerIn, containerOut, coe } } } + + coerce('tickpadding'); if(axType !== 'category' && !options.noHover) coerce('hoverformat'); }; diff --git a/src/plots/gl3d/layout/axis_attributes.js b/src/plots/gl3d/layout/axis_attributes.js index 15bfb6b483a..5381e3d1f2d 100644 --- a/src/plots/gl3d/layout/axis_attributes.js +++ b/src/plots/gl3d/layout/axis_attributes.js @@ -90,6 +90,7 @@ module.exports = { showticklabels: axesAttrs.showticklabels, tickfont: axesAttrs.tickfont, tickangle: axesAttrs.tickangle, + tickpadding: axesAttrs.tickpadding, tickprefix: axesAttrs.tickprefix, showtickprefix: axesAttrs.showtickprefix, ticksuffix: axesAttrs.ticksuffix, From a1971d586ad1dd7cca8fb42c9343a123c9f320e3 Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Tue, 1 Mar 2016 12:52:22 -0800 Subject: [PATCH 04/13] Make lint happy --- src/plots/cartesian/tick_label_defaults.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plots/cartesian/tick_label_defaults.js b/src/plots/cartesian/tick_label_defaults.js index 2b4e7ff2532..66434a4a259 100644 --- a/src/plots/cartesian/tick_label_defaults.js +++ b/src/plots/cartesian/tick_label_defaults.js @@ -46,7 +46,7 @@ module.exports = function handleTickLabelDefaults(containerIn, containerOut, coe } } } - + coerce('tickpadding'); if(axType !== 'category' && !options.noHover) coerce('hoverformat'); From 9a811c7aed7ff9b2d6f556adeda1a6443a294843 Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Fri, 4 Mar 2016 19:33:34 -0800 Subject: [PATCH 05/13] Conditionally coerce tickpadding based on nticks. --- src/plots/cartesian/tick_label_defaults.js | 7 ++++++- test/jasmine/tests/axes_test.js | 21 ++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/plots/cartesian/tick_label_defaults.js b/src/plots/cartesian/tick_label_defaults.js index 66434a4a259..abd68e093c7 100644 --- a/src/plots/cartesian/tick_label_defaults.js +++ b/src/plots/cartesian/tick_label_defaults.js @@ -47,7 +47,12 @@ module.exports = function handleTickLabelDefaults(containerIn, containerOut, coe } } - coerce('tickpadding'); + //Only use tickpadding if the user doesn't specify nticks + if(containerOut.nticks === layoutAttributes.nticks.dflt) { + coerce('tickpadding'); + } else { + containerOut.tickpadding = layoutAttributes.tickpadding.dflt; + } if(axType !== 'category' && !options.noHover) coerce('hoverformat'); }; diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index f820e830263..ebde777f60a 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -416,6 +416,7 @@ describe('Test axes', function() { expect(yaxis.showticklabels).toBe(true); expect(yaxis.tickfont).toEqual({ family: '"Open Sans", verdana, arial, sans-serif', size: 12, color: '#444' }); expect(yaxis.tickangle).toBe('auto'); + expect(yaxis.tickpadding).toBe(0); }); it('should use valid inputs', function() { @@ -426,7 +427,9 @@ describe('Test axes', function() { tickcolor: '#F00', showticklabels: true, tickfont: { family: 'Garamond', size: 72, color: '#0FF' }, - tickangle: -20 + tickangle: -20, + tickmode:'auto', + tickpadding: 15 } }; @@ -440,6 +443,7 @@ describe('Test axes', function() { expect(yaxis.showticklabels).toBe(true); expect(yaxis.tickfont).toEqual({ family: 'Garamond', size: 72, color: '#0FF' }); expect(yaxis.tickangle).toBe(-20); + expect(yaxis.tickpadding).toBe(15); }); it('should conditionally coerce based on showticklabels', function() { @@ -455,6 +459,21 @@ describe('Test axes', function() { var yaxis = gd._fullLayout.yaxis; expect(yaxis.tickangle).toBeUndefined(); }); + + it('should conditionally coerce tickpadding if nticks is set', function() { + var layout = { + yaxis: { + tickmode: 'auto', + nticks: 5, + tickpadding: 20 + } + }; + + PlotlyInternal.plot(gd, data, layout); + + var yaxis = gd._fullLayout.yaxis; + expect(yaxis.tickpadding).toBe(0); + }); }); describe('handleTickValueDefaults', function() { From 17255e89d48e9701022e97df39f0c1453e37db5f Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Fri, 4 Mar 2016 19:35:11 -0800 Subject: [PATCH 06/13] Fixup formatting for lint --- test/jasmine/tests/axes_test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index ebde777f60a..71d5a5e14a4 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -428,7 +428,7 @@ describe('Test axes', function() { showticklabels: true, tickfont: { family: 'Garamond', size: 72, color: '#0FF' }, tickangle: -20, - tickmode:'auto', + tickmode: 'auto', tickpadding: 15 } }; @@ -459,7 +459,7 @@ describe('Test axes', function() { var yaxis = gd._fullLayout.yaxis; expect(yaxis.tickangle).toBeUndefined(); }); - + it('should conditionally coerce tickpadding if nticks is set', function() { var layout = { yaxis: { From b75b546a1192239485e0414e8c501ffe4fa7867c Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Fri, 4 Mar 2016 19:44:46 -0800 Subject: [PATCH 07/13] Clarify when tickpadding is coerced --- src/plots/cartesian/tick_label_defaults.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plots/cartesian/tick_label_defaults.js b/src/plots/cartesian/tick_label_defaults.js index abd68e093c7..804bf7acf08 100644 --- a/src/plots/cartesian/tick_label_defaults.js +++ b/src/plots/cartesian/tick_label_defaults.js @@ -47,8 +47,8 @@ module.exports = function handleTickLabelDefaults(containerIn, containerOut, coe } } - //Only use tickpadding if the user doesn't specify nticks - if(containerOut.nticks === layoutAttributes.nticks.dflt) { + //Only use tickpadding if tickmode is 'auto' and the user doesn't specify nticks + if(containerOut.tickmode === 'auto' && containerOut.nticks === layoutAttributes.nticks.dflt) { coerce('tickpadding'); } else { containerOut.tickpadding = layoutAttributes.tickpadding.dflt; From 699af7f7a9c4254d0869341a0ad9173db5bc2cc7 Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Mon, 7 Mar 2016 17:10:48 -0800 Subject: [PATCH 08/13] Add image test that uses tickpadding property --- test/image/mocks/axes-tickpadding.json | 103 +++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 test/image/mocks/axes-tickpadding.json diff --git a/test/image/mocks/axes-tickpadding.json b/test/image/mocks/axes-tickpadding.json new file mode 100644 index 00000000000..52e33be6ad7 --- /dev/null +++ b/test/image/mocks/axes-tickpadding.json @@ -0,0 +1,103 @@ +{ + "data": [ + { + "x": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ], + "y": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ], + "type": "scatter" + } + ], + "layout": { + "xaxis": { + "type": "category", + "tickmode": "auto", + "tickpadding": 15 + }, + "yaxis": { + "type": "category", + "tickmode": "auto", + "tickpadding": 20 + } + } +} \ No newline at end of file From 95257b665484bb4e505cd4ea464547bae10baea1 Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Mon, 7 Mar 2016 17:30:50 -0800 Subject: [PATCH 09/13] Add baseline image for axes-tickpadding.json --- test/image/baselines/axes-tickpadding.png | Bin 0 -> 24568 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/axes-tickpadding.png diff --git a/test/image/baselines/axes-tickpadding.png b/test/image/baselines/axes-tickpadding.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3f877e5ce3f336307abae3f25a410fb2203e79 GIT binary patch literal 24568 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 Date: Wed, 9 Mar 2016 16:32:33 -0800 Subject: [PATCH 10/13] Move tickpadding coercion logic to tick_value_defaults --- src/plots/cartesian/tick_label_defaults.js | 7 ------- src/plots/cartesian/tick_value_defaults.js | 16 +++++++++++++--- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/plots/cartesian/tick_label_defaults.js b/src/plots/cartesian/tick_label_defaults.js index 804bf7acf08..11608362711 100644 --- a/src/plots/cartesian/tick_label_defaults.js +++ b/src/plots/cartesian/tick_label_defaults.js @@ -47,13 +47,6 @@ module.exports = function handleTickLabelDefaults(containerIn, containerOut, coe } } - //Only use tickpadding if tickmode is 'auto' and the user doesn't specify nticks - if(containerOut.tickmode === 'auto' && containerOut.nticks === layoutAttributes.nticks.dflt) { - coerce('tickpadding'); - } else { - containerOut.tickpadding = layoutAttributes.tickpadding.dflt; - } - if(axType !== 'category' && !options.noHover) coerce('hoverformat'); }; diff --git a/src/plots/cartesian/tick_value_defaults.js b/src/plots/cartesian/tick_value_defaults.js index b51994b5ce7..554dea11b6c 100644 --- a/src/plots/cartesian/tick_value_defaults.js +++ b/src/plots/cartesian/tick_value_defaults.js @@ -10,7 +10,7 @@ 'use strict'; var isNumeric = require('fast-isnumeric'); - +var layoutAttributes = require('./layout_attributes'); module.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType) { var tickmodeDefault = 'auto'; @@ -25,8 +25,18 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe tickmodeDefault = 'linear'; } var tickmode = coerce('tickmode', tickmodeDefault); - - if(tickmode === 'auto') coerce('nticks'); + + if(tickmode === 'auto') { + var nticks = coerce('nticks'); + + //Only use tickpadding if tickmode is 'auto' and the user doesn't specify nticks + if(nticks === layoutAttributes.nticks.dflt) { + coerce('tickpadding'); + } + else { + containerOut.tickpadding = layoutAttributes.tickpadding.dflt; + } + } else if(tickmode === 'linear') { coerce('tick0'); coerce('dtick'); From 96e15f357956c48c8802046671462bea3fa6d970 Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Wed, 9 Mar 2016 16:32:59 -0800 Subject: [PATCH 11/13] Remove tickpadding property from gl3d axes, it is not implemented --- src/plots/gl3d/layout/axis_defaults.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plots/gl3d/layout/axis_defaults.js b/src/plots/gl3d/layout/axis_defaults.js index 37ee79dcd23..57950a03641 100644 --- a/src/plots/gl3d/layout/axis_defaults.js +++ b/src/plots/gl3d/layout/axis_defaults.js @@ -48,6 +48,8 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, options) { showGrid: true, bgColor: options.bgColor }); + + delete containerOut.tickpadding; //gl3d doesn't currently implement tickpadding property coerce('gridcolor', colorMix(containerOut.color, options.bgColor, gridLightness).toRgbString()); coerce('title', axName[0]); // shouldn't this be on-par with 2D? From a29d4b96c8b906a61f0c7d1cb100ee23e0a9bd31 Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Tue, 15 Mar 2016 10:24:28 -0700 Subject: [PATCH 12/13] Fixups for lint --- src/plots/cartesian/tick_value_defaults.js | 4 ++-- src/plots/gl3d/layout/axis_defaults.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plots/cartesian/tick_value_defaults.js b/src/plots/cartesian/tick_value_defaults.js index 554dea11b6c..33f34f3f9a1 100644 --- a/src/plots/cartesian/tick_value_defaults.js +++ b/src/plots/cartesian/tick_value_defaults.js @@ -25,10 +25,10 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe tickmodeDefault = 'linear'; } var tickmode = coerce('tickmode', tickmodeDefault); - + if(tickmode === 'auto') { var nticks = coerce('nticks'); - + //Only use tickpadding if tickmode is 'auto' and the user doesn't specify nticks if(nticks === layoutAttributes.nticks.dflt) { coerce('tickpadding'); diff --git a/src/plots/gl3d/layout/axis_defaults.js b/src/plots/gl3d/layout/axis_defaults.js index 57950a03641..3b765392dff 100644 --- a/src/plots/gl3d/layout/axis_defaults.js +++ b/src/plots/gl3d/layout/axis_defaults.js @@ -48,7 +48,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, options) { showGrid: true, bgColor: options.bgColor }); - + delete containerOut.tickpadding; //gl3d doesn't currently implement tickpadding property coerce('gridcolor', colorMix(containerOut.color, options.bgColor, gridLightness).toRgbString()); From 5d396a31c03c565c272a05c3a871e6fdbf4c32d5 Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Wed, 20 Apr 2016 20:23:04 -0700 Subject: [PATCH 13/13] Remove tickpadding from gl3d and colorbar layout attributes --- src/components/colorbar/attributes.js | 1 - src/components/colorbar/defaults.js | 6 +++++- src/plots/gl3d/layout/axis_attributes.js | 1 - src/plots/gl3d/layout/axis_defaults.js | 8 +++++--- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/components/colorbar/attributes.js b/src/components/colorbar/attributes.js index 6ef6a148213..9ded21dd822 100644 --- a/src/components/colorbar/attributes.js +++ b/src/components/colorbar/attributes.js @@ -162,7 +162,6 @@ module.exports = { showticklabels: axesAttrs.showticklabels, tickfont: axesAttrs.tickfont, tickangle: axesAttrs.tickangle, - tickpadding: axesAttrs.tickpadding, tickformat: axesAttrs.tickformat, tickprefix: axesAttrs.tickprefix, showtickprefix: axesAttrs.showtickprefix, diff --git a/src/components/colorbar/defaults.js b/src/components/colorbar/defaults.js index 117e8457272..dba84a962e4 100644 --- a/src/components/colorbar/defaults.js +++ b/src/components/colorbar/defaults.js @@ -13,6 +13,7 @@ var Lib = require('../../lib'); var handleTickValueDefaults = require('../../plots/cartesian/tick_value_defaults'); var handleTickMarkDefaults = require('../../plots/cartesian/tick_mark_defaults'); var handleTickLabelDefaults = require('../../plots/cartesian/tick_label_defaults'); +var cartesianAxesAttrs = require('../../plots/cartesian/layout_attributes'); var attributes = require('./attributes'); @@ -21,8 +22,11 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) { var colorbarOut = containerOut.colorbar = {}, colorbarIn = containerIn.colorbar || {}; + //colorbar doesn't currently implement tickpadding property, but it is a required attribute of a cartesian axis + var cartesianAttributes = Lib.extendFlat({}, attributes, { tickpadding: cartesianAxesAttrs.tickpadding }); + function coerce(attr, dflt) { - return Lib.coerce(colorbarIn, colorbarOut, attributes, attr, dflt); + return Lib.coerce(colorbarIn, colorbarOut, cartesianAttributes, attr, dflt); } var thicknessmode = coerce('thicknessmode'); diff --git a/src/plots/gl3d/layout/axis_attributes.js b/src/plots/gl3d/layout/axis_attributes.js index 5381e3d1f2d..15bfb6b483a 100644 --- a/src/plots/gl3d/layout/axis_attributes.js +++ b/src/plots/gl3d/layout/axis_attributes.js @@ -90,7 +90,6 @@ module.exports = { showticklabels: axesAttrs.showticklabels, tickfont: axesAttrs.tickfont, tickangle: axesAttrs.tickangle, - tickpadding: axesAttrs.tickpadding, tickprefix: axesAttrs.tickprefix, showtickprefix: axesAttrs.showtickprefix, ticksuffix: axesAttrs.ticksuffix, diff --git a/src/plots/gl3d/layout/axis_defaults.js b/src/plots/gl3d/layout/axis_defaults.js index 3b765392dff..bcc4a445fd3 100644 --- a/src/plots/gl3d/layout/axis_defaults.js +++ b/src/plots/gl3d/layout/axis_defaults.js @@ -14,6 +14,7 @@ var Lib = require('../../../lib'); var layoutAttributes = require('./axis_attributes'); var handleAxisDefaults = require('../../cartesian/axis_defaults'); +var cartesianAxesAttrs = require('../../cartesian/layout_attributes'); var axesNames = ['xaxis', 'yaxis', 'zaxis']; var noop = function() {}; @@ -25,8 +26,11 @@ var gridLightness = 100 * (204 - 0x44) / (255 - 0x44); module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, options) { var containerIn, containerOut; + //gl3d doesn't currently implement tickpadding property, but it is a required attribute of a cartesian axis + var cartesianLayoutAttributes = Lib.extendFlat({}, layoutAttributes, { tickpadding: cartesianAxesAttrs.tickpadding }); + function coerce(attr, dflt) { - return Lib.coerce(containerIn, containerOut, layoutAttributes, attr, dflt); + return Lib.coerce(containerIn, containerOut, cartesianLayoutAttributes, attr, dflt); } for(var j = 0; j < axesNames.length; j++) { @@ -49,8 +53,6 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, options) { bgColor: options.bgColor }); - delete containerOut.tickpadding; //gl3d doesn't currently implement tickpadding property - coerce('gridcolor', colorMix(containerOut.color, options.bgColor, gridLightness).toRgbString()); coerce('title', axName[0]); // shouldn't this be on-par with 2D?