From 261155044fc0fb53757eeef03d2c85e5e87659c4 Mon Sep 17 00:00:00 2001 From: Daniel Blinick Date: Tue, 3 Dec 2019 17:11:17 +0200 Subject: [PATCH 1/3] adding support for defining groups in data.transforms.groups using typed arrays --- src/transforms/groupby.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/transforms/groupby.js b/src/transforms/groupby.js index c4803fc94b9..f292cdf7c7f 100644 --- a/src/transforms/groupby.js +++ b/src/transforms/groupby.js @@ -172,7 +172,7 @@ function transformOne(trace, state) { var groups = trace.transforms[transformIndex].groups; var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); - if(!(Array.isArray(groups)) || groups.length === 0) { + if(!(Lib.isArrayOrTypedArray(groups)) || groups.length === 0) { return [trace]; } From d295d343d21b3c2f741a78820b27f98118adf6b5 Mon Sep 17 00:00:00 2001 From: Daniel Blinick Date: Sun, 8 Dec 2019 11:02:06 +0200 Subject: [PATCH 2/3] adding test to assert that grouping works when preformed using a typed array6 --- test/jasmine/tests/transform_groupby_test.js | 30 ++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/jasmine/tests/transform_groupby_test.js b/test/jasmine/tests/transform_groupby_test.js index 1b2269d1705..5bcfd359c05 100644 --- a/test/jasmine/tests/transform_groupby_test.js +++ b/test/jasmine/tests/transform_groupby_test.js @@ -53,6 +53,20 @@ describe('groupby', function() { }] }]; + var mockDataWithTypedArrayGroups = [{ + mode: 'markers', + x: [20, 11, 12, 0, 1, 2, 3], + y: [1, 2, 3, 2, 5, 2, 0], + transforms: [{ + type: 'groupby', + groups: new Uint8Array([2, 1, 2, 2, 2, 1, 1]), + styles: [ + {target: 1, value: {marker: {color: 'green'}}}, + {target: 2, value: {marker: {color: 'black'}}} + ] + }] + }]; + afterEach(destroyGraphDiv); it('Plotly.plot should plot the transform traces', function(done) { @@ -318,6 +332,22 @@ describe('groupby', function() { .catch(failTest) .then(done); }); + + it ('Plotly.plot should group points properly using typed array', function(done) { + var data = Lib.extendDeep([], mockDataWithTypedArrayGroups); + + var gd = createGraphDiv(); + + Plotly.plot(gd, data).then(function() { + expect(gd._fullData.length).toEqual(2); + expect(gd._fullData[0].x).toEqual([20, 12, 0, 1]); + expect(gd._fullData[0].y).toEqual([1, 3, 2, 5]); + expect(gd._fullData[1].x).toEqual([11, 2, 3]); + expect(gd._fullData[1].y).toEqual([2, 2, 0]); + }) + .catch(failTest) + .then(done); + }) }); describe('many-to-many transforms', function() { From 56c68bdfb4679faeee960139997302ce1cda16fb Mon Sep 17 00:00:00 2001 From: Daniel Blinick Date: Mon, 9 Dec 2019 18:03:23 +0200 Subject: [PATCH 3/3] fixing lint errors --- test/jasmine/tests/transform_groupby_test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/jasmine/tests/transform_groupby_test.js b/test/jasmine/tests/transform_groupby_test.js index 5bcfd359c05..e6487960606 100644 --- a/test/jasmine/tests/transform_groupby_test.js +++ b/test/jasmine/tests/transform_groupby_test.js @@ -333,7 +333,7 @@ describe('groupby', function() { .then(done); }); - it ('Plotly.plot should group points properly using typed array', function(done) { + it('Plotly.plot should group points properly using typed array', function(done) { var data = Lib.extendDeep([], mockDataWithTypedArrayGroups); var gd = createGraphDiv(); @@ -347,7 +347,7 @@ describe('groupby', function() { }) .catch(failTest) .then(done); - }) + }); }); describe('many-to-many transforms', function() {