diff --git a/src/traces/contour/contours_defaults.js b/src/traces/contour/contours_defaults.js new file mode 100644 index 00000000000..0a59f435cae --- /dev/null +++ b/src/traces/contour/contours_defaults.js @@ -0,0 +1,30 @@ +/** +* Copyright 2012-2017, Plotly, Inc. +* All rights reserved. +* +* This source code is licensed under the MIT license found in the +* LICENSE file in the root directory of this source tree. +*/ + +'use strict'; + +var Lib = require('../../lib'); +var attributes = require('./attributes'); + +module.exports = function handleContourDefaults(traceIn, traceOut, coerce) { + var contourStart = Lib.coerce2(traceIn, traceOut, attributes, 'contours.start'); + var contourEnd = Lib.coerce2(traceIn, traceOut, attributes, 'contours.end'); + var missingEnd = (contourStart === false) || (contourEnd === false); + + // normally we only need size if autocontour is off. But contour.calc + // pushes its calculated contour size back to the input trace, so for + // things like restyle that can call supplyDefaults without calc + // after the initial draw, we can just reuse the previous calculation + var contourSize = coerce('contours.size'); + var autoContour; + + if(missingEnd) autoContour = traceOut.autocontour = true; + else autoContour = coerce('autocontour', false); + + if(autoContour || !contourSize) coerce('ncontours'); +}; diff --git a/src/traces/contour/defaults.js b/src/traces/contour/defaults.js index 04b9debba70..a616f818045 100644 --- a/src/traces/contour/defaults.js +++ b/src/traces/contour/defaults.js @@ -13,7 +13,8 @@ var Lib = require('../../lib'); var hasColumns = require('../heatmap/has_columns'); var handleXYZDefaults = require('../heatmap/xyz_defaults'); -var handleStyleDefaults = require('../contour/style_defaults'); +var handleContoursDefaults = require('./contours_defaults'); +var handleStyleDefaults = require('./style_defaults'); var attributes = require('./attributes'); @@ -31,21 +32,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('text'); coerce('connectgaps', hasColumns(traceOut)); - var contourStart = Lib.coerce2(traceIn, traceOut, attributes, 'contours.start'), - contourEnd = Lib.coerce2(traceIn, traceOut, attributes, 'contours.end'), - missingEnd = (contourStart === false) || (contourEnd === false), - - // normally we only need size if autocontour is off. But contour.calc - // pushes its calculated contour size back to the input trace, so for - // things like restyle that can call supplyDefaults without calc - // after the initial draw, we can just reuse the previous calculation - contourSize = coerce('contours.size'), - autoContour; - - if(missingEnd) autoContour = traceOut.autocontour = true; - else autoContour = coerce('autocontour', false); - - if(autoContour || !contourSize) coerce('ncontours'); - + handleContoursDefaults(traceIn, traceOut, coerce); handleStyleDefaults(traceIn, traceOut, coerce, layout); }; diff --git a/src/traces/histogram2dcontour/defaults.js b/src/traces/histogram2dcontour/defaults.js index 21a2dbc0755..b0a9f937559 100644 --- a/src/traces/histogram2dcontour/defaults.js +++ b/src/traces/histogram2dcontour/defaults.js @@ -12,6 +12,7 @@ var Lib = require('../../lib'); var handleSampleDefaults = require('../histogram2d/sample_defaults'); +var handleContoursDefaults = require('../contour/contours_defaults'); var handleStyleDefaults = require('../contour/style_defaults'); var attributes = require('./attributes'); @@ -22,13 +23,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout } handleSampleDefaults(traceIn, traceOut, coerce, layout); - - var contourStart = Lib.coerce2(traceIn, traceOut, attributes, 'contours.start'), - contourEnd = Lib.coerce2(traceIn, traceOut, attributes, 'contours.end'), - autocontour = coerce('autocontour', !(contourStart && contourEnd)); - - if(autocontour) coerce('ncontours'); - else coerce('contours.size'); - + handleContoursDefaults(traceIn, traceOut, coerce); handleStyleDefaults(traceIn, traceOut, coerce, layout); }; diff --git a/test/jasmine/tests/histogram2d_test.js b/test/jasmine/tests/histogram2d_test.js index e6e421fad84..e9d43fac05b 100644 --- a/test/jasmine/tests/histogram2d_test.js +++ b/test/jasmine/tests/histogram2d_test.js @@ -1,9 +1,13 @@ +var Plotly = require('@lib/index'); var Plots = require('@src/plots/plots'); var Lib = require('@src/lib'); var supplyDefaults = require('@src/traces/histogram2d/defaults'); var calc = require('@src/traces/histogram2d/calc'); +var createGraphDiv = require('../assets/create_graph_div'); +var destroyGraphDiv = require('../assets/destroy_graph_div'); +var fail = require('../assets/fail_test'); describe('Test histogram2d', function() { 'use strict'; @@ -132,4 +136,26 @@ describe('Test histogram2d', function() { ]); }); }); + + describe('relayout interaction', function() { + + afterEach(destroyGraphDiv); + + it('should update paths on zooms', function(done) { + var gd = createGraphDiv(); + + Plotly.newPlot(gd, [{ + type: 'histogram2dcontour', + x: [1, 1, 2, 2, 3], + y: [0, 1, 1, 1, 3] + }]) + .then(function() { + return Plotly.relayout(gd, 'xaxis.range', [0, 2]); + }) + .catch(fail) + .then(done); + }); + + }); + });