diff --git a/src/components/legend/draw.js b/src/components/legend/draw.js index 96c09100b3a..3e9b455f612 100644 --- a/src/components/legend/draw.js +++ b/src/components/legend/draw.js @@ -374,6 +374,9 @@ function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) { if(trace._group) { evtData.group = trace._group; } + if(trace.type === 'pie') { + evtData.label = legendItem.datum()[0].label; + } var clickVal = Events.triggerHandler(gd, 'plotly_legendclick', evtData); if(clickVal === false) return; diff --git a/test/jasmine/tests/legend_test.js b/test/jasmine/tests/legend_test.js index 15def938ace..b92df5bc529 100644 --- a/test/jasmine/tests/legend_test.js +++ b/test/jasmine/tests/legend_test.js @@ -1353,6 +1353,8 @@ describe('legend interaction', function() { }); gd.once('plotly_restyle', done); + gd.once('plotly_relayout', done); + click(clickArg[0], clickArg[1])(); }); } @@ -1408,6 +1410,30 @@ describe('legend interaction', function() { .catch(failTest) .then(done); }); + + it('should have correct keys (pie case)', function(done) { + Plotly.newPlot(gd, [{ + type: 'pie', + labels: ['A', 'B', 'C', 'D'], + values: [1, 2, 1, 3] + }]) + .then(function() { + return clickAndCheck([0, 1], { + curveNumber: 0, + expandedIndex: 0, + label: 'D' + }); + }) + .then(function() { + return clickAndCheck([2, 2], { + curveNumber: 0, + expandedIndex: 0, + label: 'A' + }); + }) + .catch(failTest) + .then(done); + }); }); }); });