-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
/
Copy pathattributes.js
130 lines (117 loc) · 4.37 KB
/
attributes.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
'use strict';
var barAttrs = require('../bar/attributes');
var lineAttrs = require('../scatter/attributes').line;
var baseAttrs = require('../../plots/attributes');
var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').axisHoverFormat;
var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplateAttrs;
var texttemplateAttrs = require('../../plots/template_attributes').texttemplateAttrs;
var constants = require('./constants');
var extendFlat = require('../../lib/extend').extendFlat;
var Color = require('../../components/color');
module.exports = {
x: barAttrs.x,
x0: barAttrs.x0,
dx: barAttrs.dx,
y: barAttrs.y,
y0: barAttrs.y0,
dy: barAttrs.dy,
xperiod: barAttrs.xperiod,
yperiod: barAttrs.yperiod,
xperiod0: barAttrs.xperiod0,
yperiod0: barAttrs.yperiod0,
xperiodalignment: barAttrs.xperiodalignment,
yperiodalignment: barAttrs.yperiodalignment,
xhoverformat: axisHoverFormat('x'),
yhoverformat: axisHoverFormat('y'),
hovertext: barAttrs.hovertext,
hovertemplate: hovertemplateAttrs({}, {
keys: constants.eventDataKeys
}),
hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {
flags: ['name', 'x', 'y', 'text', 'percent initial', 'percent previous', 'percent total']
}),
textinfo: {
valType: 'flaglist',
flags: ['label', 'text', 'percent initial', 'percent previous', 'percent total', 'value'],
extras: ['none'],
editType: 'plot',
arrayOk: false,
description: [
'Determines which trace information appear on the graph.',
'In the case of having multiple funnels, percentages & totals',
'are computed separately (per trace).'
].join(' ')
},
// TODO: incorporate `label` and `value` in the eventData
texttemplate: texttemplateAttrs({editType: 'plot'}, {
keys: constants.eventDataKeys.concat(['label', 'value'])
}),
text: barAttrs.text,
textposition: barAttrs.textposition,
insidetextanchor: extendFlat({}, barAttrs.insidetextanchor, {dflt: 'middle'}),
textangle: extendFlat({}, barAttrs.textangle, {dflt: 0}),
textfont: barAttrs.textfont,
insidetextfont: barAttrs.insidetextfont,
outsidetextfont: barAttrs.outsidetextfont,
constraintext: barAttrs.constraintext,
cliponaxis: barAttrs.cliponaxis,
orientation: extendFlat({}, barAttrs.orientation, {
description: [
'Sets the orientation of the funnels.',
'With *v* (*h*), the value of the each bar spans',
'along the vertical (horizontal).',
'By default funnels are tend to be oriented horizontally;',
'unless only *y* array is presented or orientation is set to *v*.',
'Also regarding graphs including only \'horizontal\' funnels,',
'*autorange* on the *y-axis* are set to *reversed*.'
].join(' ')
}),
offset: extendFlat({}, barAttrs.offset, {arrayOk: false}),
width: extendFlat({}, barAttrs.width, {arrayOk: false}),
marker: funnelMarker(),
connector: {
fillcolor: {
valType: 'color',
editType: 'style',
description: [
'Sets the fill color.'
].join(' ')
},
line: {
color: extendFlat({}, lineAttrs.color, {dflt: Color.defaultLine}),
width: extendFlat({}, lineAttrs.width, {
dflt: 0,
editType: 'plot',
}),
dash: lineAttrs.dash,
editType: 'style'
},
visible: {
valType: 'boolean',
dflt: true,
editType: 'plot',
description: [
'Determines if connector regions and lines are drawn.'
].join(' ')
},
editType: 'plot'
},
offsetgroup: barAttrs.offsetgroup,
alignmentgroup: barAttrs.alignmentgroup,
zindex: {
valType: 'integer',
dflt: 0,
editType: 'calc',
description: [
'Sets the layer on which this trace is displayed, relative to ',
'other traces on the same axes. Traces with higher `zindex` ',
'appear in front of those with lower `zindex`.'
].join(' ')
}
};
function funnelMarker() {
var marker = extendFlat({}, barAttrs.marker);
delete marker.pattern;
delete marker.cornerradius;
return marker;
}