Skip to content

Commit 2d75e70

Browse files
committed
map 'i' & 'trace.index' value to pointNumber & curveNumber
... respectively, to make pie trace event data more on-par with other trace types.
1 parent 9ea1854 commit 2d75e70

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

src/traces/pie/plot.js

+4
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ module.exports = function plot(gd, cdpie) {
7777
return;
7878
}
7979

80+
// to have consistent event data compared to other traces
81+
pt.pointNumber = pt.i;
82+
pt.curveNumber = trace.index;
83+
8084
quadrants[pt.pxmid[1] < 0 ? 0 : 1][pt.pxmid[0] < 0 ? 0 : 1].push(pt);
8185

8286
var cx = cd0.cx + depthVector[0],

test/jasmine/tests/pie_test.js

+18-7
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,9 @@ describe('pie hovering', function() {
178178
var fields = [
179179
'v', 'label', 'color', 'i', 'hidden',
180180
'text', 'px1', 'pxmid', 'midangle',
181-
'px0', 'largeArc', 'cxFinal', 'cyFinal',
181+
'px0', 'largeArc',
182+
'pointNumber', 'curveNumber',
183+
'cxFinal', 'cyFinal',
182184
'originalEvent'
183185
];
184186

@@ -392,18 +394,22 @@ describe('Test event property of interactions on a pie plot:', function() {
392394
expect(typeof trace).toEqual(typeof {}, 'points.trace');
393395

394396
var pt = futureData.points[0];
395-
expect(Object.keys(pt)).toEqual([
397+
expect(Object.keys(pt)).toEqual(jasmine.arrayContaining([
396398
'v', 'label', 'color', 'i', 'hidden', 'vTotal', 'text', 't',
397399
'trace', 'r', 'cx', 'cy', 'px1', 'pxmid', 'midangle', 'px0',
398-
'largeArc', 'cxFinal', 'cyFinal'
399-
]);
400+
'largeArc', 'cxFinal', 'cyFinal',
401+
'pointNumber', 'curveNumber'
402+
]));
403+
expect(Object.keys(pt).length).toBe(21);
404+
400405
expect(typeof pt.color).toEqual(typeof '#1f77b4', 'points[0].color');
401406
expect(pt.cx).toEqual(200, 'points[0].cx');
402407
expect(pt.cxFinal).toEqual(200, 'points[0].cxFinal');
403408
expect(pt.cy).toEqual(160, 'points[0].cy');
404409
expect(pt.cyFinal).toEqual(160, 'points[0].cyFinal');
405410
expect(pt.hidden).toEqual(false, 'points[0].hidden');
406411
expect(pt.i).toEqual(4, 'points[0].i');
412+
expect(pt.pointNumber).toEqual(4, 'points[0].pointNumber');
407413
expect(pt.label).toEqual('4', 'points[0].label');
408414
expect(pt.largeArc).toEqual(0, 'points[0].largeArc');
409415
expect(pt.midangle).toEqual(1.0471975511965976, 'points[0].midangle');
@@ -416,6 +422,7 @@ describe('Test event property of interactions on a pie plot:', function() {
416422
expect(typeof pt.trace).toEqual(typeof {}, 'points[0].trace');
417423
expect(pt.v).toEqual(5, 'points[0].v');
418424
expect(pt.vTotal).toEqual(15, 'points[0].vTotal');
425+
expect(pt.curveNumber).toEqual(0, 'points[0].curveNumber');
419426

420427
var evt = futureData.event;
421428
expect(evt.clientX).toEqual(pointPos[0], 'event.clientX');
@@ -453,18 +460,21 @@ describe('Test event property of interactions on a pie plot:', function() {
453460
expect(typeof trace).toEqual(typeof {}, 'points.trace');
454461

455462
var pt = futureData.points[0];
456-
expect(Object.keys(pt)).toEqual([
463+
expect(Object.keys(pt)).toEqual(jasmine.arrayContaining([
457464
'v', 'label', 'color', 'i', 'hidden', 'vTotal', 'text', 't',
458465
'trace', 'r', 'cx', 'cy', 'px1', 'pxmid', 'midangle', 'px0',
459-
'largeArc', 'cxFinal', 'cyFinal'
460-
]);
466+
'largeArc', 'cxFinal', 'cyFinal',
467+
'pointNumber', 'curveNumber'
468+
]));
469+
461470
expect(typeof pt.color).toEqual(typeof '#1f77b4', 'points[0].color');
462471
expect(pt.cx).toEqual(200, 'points[0].cx');
463472
expect(pt.cxFinal).toEqual(200, 'points[0].cxFinal');
464473
expect(pt.cy).toEqual(160, 'points[0].cy');
465474
expect(pt.cyFinal).toEqual(160, 'points[0].cyFinal');
466475
expect(pt.hidden).toEqual(false, 'points[0].hidden');
467476
expect(pt.i).toEqual(4, 'points[0].i');
477+
expect(pt.pointNumber).toEqual(4, 'points[0].pointNumber');
468478
expect(pt.label).toEqual('4', 'points[0].label');
469479
expect(pt.largeArc).toEqual(0, 'points[0].largeArc');
470480
expect(pt.midangle).toEqual(1.0471975511965976, 'points[0].midangle');
@@ -477,6 +487,7 @@ describe('Test event property of interactions on a pie plot:', function() {
477487
expect(typeof pt.trace).toEqual(typeof {}, 'points[0].trace');
478488
expect(pt.v).toEqual(5, 'points[0].v');
479489
expect(pt.vTotal).toEqual(15, 'points[0].vTotal');
490+
expect(pt.curveNumber).toEqual(0, 'points[0].curveNumber');
480491

481492
var evt = futureData.event;
482493
expect(evt.clientX).toEqual(pointPos[0], 'event.clientX');

0 commit comments

Comments
 (0)