-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
/
Copy pathattributes.js
121 lines (108 loc) · 4.06 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
'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: barAttrs.zindex
};
function funnelMarker() {
var marker = extendFlat({}, barAttrs.marker);
delete marker.pattern;
delete marker.cornerradius;
return marker;
}