From 610ac45bac491c4c3aaf60c4c3295dd2e4707e8e Mon Sep 17 00:00:00 2001 From: alexcjohnson Date: Wed, 2 May 2018 10:39:38 -0400 Subject: [PATCH] fix #2602 - Plotly.react add/remove traces bug --- src/plot_api/plot_api.js | 2 +- test/jasmine/tests/plot_api_test.js | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index 34a078c3101..939238fb304 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -2372,7 +2372,7 @@ function diffData(gd, oldFullData, newFullData, immutable) { if(oldFullData.length !== newFullData.length) { return { fullReplot: true, - clearCalc: true + calc: true }; } diff --git a/test/jasmine/tests/plot_api_test.js b/test/jasmine/tests/plot_api_test.js index 81325bb6a85..8d03a850f01 100644 --- a/test/jasmine/tests/plot_api_test.js +++ b/test/jasmine/tests/plot_api_test.js @@ -2610,6 +2610,29 @@ describe('Test plot api', function() { images.draw.calls.reset(); } + it('can add / remove traces', function(done) { + var data1 = [{y: [1, 2, 3], mode: 'markers'}]; + var data2 = [data1[0], {y: [2, 3, 1], mode: 'markers'}]; + var layout = {}; + Plotly.newPlot(gd, data1, layout) + .then(countPlots) + .then(function() { + expect(d3.selectAll('.point').size()).toBe(3); + + return Plotly.react(gd, data2, layout); + }) + .then(function() { + expect(d3.selectAll('.point').size()).toBe(6); + + return Plotly.react(gd, data1, layout); + }) + .then(function() { + expect(d3.selectAll('.point').size()).toBe(3); + }) + .catch(failTest) + .then(done); + }); + it('should notice new data by ===, without layout.datarevision', function(done) { var data = [{y: [1, 2, 3], mode: 'markers'}]; var layout = {};