From 9b47d66e45f47bbc5a3c439ac048f99c6d4f20e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 7 Apr 2016 12:35:32 -0400 Subject: [PATCH 1/3] dispose delaunayMeadh on scatter3d toggle --- src/traces/scatter3d/convert.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/traces/scatter3d/convert.js b/src/traces/scatter3d/convert.js index 8ee2c6418c7..661c5c5ba7d 100644 --- a/src/traces/scatter3d/convert.js +++ b/src/traces/scatter3d/convert.js @@ -440,7 +440,7 @@ proto.dispose = function() { this.textMarkers.dispose(); } if(this.delaunayMesh) { - this.scene.glplot.remove(this.textMarkers); + this.scene.glplot.remove(this.delaunayMesh); this.delaunayMesh.dispose(); } }; From c15ce0f58be466b5bfdbca88083a373012e52046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 7 Apr 2016 13:18:49 -0400 Subject: [PATCH 2/3] rm gl errorBars object via glplot --- src/traces/scatter3d/convert.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/traces/scatter3d/convert.js b/src/traces/scatter3d/convert.js index 661c5c5ba7d..2e1b4aec6a2 100644 --- a/src/traces/scatter3d/convert.js +++ b/src/traces/scatter3d/convert.js @@ -432,7 +432,7 @@ proto.dispose = function() { this.scatterPlot.dispose(); } if(this.errorBars) { - this.scene.remove(this.errorBars); + this.scene.glplot.remove(this.errorBars); this.errorBars.dispose(); } if(this.textMarkers) { From ee35dc3844860da30bc812605076d96f5c838260 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 7 Apr 2016 13:19:21 -0400 Subject: [PATCH 3/3] add scatter3d visibility toggle test --- test/jasmine/tests/gl_plot_interact_test.js | 28 ++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/test/jasmine/tests/gl_plot_interact_test.js b/test/jasmine/tests/gl_plot_interact_test.js index 6f6cdd96336..ab5274be3f6 100644 --- a/test/jasmine/tests/gl_plot_interact_test.js +++ b/test/jasmine/tests/gl_plot_interact_test.js @@ -73,7 +73,17 @@ describe('Test gl plot interactions', function() { beforeEach(function(done) { gd = createGraphDiv(); - Plotly.plot(gd, mock.data, mock.layout).then(function() { + + var mockCopy = Lib.extendDeep({}, mock); + + // lines, markers, text, error bars and surfaces each + // correspond to one glplot object + mockCopy.data[0].mode = 'lines+markers+text'; + mockCopy.data[0].error_z = { value: 10 }; + mockCopy.data[0].surfaceaxis = 2; + mockCopy.layout.showlegend = true; + + Plotly.plot(gd, mockCopy.data, mockCopy.layout).then(function() { delay(done); }); }); @@ -190,6 +200,22 @@ describe('Test gl plot interactions', function() { }); }); + it('should be able to toggle visibility', function(done) { + var objects = gd._fullLayout.scene._scene.glplot.objects; + + expect(objects.length).toEqual(5); + + Plotly.restyle(gd, 'visible', 'legendonly').then(function() { + expect(objects.length).toEqual(0); + + return Plotly.restyle(gd, 'visible', true); + }).then(function() { + expect(objects.length).toEqual(5); + + done(); + }); + }); + }); describe('gl2d plots', function() {