From 7357f827757f846e9be797d8795425d65f23c3fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 27 Feb 2017 17:36:25 -0500 Subject: [PATCH 1/3] fixup (return early in Axes.expand if not under autorange) --- src/plots/cartesian/axes.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 8bf6c3376eb..1157b32169b 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -378,7 +378,11 @@ axes.saveRangeInitial = function(gd, overwrite) { // tozero: (boolean) make sure to include zero if axis is linear, // and make it a tight bound if possible axes.expand = function(ax, data, options) { - var needsAutorange = (ax.autorange || Lib.nestedProperty(ax, 'rangeslider.autorange')); + var needsAutorange = ( + ax.autorange || + !!Lib.nestedProperty(ax, 'rangeslider.autorange').get() + ); + if(!needsAutorange || !data) return; if(!ax._min) ax._min = []; From 0cbaca47fa3067fe01178a935483107b895ce190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 27 Feb 2017 17:52:44 -0500 Subject: [PATCH 2/3] fixup Axes.expand tests - rm obsolete _needsExpand - mock with `ax.autorange: true` --- test/jasmine/tests/axes_test.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index f4bad2f2478..c0562ca676b 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -1264,11 +1264,11 @@ describe('Test axes', function() { // way of getting a new clean copy each time. function getDefaultAx() { return { + autorange: true, c2l: Number, type: 'linear', _length: 100, - _m: 1, - _needsExpand: true + _m: 1 }; } @@ -1284,15 +1284,14 @@ describe('Test axes', function() { it('calls ax.setScale if necessary', function() { ax = { + autorange: true, c2l: Number, type: 'linear', - setScale: function() {}, - _needsExpand: true + setScale: function() {} }; spyOn(ax, 'setScale'); - data = [1]; - expand(ax, data); + expand(ax, [1]); expect(ax.setScale).toHaveBeenCalled(); }); From e32eb904caf73e5de4011c5d0975228f320011f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 27 Feb 2017 17:53:17 -0500 Subject: [PATCH 3/3] add Axes.expand test cases for early returns and range sliders --- test/jasmine/tests/axes_test.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index c0562ca676b..656a3284135 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -1449,6 +1449,38 @@ describe('Test axes', function() { expect(ax._min).toEqual([{val: 0, pad: 0}]); expect(ax._max).toEqual([{val: 6, pad: 15}]); }); + + it('should return early if no data is given', function() { + ax = getDefaultAx(); + + expand(ax); + expect(ax._min).toBeUndefined(); + expect(ax._max).toBeUndefined(); + }); + + it('should return early if `autorange` is falsy', function() { + ax = getDefaultAx(); + data = [2, 5]; + + ax.autorange = false; + ax.rangeslider = { autorange: false }; + + expand(ax, data, {}); + expect(ax._min).toBeUndefined(); + expect(ax._max).toBeUndefined(); + }); + + it('should consider range slider `autorange`', function() { + ax = getDefaultAx(); + data = [2, 5]; + + ax.autorange = false; + ax.rangeslider = { autorange: true }; + + expand(ax, data, {}); + expect(ax._min).toEqual([{val: 2, pad: 0}]); + expect(ax._max).toEqual([{val: 5, pad: 0}]); + }); }); describe('calcTicks and tickText', function() {