Skip to content

Commit e9f8403

Browse files
committed
honour hoverlabel.namelength when hovertemplate is set
... while making hoverlabel.namelength dflt to -1 when hovertemplate is set
1 parent 2e50941 commit e9f8403

File tree

5 files changed

+38
-13
lines changed

5 files changed

+38
-13
lines changed

src/components/fx/attributes.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ module.exports = {
3838
namelength: {
3939
valType: 'integer',
4040
min: -1,
41+
dflt: 15,
4142
arrayOk: true,
4243
role: 'style',
4344
editType: 'none',
@@ -47,7 +48,8 @@ module.exports = {
4748
'regardless of length. 0-3 shows the first 0-3 characters, and',
4849
'an integer >3 will show the whole name if it is less than that',
4950
'many characters, but if it is longer, will truncate to',
50-
'`namelength - 3` characters and add an ellipsis.'
51+
'`namelength - 3` characters and add an ellipsis.',
52+
'Note that when `hovertemplate` is set, `namelength` defaults to *-1*.'
5153
].join(' ')
5254
},
5355
editType: 'calc'

src/components/fx/defaults.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
1717
return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);
1818
}
1919

20-
handleHoverLabelDefaults(traceIn, traceOut, coerce, layout.hoverlabel);
20+
var opts = Lib.extendFlat({}, layout.hoverlabel);
21+
if(traceOut.hovertemplate) opts.namelength = -1;
22+
23+
handleHoverLabelDefaults(traceIn, traceOut, coerce, opts);
2124
};

src/components/fx/hover.js

+12-7
Original file line numberDiff line numberDiff line change
@@ -933,11 +933,7 @@ function createHoverText(hoverData, opts, gd) {
933933
if(fullLayout.meta) {
934934
d.name = Lib.templateString(d.name, {meta: fullLayout.meta});
935935
}
936-
937-
name = svgTextUtils.plainText(d.name || '', {
938-
len: d.nameLength,
939-
allowedTags: ['br', 'sub', 'sup', 'b', 'i', 'em']
940-
});
936+
name = plainText(d.name, d.nameLength);
941937
}
942938

943939
if(d.zLabel !== undefined) {
@@ -989,8 +985,10 @@ function createHoverText(hoverData, opts, gd) {
989985
);
990986

991987
text = text.replace(EXTRA_STRING_REGEX, function(match, extra) {
992-
name = extra; // Assign name for secondary text label
993-
return ''; // Remove from main text label
988+
// assign name for secondary text label
989+
name = plainText(extra, d.nameLength);
990+
// remove from main text label
991+
return '';
994992
});
995993
}
996994

@@ -1617,3 +1615,10 @@ function spikesChanged(gd, oldspikepoints) {
16171615
) return true;
16181616
return false;
16191617
}
1618+
1619+
function plainText(s, len) {
1620+
return svgTextUtils.plainText(s || '', {
1621+
len: len,
1622+
allowedTags: ['br', 'sub', 'sup', 'b', 'i', 'em']
1623+
});
1624+
}

src/lib/svg_text_utils.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ var COLORMATCH = /(^|;)\s*color:/;
317317
*
318318
* @param {string} _str : input string
319319
* @param {object} opts :
320-
* - maxLen {number} max length of output string
320+
* - len {number} max length of output string
321321
* - allowedTags {array} list of pseudo-html tags to NOT strip
322322
* @return {string}
323323
*/

test/jasmine/tests/hover_label_test.js

+18-3
Original file line numberDiff line numberDiff line change
@@ -805,22 +805,37 @@ describe('hover info', function() {
805805
name: 'trace one'
806806
});
807807
})
808+
.then(function() {
809+
return Plotly.restyle(gd, 'hoverlabel.namelength', 2);
810+
})
811+
.then(function() {
812+
_hover(gd, 250, 50);
813+
assertHoverLabelContent({
814+
nums: '(1,3) -- 2',
815+
name: 'tr'
816+
});
817+
818+
_hover(gd, 250, 300);
819+
assertHoverLabelContent({
820+
nums: '(1,1) -- 5.56',
821+
name: 'tr'
822+
});
823+
})
808824
.then(function() {
809825
var nl = [[0, 0, 0], [0, 0, 0]];
810826
return Plotly.restyle(gd, 'hoverlabel.namelength', [nl, nl]);
811827
})
812828
.then(function() {
813-
// hoverlabel.namelength has no effect when <extra></extra> is set
814829
_hover(gd, 250, 50);
815830
assertHoverLabelContent({
816831
nums: '(1,3) -- 2',
817-
name: 'trace two'
832+
name: ''
818833
});
819834

820835
_hover(gd, 250, 300);
821836
assertHoverLabelContent({
822837
nums: '(1,1) -- 5.56',
823-
name: 'trace one'
838+
name: ''
824839
});
825840
})
826841
.then(function() {

0 commit comments

Comments
 (0)