-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
/
Copy pathattributes.js
143 lines (138 loc) · 4.32 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
131
132
133
134
135
136
137
138
139
140
141
142
143
/**
* Copyright 2012-2020, Plotly, Inc.
* All rights reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
'use strict';
var baseAttrs = require('../../plots/attributes');
var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplateAttrs;
var extendFlat = require('../../lib/extend').extendFlat;
var colormodel = require('./constants').colormodel;
var cm = ['rgb', 'rgba', 'rgba256', 'hsl', 'hsla'];
var zminDesc = [];
var zmaxDesc = [];
for(var i = 0; i < cm.length; i++) {
var cr = colormodel[cm[i]];
zminDesc.push('For the `' + cm[i] + '` colormodel, it is [' + (cr.zminDflt || cr.min).join(', ') + '].');
zmaxDesc.push('For the `' + cm[i] + '` colormodel, it is [' + (cr.zmaxDflt || cr.max).join(', ') + '].');
}
module.exports = extendFlat({
source: {
valType: 'string',
role: 'info',
editType: 'calc',
description: [
'Specifies the data URI of the image to be visualized.',
'The URI consists of "data:image/[<media subtype>][;base64],<data>"'
].join(' ')
},
z: {
valType: 'data_array',
role: 'info',
editType: 'calc',
description: [
'A 2-dimensional array in which each element is an array of 3 or 4 numbers representing a color.',
].join(' ')
},
colormodel: {
valType: 'enumerated',
values: cm,
role: 'info',
editType: 'calc',
description: [
'Color model used to map the numerical color components described in `z` into colors.',
'If `source` is specified, this attribute will be set to `rgba256`',
'otherwise it defaults to `rgb`.'
].join(' ')
},
interpolate: {
valType: 'boolean',
dflt: false,
role: 'info',
editType: 'plot',
description: [
'Whether to render the image with bilinear interpolation.',
'Default false (nearest neighbor interpolation).'
].join(' ')
},
zmin: {
valType: 'info_array',
items: [
{valType: 'number', editType: 'calc'},
{valType: 'number', editType: 'calc'},
{valType: 'number', editType: 'calc'},
{valType: 'number', editType: 'calc'}
],
role: 'info',
editType: 'calc',
description: [
'Array defining the lower bound for each color component.',
'Note that the default value will depend on the colormodel.',
zminDesc.join(' ')
].join(' ')
},
zmax: {
valType: 'info_array',
items: [
{valType: 'number', editType: 'calc'},
{valType: 'number', editType: 'calc'},
{valType: 'number', editType: 'calc'},
{valType: 'number', editType: 'calc'}
],
role: 'info',
editType: 'calc',
description: [
'Array defining the higher bound for each color component.',
'Note that the default value will depend on the colormodel.',
zmaxDesc.join(' ')
].join(' ')
},
x0: {
valType: 'any',
dflt: 0,
role: 'info',
editType: 'calc+clearAxisTypes',
description: 'Set the image\'s x position.'
},
y0: {
valType: 'any',
dflt: 0,
role: 'info',
editType: 'calc+clearAxisTypes',
description: 'Set the image\'s y position.'
},
dx: {
valType: 'number',
dflt: 1,
role: 'info',
editType: 'calc',
description: 'Set the pixel\'s horizontal size.'
},
dy: {
valType: 'number',
dflt: 1,
role: 'info',
editType: 'calc',
description: 'Set the pixel\'s vertical size'
},
text: {
valType: 'data_array',
editType: 'plot',
description: 'Sets the text elements associated with each z value.'
},
hovertext: {
valType: 'data_array',
editType: 'plot',
description: 'Same as `text`.'
},
hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {
flags: ['x', 'y', 'z', 'color', 'name', 'text'],
dflt: 'x+y+z+text+name'
}),
hovertemplate: hovertemplateAttrs({}, {
keys: ['z', 'color', 'colormodel']
}),
transforms: undefined
});