From 358b0db6949ec67c26721f595e455c69db52c01f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 22 Jan 2019 16:49:03 -0500 Subject: [PATCH] clear _inputDomain on cartesian axes with altered domains ... during Plotly.react diffing. --- src/plot_api/plot_api.js | 5 +++ test/jasmine/tests/axes_test.js | 63 +++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index 252b1f80880..e950d614426 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -2954,6 +2954,11 @@ function getDiffFlags(oldContainer, newContainer, outerparts, opts) { flags.rangesAltered[outerparts[0]] = 1; } + // clear _inputDomain on cartesian axes with altered domains + if(AX_DOMAIN_RE.test(astr)) { + nestedProperty(newContainer, '_inputDomain').set(null); + } + // track datarevision changes if(key === 'datarevision') { flags.newDataRevision = 1; diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index ce1fb445b93..03eb6563cad 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -1007,6 +1007,69 @@ describe('Test axes', function() { .catch(failTest) .then(done); }); + + it('can react from different layout *grid* settings', function(done) { + var fig1 = function() { + return { + data: [{}, {xaxis: 'x2'}, {xaxis: 'x3'}, {xaxis: 'x4'}], + layout: { + grid: { + xaxes: ['x', 'x2', 'x3', 'x4'], + yaxes: ['y'], + xgap: 0.1, + ygap: 0.1, + xside: 'bottom', + yside: 'left' + }, + xaxis2: {scaleanchor: 'x'}, + xaxis3: {scaleanchor: 'x'}, + xaxis4: {scaleanchor: 'x'} + } + }; + }; + + var fig2 = function() { + return { + data: [{}, {xaxis: 'x2'}, {xaxis: 'x3'}, {xaxis: 'x4'}], + layout: { + grid: { + xaxes: ['x', 'x2'], + yaxes: ['y'], + xgap: 0.1, + ygap: 0.1, + xside: 'bottom', + yside: 'left' + }, + xaxis2: {scaleanchor: 'x'} + } + }; + }; + + var rng = [-1, 6]; + + Plotly.plot(gd, fig1()) + .then(function() { + var msg = 'fig1'; + assertRangeDomain('xaxis', rng, [0, 0.230769], [0, 0.230769], msg); + assertRangeDomain('xaxis2', rng, [0.256410, 0.487179], [0.256410, 0.487179], msg); + assertRangeDomain('xaxis3', rng, [0.512820, 0.743589], [0.512820, 0.743589], msg); + }) + .then(function() { return Plotly.react(gd, fig2()); }) + .then(function() { + var msg = 'fig2'; + assertRangeDomain('xaxis', rng, [0, 0.473684], [0, 0.473684], msg); + assertRangeDomain('xaxis2', rng, [0.526315, 1], [0.526315, 1], msg); + }) + .then(function() { return Plotly.react(gd, fig1()); }) + .then(function() { + var msg = 'back to fig1'; + assertRangeDomain('xaxis', rng, [0, 0.230769], [0, 0.230769], msg); + assertRangeDomain('xaxis2', rng, [0.256410, 0.487179], [0.256410, 0.487179], msg); + assertRangeDomain('xaxis3', rng, [0.512820, 0.743589], [0.512820, 0.743589], msg); + }) + .catch(failTest) + .then(done); + }); }); describe('categoryorder', function() {