Skip to content

Commit 96ab8c0

Browse files
committed
Merge pull request #203 from plotly/delete-trace-bug
Make deleteTrace handle big-indices-array properly [fixes #201]
2 parents 0a78842 + 15e7309 commit 96ab8c0

File tree

4 files changed

+29
-1
lines changed

4 files changed

+29
-1
lines changed

src/lib/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ lib.parseDate = datesModule.parseDate;
3131
var searchModule = require('./search');
3232
lib.findBin = searchModule.findBin;
3333
lib.sorterAsc = searchModule.sorterAsc;
34+
lib.sorterDes = searchModule.sorterDes;
3435
lib.distinctVals = searchModule.distinctVals;
3536
lib.roundUp = searchModule.roundUp;
3637

src/lib/search.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ function greaterThan(a, b) { return a > b; }
5656
function greaterOrEqual(a, b) { return a >= b; }
5757

5858
exports.sorterAsc = function(a, b) { return a - b; };
59+
exports.sorterDes = function(a, b) { return b - a; };
5960

6061
/**
6162
* find distinct values in an array, lumping together ones that appear to

src/plot_api/plot_api.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1423,7 +1423,7 @@ Plotly.deleteTraces = function deleteTraces(gd, indices) {
14231423
indices = positivifyIndices(indices, gd.data.length - 1);
14241424

14251425
// we want descending here so that splicing later doesn't affect indexing
1426-
indices.sort().reverse();
1426+
indices.sort(Lib.sorterDes);
14271427
for (i = 0; i < indices.length; i += 1) {
14281428
deletedTrace = gd.data.splice(indices[i], 1)[0];
14291429
traces.push(deletedTrace);

test/jasmine/tests/plot_api_test.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,32 @@ describe('Test plot api', function() {
141141

142142
});
143143

144+
it('should work with more than 10 indices', function() {
145+
gd.data = [];
146+
147+
for(var i = 0; i < 20; i++) {
148+
gd.data.push({
149+
name: 'trace #' + i
150+
});
151+
}
152+
153+
var expectedData = [
154+
{name: 'trace #12'},
155+
{name: 'trace #13'},
156+
{name: 'trace #14'},
157+
{name: 'trace #15'},
158+
{name: 'trace #16'},
159+
{name: 'trace #17'},
160+
{name: 'trace #18'},
161+
{name: 'trace #19'}
162+
];
163+
164+
Plotly.deleteTraces(gd, [0,1,2,3,4,5,6,7,8,9,10,11]);
165+
expect(gd.data).toEqual(expectedData);
166+
expect(PlotlyInternal.redraw).toHaveBeenCalled();
167+
168+
});
169+
144170
});
145171

146172
describe('Plotly.addTraces', function() {

0 commit comments

Comments
 (0)