Skip to content

Commit d67829e

Browse files
committed
create constraints.clean to get it out of the main Plotly.plot code
1 parent d0b15c8 commit d67829e

File tree

3 files changed

+38
-27
lines changed

3 files changed

+38
-27
lines changed

src/plot_api/plot_api.js

+4-19
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ var manageArrays = require('./manage_arrays');
3232
var helpers = require('./helpers');
3333
var subroutines = require('./subroutines');
3434
var cartesianConstants = require('../plots/cartesian/constants');
35-
var enforceAxisConstraints = require('../plots/cartesian/constraints');
35+
var axisConstraints = require('../plots/cartesian/constraints');
36+
var enforceAxisConstraints = axisConstraints.enforce;
37+
var cleanAxisConstraints = axisConstraints.clean;
3638
var axisIds = require('../plots/cartesian/axis_ids');
3739

3840

@@ -269,24 +271,8 @@ Plotly.plot = function(gd, data, layout, config) {
269271

270272
var axList = Plotly.Axes.list(gd, '', true);
271273
for(var i = 0; i < axList.length; i++) {
272-
// before autoranging, check if this axis was previously constrained
273-
// by domain but no longer is
274274
var ax = axList[i];
275-
if(ax._inputDomain) {
276-
var isConstrained = false;
277-
var axId = ax._id;
278-
var constraintGroups = gd._fullLayout._axisConstraintGroups;
279-
for(var j = 0; j < constraintGroups.length; j++) {
280-
if(constraintGroups[j][axId]) {
281-
isConstrained = true;
282-
break;
283-
}
284-
}
285-
if(!isConstrained || ax.constrain !== 'domain') {
286-
ax._input.domain = ax.domain = ax._inputDomain;
287-
delete ax._inputDomain;
288-
}
289-
}
275+
cleanAxisConstraints(gd, ax);
290276

291277
Plotly.Axes.doAutoRange(ax);
292278
}
@@ -2000,7 +1986,6 @@ function _relayout(gd, aobj) {
20001986
}
20011987
}
20021988
else if(pleafPlus.match(/^[xyz]axis[0-9]*\.domain(\[[0|1]\])?$/)) {
2003-
axId = recordAlteredAxis(pleafPlus);
20041989
Lib.nestedProperty(fullLayout, ptrunk + '._inputDomain').set(null);
20051990
}
20061991
else if(pleafPlus.match(/^[xyz]axis[0-9]*\.constrain.*$/)) {

src/plots/cartesian/constraints.js

+21-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ var ALMOST_EQUAL = require('../../constants/numerical').ALMOST_EQUAL;
1717
var FROM_BL = require('../../constants/alignment').FROM_BL;
1818

1919

20-
module.exports = function enforceAxisConstraints(gd) {
20+
exports.enforce = function enforceAxisConstraints(gd) {
2121
var fullLayout = gd._fullLayout;
2222
var constraintGroups = fullLayout._axisConstraintGroups;
2323

@@ -172,6 +172,26 @@ module.exports = function enforceAxisConstraints(gd) {
172172
}
173173
};
174174

175+
// For use before autoranging, check if this axis was previously constrained
176+
// by domain but no longer is
177+
exports.clean = function cleanConstraints(gd, ax) {
178+
if(ax._inputDomain) {
179+
var isConstrained = false;
180+
var axId = ax._id;
181+
var constraintGroups = gd._fullLayout._axisConstraintGroups;
182+
for(var j = 0; j < constraintGroups.length; j++) {
183+
if(constraintGroups[j][axId]) {
184+
isConstrained = true;
185+
break;
186+
}
187+
}
188+
if(!isConstrained || ax.constrain !== 'domain') {
189+
ax._input.domain = ax.domain = ax._inputDomain;
190+
delete ax._inputDomain;
191+
}
192+
}
193+
};
194+
175195
function updateDomain(ax, factor) {
176196
var inputDomain = ax._inputDomain;
177197
var centerFraction = FROM_BL[ax.constraintoward];

src/plots/gl2d/scene2d.js

+13-7
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ var createOptions = require('./convert');
2222
var createCamera = require('./camera');
2323
var convertHTMLToUnicode = require('../../lib/html2unicode');
2424
var showNoWebGlMsg = require('../../lib/show_no_webgl_msg');
25-
var enforceAxisConstraints = require('../../plots/cartesian/constraints');
25+
var axisConstraints = require('../../plots/cartesian/constraints');
26+
var enforceAxisConstraints = axisConstraints.enforce;
27+
var cleanAxisConstraints = axisConstraints.clean;
2628

2729
var AXES = ['xaxis', 'yaxis'];
2830
var STATIC_CANVAS, STATIC_CONTEXT;
@@ -395,6 +397,15 @@ proto.plot = function(fullData, calcData, fullLayout) {
395397
options.merge(fullLayout);
396398
options.screenBox = [0, 0, width, height];
397399

400+
var mockGraphDiv = {_fullLayout: {
401+
_axisConstraintGroups: this.graphDiv._fullLayout._axisConstraintGroups,
402+
xaxis: this.xaxis,
403+
yaxis: this.yaxis
404+
}};
405+
406+
cleanAxisConstraints(mockGraphDiv, this.xaxis);
407+
cleanAxisConstraints(mockGraphDiv, this.yaxis);
408+
398409
var size = fullLayout._size,
399410
domainX = this.xaxis.domain,
400411
domainY = this.yaxis.domain;
@@ -441,12 +452,7 @@ proto.plot = function(fullData, calcData, fullLayout) {
441452
ax.setScale();
442453
}
443454

444-
var mockLayout = {
445-
_axisConstraintGroups: this.graphDiv._fullLayout._axisConstraintGroups,
446-
xaxis: this.xaxis,
447-
yaxis: this.yaxis
448-
};
449-
enforceAxisConstraints({_fullLayout: mockLayout});
455+
enforceAxisConstraints(mockGraphDiv);
450456

451457
options.ticks = this.computeTickMarks();
452458

0 commit comments

Comments
 (0)