Skip to content

Commit 8bdbf73

Browse files
authored
Merge pull request #3461 from plotly/fix-react-scaleanchor-domain-diff
Clear _inputDomain on cartesian axes with altered domains
2 parents 323195e + 358b0db commit 8bdbf73

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

src/plot_api/plot_api.js

+5
Original file line numberDiff line numberDiff line change
@@ -2954,6 +2954,11 @@ function getDiffFlags(oldContainer, newContainer, outerparts, opts) {
29542954
flags.rangesAltered[outerparts[0]] = 1;
29552955
}
29562956

2957+
// clear _inputDomain on cartesian axes with altered domains
2958+
if(AX_DOMAIN_RE.test(astr)) {
2959+
nestedProperty(newContainer, '_inputDomain').set(null);
2960+
}
2961+
29572962
// track datarevision changes
29582963
if(key === 'datarevision') {
29592964
flags.newDataRevision = 1;

test/jasmine/tests/axes_test.js

+63
Original file line numberDiff line numberDiff line change
@@ -1007,6 +1007,69 @@ describe('Test axes', function() {
10071007
.catch(failTest)
10081008
.then(done);
10091009
});
1010+
1011+
it('can react from different layout *grid* settings', function(done) {
1012+
var fig1 = function() {
1013+
return {
1014+
data: [{}, {xaxis: 'x2'}, {xaxis: 'x3'}, {xaxis: 'x4'}],
1015+
layout: {
1016+
grid: {
1017+
xaxes: ['x', 'x2', 'x3', 'x4'],
1018+
yaxes: ['y'],
1019+
xgap: 0.1,
1020+
ygap: 0.1,
1021+
xside: 'bottom',
1022+
yside: 'left'
1023+
},
1024+
xaxis2: {scaleanchor: 'x'},
1025+
xaxis3: {scaleanchor: 'x'},
1026+
xaxis4: {scaleanchor: 'x'}
1027+
}
1028+
};
1029+
};
1030+
1031+
var fig2 = function() {
1032+
return {
1033+
data: [{}, {xaxis: 'x2'}, {xaxis: 'x3'}, {xaxis: 'x4'}],
1034+
layout: {
1035+
grid: {
1036+
xaxes: ['x', 'x2'],
1037+
yaxes: ['y'],
1038+
xgap: 0.1,
1039+
ygap: 0.1,
1040+
xside: 'bottom',
1041+
yside: 'left'
1042+
},
1043+
xaxis2: {scaleanchor: 'x'}
1044+
}
1045+
};
1046+
};
1047+
1048+
var rng = [-1, 6];
1049+
1050+
Plotly.plot(gd, fig1())
1051+
.then(function() {
1052+
var msg = 'fig1';
1053+
assertRangeDomain('xaxis', rng, [0, 0.230769], [0, 0.230769], msg);
1054+
assertRangeDomain('xaxis2', rng, [0.256410, 0.487179], [0.256410, 0.487179], msg);
1055+
assertRangeDomain('xaxis3', rng, [0.512820, 0.743589], [0.512820, 0.743589], msg);
1056+
})
1057+
.then(function() { return Plotly.react(gd, fig2()); })
1058+
.then(function() {
1059+
var msg = 'fig2';
1060+
assertRangeDomain('xaxis', rng, [0, 0.473684], [0, 0.473684], msg);
1061+
assertRangeDomain('xaxis2', rng, [0.526315, 1], [0.526315, 1], msg);
1062+
})
1063+
.then(function() { return Plotly.react(gd, fig1()); })
1064+
.then(function() {
1065+
var msg = 'back to fig1';
1066+
assertRangeDomain('xaxis', rng, [0, 0.230769], [0, 0.230769], msg);
1067+
assertRangeDomain('xaxis2', rng, [0.256410, 0.487179], [0.256410, 0.487179], msg);
1068+
assertRangeDomain('xaxis3', rng, [0.512820, 0.743589], [0.512820, 0.743589], msg);
1069+
})
1070+
.catch(failTest)
1071+
.then(done);
1072+
});
10101073
});
10111074

10121075
describe('categoryorder', function() {

0 commit comments

Comments
 (0)