From 92a3061f6cbf3cfa708ee5499cb4f7651ec8990c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 27 Mar 2017 13:33:25 -0400 Subject: [PATCH 1/3] use same `contours` logic in histogram2dcontour as for contour traces - which fixes the references issues on relayout when `autocontour: true` --- src/traces/contour/contours_defaults.js | 30 +++++++++++++++++++++++ src/traces/contour/defaults.js | 20 +++------------ src/traces/histogram2dcontour/defaults.js | 2 ++ 3 files changed, 35 insertions(+), 17 deletions(-) create mode 100644 src/traces/contour/contours_defaults.js 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..98984d6e14d 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'); @@ -30,5 +31,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout if(autocontour) coerce('ncontours'); else coerce('contours.size'); + handleContoursDefaults(traceIn, traceOut, coerce); handleStyleDefaults(traceIn, traceOut, coerce, layout); }; From 3c390acdf4bdc1e9a0b0f74946cf12eb4fca3f58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 27 Mar 2017 13:49:23 -0400 Subject: [PATCH 2/3] add histogram2dcontour relayout test --- test/jasmine/tests/histogram2d_test.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) 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); + }); + + }); + }); From b163ad20b171b677f1d279139a89ad948b0b6a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 27 Mar 2017 14:23:12 -0400 Subject: [PATCH 3/3] :hocho: now useless coerce statements --- src/traces/histogram2dcontour/defaults.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/traces/histogram2dcontour/defaults.js b/src/traces/histogram2dcontour/defaults.js index 98984d6e14d..b0a9f937559 100644 --- a/src/traces/histogram2dcontour/defaults.js +++ b/src/traces/histogram2dcontour/defaults.js @@ -23,14 +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); };