Skip to content

Commit 5d4f665

Browse files
committed
fix double click on min reversed and max reversed cases
1 parent f0d48e6 commit 5d4f665

File tree

4 files changed

+40
-7
lines changed

4 files changed

+40
-7
lines changed

src/components/modebar/buttons.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,11 +274,11 @@ function handleCartesian(gd, ev) {
274274
if(ax._rangeInitial0 === undefined && ax._rangeInitial1 === undefined) {
275275
aobj[axName + '.autorange'] = true;
276276
} else if(ax._rangeInitial0 === undefined) {
277-
aobj[axName + '.autorange'] = 'min';
277+
aobj[axName + '.autorange'] = ax._autorangeInitial;
278278
aobj[axName + '.range'] = [null, ax._rangeInitial1];
279279
} else if(ax._rangeInitial1 === undefined) {
280280
aobj[axName + '.range'] = [ax._rangeInitial0, null];
281-
aobj[axName + '.autorange'] = 'max';
281+
aobj[axName + '.autorange'] = ax._autorangeInitial;
282282
} else {
283283
aobj[axName + '.range'] = [ax._rangeInitial0, ax._rangeInitial1];
284284
}

src/plots/cartesian/axes.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -330,9 +330,11 @@ axes.saveRangeInitial = function(gd, overwrite) {
330330
ax.range[1] !== ax._rangeInitial1
331331
);
332332

333-
if((isNew && ax.autorange !== true) || (overwrite && hasChanged)) {
334-
ax._rangeInitial0 = ax.autorange === 'min' ? undefined : ax.range[0];
335-
ax._rangeInitial1 = ax.autorange === 'max' ? undefined : ax.range[1];
333+
var autorange = ax.autorange;
334+
if((isNew && autorange !== true) || (overwrite && hasChanged)) {
335+
ax._rangeInitial0 = (autorange === 'min' || autorange === 'max reversed') ? undefined : ax.range[0];
336+
ax._rangeInitial1 = (autorange === 'max' || autorange === 'min reversed') ? undefined : ax.range[1];
337+
ax._autorangeInitial = autorange;
336338
hasOneAxisChanged = true;
337339
}
338340
}

src/plots/cartesian/dragbox.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -826,14 +826,16 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
826826

827827
if(!ax.fixedrange) {
828828
var axName = ax._name;
829+
830+
var autorangeInitial = ax._autorangeInitial;
829831
if(ax._rangeInitial0 === undefined && ax._rangeInitial1 === undefined) {
830832
attrs[axName + '.autorange'] = true;
831833
} else if(ax._rangeInitial0 === undefined) {
832-
attrs[axName + '.autorange'] = 'min';
834+
attrs[axName + '.autorange'] = autorangeInitial;
833835
attrs[axName + '.range'] = [null, ax._rangeInitial1];
834836
} else if(ax._rangeInitial1 === undefined) {
835837
attrs[axName + '.range'] = [ax._rangeInitial0, null];
836-
attrs[axName + '.autorange'] = 'max';
838+
attrs[axName + '.autorange'] = autorangeInitial;
837839
} else {
838840
attrs[axName + '.range'] = [ax._rangeInitial0, ax._rangeInitial1];
839841
}

test/jasmine/tests/click_test.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,35 @@ describe('Test click interactions:', function() {
10461046
})
10471047
.then(done, done.fail);
10481048
});
1049+
1050+
it('when set to \'reset+autorange\' (the default) should autosize on 1st and 2nd double clicks (case of partial ranges reversed)', function(done) {
1051+
mockCopy = setRanges(mockCopy);
1052+
1053+
Plotly.newPlot(gd, [{
1054+
y: [1, 2, 3, 4]}
1055+
], {
1056+
xaxis: {range: [null, 1], autorange: 'max reversed'},
1057+
yaxis: {range: [3, null], autorange: 'min reversed'},
1058+
width: 600,
1059+
height: 600
1060+
}).then(function() {
1061+
expect(gd.layout.xaxis.range).toBeCloseToArray([3.2, 1]);
1062+
expect(gd.layout.yaxis.range).toBeCloseToArray([3, 0.8]);
1063+
1064+
return doubleClick(300, 300);
1065+
})
1066+
.then(function() {
1067+
expect(gd.layout.xaxis.range).toBeCloseToArray([3.2, -0.2]);
1068+
expect(gd.layout.yaxis.range).toBeCloseToArray([4.2, 0.8]);
1069+
1070+
return doubleClick(300, 300);
1071+
})
1072+
.then(function() {
1073+
expect(gd.layout.xaxis.range).toBeCloseToArray([3.2, 1]);
1074+
expect(gd.layout.yaxis.range).toBeCloseToArray([3, 0.8]);
1075+
})
1076+
.then(done, done.fail);
1077+
});
10491078
});
10501079

10511080
describe('zoom interactions', function() {

0 commit comments

Comments
 (0)