From b909d8f3c2ede6576fcf64bdfd45f56c1f338d45 Mon Sep 17 00:00:00 2001 From: Marcel Pursche Date: Tue, 12 Feb 2019 13:05:17 +0100 Subject: [PATCH 1/2] Fix bug in scattergl text update (#1) * Fix bug in scattergl plot * Added tests for scattergl plot update --- src/traces/scattergl/index.js | 15 ++++- test/jasmine/tests/scattergl_test.js | 97 ++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 test/jasmine/tests/scattergl_test.js diff --git a/src/traces/scattergl/index.js b/src/traces/scattergl/index.js index 5a722ce79db..0a058e1e5d3 100644 --- a/src/traces/scattergl/index.js +++ b/src/traces/scattergl/index.js @@ -389,7 +389,20 @@ function plot(gd, subplot, cdata) { } // update main marker options - if(scene.glText) { + if(scene.glText) { + if (scene.count > scene.glText.length) { + // add gl text marker + var textsToAdd = scene.count - scene.glText.length; + for(i=0; i < textsToAdd; i++) { + scene.glText.push(new Text(regl)); + } + } else if (scene.count < scene.glText.length) { + // remove gl text marker + var textsToRemove = scene.glText.length - scene.count; + var removedTexts = scene.glText.splice(scene.count, textsToRemove); + removedTexts.forEach(function (text) { text.destroy(); }); + } + for(i = 0; i < scene.count; i++) { scene.glText[i].update(scene.textOptions[i]); } diff --git a/test/jasmine/tests/scattergl_test.js b/test/jasmine/tests/scattergl_test.js new file mode 100644 index 00000000000..94b720b182f --- /dev/null +++ b/test/jasmine/tests/scattergl_test.js @@ -0,0 +1,97 @@ +var Plotly = require('@lib/index'); +var createGraphDiv = require('../assets/create_graph_div'); +var destroyGraphDiv = require('../assets/destroy_graph_div'); +var failTest = require('../assets/fail_test'); + +describe('end-to-end scattergl tests', function() { + var gd; + + beforeEach(function() { + gd = createGraphDiv(); + }); + + afterEach(destroyGraphDiv); + + it('should create a plot with text labels', function(done) { + Plotly.react(gd, [{ + type: 'scattergl', + mode: 'text+lines', + x: [1, 2, 3, 4, 5, 6, 7], + y: [2, 3, 4, 5, 6, 7, 8], + text: 'Test' + }]).then(function () { + var fullLayout = gd._fullLayout; + var subplot = fullLayout._plots['xy']; + var scene = subplot._scene; + expect(scene.glText.length).toEqual(1); + }).catch(failTest).then(done); + }); + + it('should update a plot with text labels', function (done) { + Plotly.react(gd, [{ + type: 'scattergl', + mode: 'text+lines', + x: [1, 2, 3, 4, 5, 6, 7], + y: [2, 3, 4, 5, 6, 7, 8], + text: 'Test' + }]).then(function () { + var fullLayout = gd._fullLayout; + var subplot = fullLayout._plots['xy']; + var scene = subplot._scene; + expect(scene.glText.length).toEqual(1); + + // add plots + return Plotly.react(gd, [ + { + type: 'scattergl', + mode: 'text+lines', + x: [1, 2, 3, 4, 5, 6, 7], + y: [2, 3, 4, 5, 6, 7, 8], + text: 'Test' + }, + { + type: 'scattergl', + mode: 'text+lines', + x: [1, 2, 3, 4, 5, 6, 7], + y: [3, 4, 5, 6, 7, 8, 9], + text: 'Test 2' + }, + { + type: 'scattergl', + mode: 'text+lines', + x: [1, 2, 3, 4, 5, 6, 7], + y: [4, 5, 6, 7, 8, 9, 10], + text: 'Test 3' + } + ]); + }).then(function () { + var fullLayout = gd._fullLayout; + var subplot = fullLayout._plots['xy']; + var scene = subplot._scene; + expect(scene.glText.length).toEqual(3); + + // remove plots + return Plotly.react(gd, [ + { + type: 'scattergl', + mode: 'text+lines', + x: [1, 2, 3, 4, 5, 6, 7], + y: [2, 3, 4, 5, 6, 7, 8], + text: 'Test' + }, + { + type: 'scattergl', + mode: 'text+lines', + x: [1, 2, 3, 4, 5, 6, 7], + y: [3, 4, 5, 6, 7, 8, 9], + text: 'Test 2' + } + ]); + }).then(function () { + var fullLayout = gd._fullLayout; + var subplot = fullLayout._plots['xy']; + var scene = subplot._scene; + expect(scene.glText.length).toEqual(2); + }).catch(failTest).then(done); + }); +}); From d72fc6b78286a9ae1bb22c6092bf0a6c3cc45ec2 Mon Sep 17 00:00:00 2001 From: Marcel Pursche Date: Tue, 12 Feb 2019 14:52:05 +0100 Subject: [PATCH 2/2] Applied eslint fixes --- src/traces/scattergl/index.js | 10 +++++----- test/jasmine/tests/scattergl_test.js | 18 +++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/traces/scattergl/index.js b/src/traces/scattergl/index.js index 0a058e1e5d3..59b0bd585a0 100644 --- a/src/traces/scattergl/index.js +++ b/src/traces/scattergl/index.js @@ -389,18 +389,18 @@ function plot(gd, subplot, cdata) { } // update main marker options - if(scene.glText) { - if (scene.count > scene.glText.length) { + if(scene.glText) { + if(scene.count > scene.glText.length) { // add gl text marker var textsToAdd = scene.count - scene.glText.length; - for(i=0; i < textsToAdd; i++) { + for(i = 0; i < textsToAdd; i++) { scene.glText.push(new Text(regl)); } - } else if (scene.count < scene.glText.length) { + } else if(scene.count < scene.glText.length) { // remove gl text marker var textsToRemove = scene.glText.length - scene.count; var removedTexts = scene.glText.splice(scene.count, textsToRemove); - removedTexts.forEach(function (text) { text.destroy(); }); + removedTexts.forEach(function(text) { text.destroy(); }); } for(i = 0; i < scene.count; i++) { diff --git a/test/jasmine/tests/scattergl_test.js b/test/jasmine/tests/scattergl_test.js index 94b720b182f..5cea5515c4c 100644 --- a/test/jasmine/tests/scattergl_test.js +++ b/test/jasmine/tests/scattergl_test.js @@ -19,24 +19,24 @@ describe('end-to-end scattergl tests', function() { x: [1, 2, 3, 4, 5, 6, 7], y: [2, 3, 4, 5, 6, 7, 8], text: 'Test' - }]).then(function () { + }]).then(function() { var fullLayout = gd._fullLayout; - var subplot = fullLayout._plots['xy']; + var subplot = fullLayout._plots.xy; var scene = subplot._scene; expect(scene.glText.length).toEqual(1); }).catch(failTest).then(done); }); - it('should update a plot with text labels', function (done) { + it('should update a plot with text labels', function(done) { Plotly.react(gd, [{ type: 'scattergl', mode: 'text+lines', x: [1, 2, 3, 4, 5, 6, 7], y: [2, 3, 4, 5, 6, 7, 8], text: 'Test' - }]).then(function () { + }]).then(function() { var fullLayout = gd._fullLayout; - var subplot = fullLayout._plots['xy']; + var subplot = fullLayout._plots.xy; var scene = subplot._scene; expect(scene.glText.length).toEqual(1); @@ -64,9 +64,9 @@ describe('end-to-end scattergl tests', function() { text: 'Test 3' } ]); - }).then(function () { + }).then(function() { var fullLayout = gd._fullLayout; - var subplot = fullLayout._plots['xy']; + var subplot = fullLayout._plots.xy; var scene = subplot._scene; expect(scene.glText.length).toEqual(3); @@ -87,9 +87,9 @@ describe('end-to-end scattergl tests', function() { text: 'Test 2' } ]); - }).then(function () { + }).then(function() { var fullLayout = gd._fullLayout; - var subplot = fullLayout._plots['xy']; + var subplot = fullLayout._plots.xy; var scene = subplot._scene; expect(scene.glText.length).toEqual(2); }).catch(failTest).then(done);