Skip to content

Commit aff9dbf

Browse files
committed
fixup selectedpoints -> calcdata for box/violin
- now works for unsorted sample arrays.
1 parent 80eee22 commit aff9dbf

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/traces/box/calc.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,13 @@ function calcSelection(cd, trace) {
200200
if(Array.isArray(trace.selectedpoints)) {
201201
for(var i = 0; i < cd.length; i++) {
202202
var pts = cd[i].pts || [];
203-
Lib.tagSelected(pts, trace);
203+
var ptNumber2cdIndex = {};
204+
205+
for(var j = 0; j < pts.length; j++) {
206+
ptNumber2cdIndex[pts[j].i] = j;
207+
}
208+
209+
Lib.tagSelected(pts, trace, ptNumber2cdIndex);
204210
}
205211
}
206212
}

test/jasmine/tests/select_test.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,14 +1338,15 @@ describe('Test that selections persist:', function() {
13381338
it('should persist for box', function(done) {
13391339
function _assert(expected) {
13401340
var selected = gd.calcdata[0][0].pts.map(function(d) { return d.selected; });
1341-
expect(selected).toBeCloseToArray(expected.selected, 'selected vals');
1341+
expect(selected).toBeCloseToArray(expected.cd, 'selected calcdata vals');
1342+
expect(gd.data[0].selectedpoints).toBeCloseToArray(expected.selectedpoints, 'selectedpoints array');
13421343
assertPtOpacity('.point', expected);
13431344
}
13441345

13451346
Plotly.plot(gd, [{
13461347
type: 'box',
13471348
x0: 0,
1348-
y: [1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5],
1349+
y: [5, 4, 4, 1, 2, 2, 2, 2, 2, 3, 3, 3],
13491350
boxpoints: 'all'
13501351
}], {
13511352
dragmode: 'select',
@@ -1360,7 +1361,9 @@ describe('Test that selections persist:', function() {
13601361
})
13611362
.then(function() {
13621363
_assert({
1363-
selected: [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
1364+
// N.B. pts in calcdata are sorted
1365+
cd: [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
1366+
selectedpoints: [1, 2, 0],
13641367
style: [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 1, 1, 1],
13651368
});
13661369

@@ -1369,7 +1372,8 @@ describe('Test that selections persist:', function() {
13691372
})
13701373
.then(function() {
13711374
_assert({
1372-
selected: [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 1, 1, 1],
1375+
cd: [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 1, 1, 1],
1376+
selectedpoints: [1, 2, 0],
13731377
style: [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 1, 1, 1],
13741378
});
13751379
})

0 commit comments

Comments
 (0)