Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0cde808

Browse files
committed
Refactor handleClick() signature to be consistent with handleTitleClick
1 parent fdf1d65 commit 0cde808

File tree

2 files changed

+17
-21
lines changed

2 files changed

+17
-21
lines changed

src/components/legend/draw.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,14 @@ function getTraceWidth(d, legendObj, textGap) {
520520
}
521521

522522
function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) {
523+
var fullLayout = gd._fullLayout;
523524
var trace = legendItem.data()[0][0].trace;
525+
var legendId = trace.legend || 'legend';
526+
var legendObj = fullLayout[legendId];
527+
528+
var itemClick = legendObj.itemclick;
529+
var itemDoubleClick = legendObj.itemdoubleclick;
530+
524531
var evtData = {
525532
event: evt,
526533
node: legendItem.node(),
@@ -531,7 +538,7 @@ function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) {
531538
frames: gd._transitionData._frames,
532539
config: gd._context,
533540
fullData: gd._fullData,
534-
fullLayout: gd._fullLayout
541+
fullLayout: fullLayout
535542
};
536543

537544
if(trace._group) {
@@ -545,15 +552,17 @@ function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) {
545552
if(clickVal === false) return;
546553
legend._clickTimeout = setTimeout(function() {
547554
if(!gd._fullLayout) return;
548-
handleClick(legendItem, gd, numClicks);
555+
if(itemClick) handleClick(legendItem, gd, legendObj, itemClick);
549556
}, gd._context.doubleClickDelay);
550557
} else if(numClicks === 2) {
551558
if(legend._clickTimeout) clearTimeout(legend._clickTimeout);
552559
gd._legendMouseDownTime = 0;
553560

554561
var dblClickVal = Events.triggerHandler(gd, 'plotly_legenddoubleclick', evtData);
555562
// Activate default double click behaviour only when both single click and double click values are not false
556-
if(dblClickVal !== false && clickVal !== false) handleClick(legendItem, gd, numClicks);
563+
if(dblClickVal !== false && clickVal !== false && itemDoubleClick) {
564+
handleClick(legendItem, gd, legendObj, itemDoubleClick);
565+
}
557566
}
558567
}
559568

@@ -1136,4 +1145,3 @@ function getYanchor(legendObj) {
11361145
Lib.isMiddleAnchor(legendObj) ? 'middle' :
11371146
'top';
11381147
}
1139-

src/components/legend/handle_click.js

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,24 @@ var helpers = require('./helpers');
77

88
var SHOWISOLATETIP = true;
99

10-
exports.handleClick = function handleClick(g, gd, numClicks) {
10+
exports.handleClick = function handleClick(g, gd, legendObj, mode) {
1111
var fullLayout = gd._fullLayout;
1212

1313
if(gd._dragged || gd._editing) return;
1414

15-
16-
const legendItem = g.data()[0][0];
15+
var legendItem = g.data()[0][0];
1716
if(legendItem.groupTitle && legendItem.noClick) return;
1817

19-
const legendId = legendItem.trace.legend || 'legend';
20-
const legendObj = fullLayout[legendId];
21-
22-
const itemClick = legendObj.itemclick;
23-
const itemDoubleClick = legendObj.itemdoubleclick;
24-
const groupClick = legendObj.groupclick;
18+
var groupClick = legendObj.groupclick;
2519

26-
if(numClicks === 1 && itemClick === 'toggle' && itemDoubleClick === 'toggleothers' &&
20+
// Show isolate tip on first single click when default behavior is active
21+
if(mode === 'toggle' && legendObj.itemdoubleclick === 'toggleothers' &&
2722
SHOWISOLATETIP && gd.data && gd._context.showTips
2823
) {
2924
Lib.notifier(Lib._(gd, 'Double-click on legend to isolate one trace'), 'long');
3025
SHOWISOLATETIP = false;
31-
} else {
32-
SHOWISOLATETIP = false;
3326
}
3427

35-
var mode;
36-
if(numClicks === 1) mode = itemClick;
37-
else if(numClicks === 2) mode = itemDoubleClick;
38-
if(!mode) return;
39-
4028
var toggleGroup = groupClick === 'togglegroup';
4129

4230
var hiddenSlices = fullLayout.hiddenlabels ?

0 commit comments

Comments
 (0)