Skip to content

Commit 644c4e3

Browse files
committed
sankey improve attribute coercion
1 parent fe7ab49 commit 644c4e3

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

src/traces/sankey/defaults.js

+28-24
Original file line numberDiff line numberDiff line change
@@ -14,45 +14,49 @@ var Color = require('../../components/color');
1414
var tinycolor = require('tinycolor2');
1515
var handleDomainDefaults = require('../../plots/domain').defaults;
1616
var handleHoverLabelDefaults = require('../../components/fx/hoverlabel_defaults');
17-
var fxAttrs = require('../../components/fx/attributes');
17+
var Template = require('../../plot_api/plot_template');
1818

1919
module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
2020
function coerce(attr, dflt) {
2121
return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);
2222
}
23-
function coerceHoverLabel(type) {
24-
function coerce(attr, dflt) {
25-
return Lib.coerce(traceIn[type], traceOut[type], fxAttrs, attr, dflt);
26-
}
27-
handleHoverLabelDefaults(traceIn[type], traceOut[type], coerce, layout.hoverlabel);
28-
}
2923

30-
coerce('node.label');
31-
coerce('node.pad');
32-
coerce('node.thickness');
33-
coerce('node.line.color');
34-
coerce('node.line.width');
35-
coerce('node.hoverinfo');
36-
coerceHoverLabel('node');
24+
// node attributes
25+
var nodeIn = traceIn.node, nodeOut = Template.newContainer(traceOut, 'node');
26+
function coerceNode(attr, dflt) {
27+
return Lib.coerce(nodeIn, nodeOut, attributes.node, attr, dflt);
28+
}
29+
coerceNode('label');
30+
coerceNode('pad');
31+
coerceNode('thickness');
32+
coerceNode('line.color');
33+
coerceNode('line.width');
34+
coerceNode('hoverinfo');
35+
handleHoverLabelDefaults(nodeIn, nodeOut, coerceNode, layout.hoverlabel);
3736

3837
var colors = layout.colorway;
3938

4039
var defaultNodePalette = function(i) {return colors[i % colors.length];};
4140

42-
coerce('node.color', traceOut.node.label.map(function(d, i) {
41+
coerceNode('color', nodeOut.label.map(function(d, i) {
4342
return Color.addOpacity(defaultNodePalette(i), 0.8);
4443
}));
4544

46-
coerce('link.label');
47-
coerce('link.source');
48-
coerce('link.target');
49-
coerce('link.value');
50-
coerce('link.line.color');
51-
coerce('link.line.width');
52-
coerce('link.hoverinfo');
53-
coerceHoverLabel('link');
45+
// link attributes
46+
var linkIn = traceIn.link, linkOut = Template.newContainer(traceOut, 'link');
47+
function coerceLink(attr, dflt) {
48+
return Lib.coerce(linkIn, linkOut, attributes.link, attr, dflt);
49+
}
50+
coerceLink('label');
51+
coerceLink('source');
52+
coerceLink('target');
53+
coerceLink('value');
54+
coerceLink('line.color');
55+
coerceLink('line.width');
56+
coerceLink('hoverinfo');
57+
handleHoverLabelDefaults(linkIn, linkOut, coerceLink, layout.hoverlabel);
5458

55-
coerce('link.color', traceOut.link.value.map(function() {
59+
coerceLink('color', linkOut.value.map(function() {
5660
return tinycolor(layout.paper_bgcolor).getLuminance() < 0.333 ?
5761
'rgba(255, 255, 255, 0.6)' :
5862
'rgba(0, 0, 0, 0.2)';

0 commit comments

Comments
 (0)