8
8
9
9
'use strict' ;
10
10
11
- var min = 0.2 ;
12
-
11
+ var MIN = 0.1 ; // Note: often we don't want the data cube to be disappeared
13
12
var scales = {
13
+ 'uniform' : [
14
+ [ 0 , 1 ] , [ 1 , 1 ]
15
+ ] ,
14
16
'max' : [
15
- [ 0 , min ] , [ 1 , 1 ]
17
+ [ 0 , MIN ] , [ 1 , 1 ]
16
18
] ,
17
-
18
19
'min' : [
19
- [ 0 , 1 ] , [ 1 , min ]
20
+ [ 0 , 1 ] , [ 1 , MIN ]
20
21
] ,
21
-
22
- 'extremes' : createWave ( 1 , min )
22
+ 'extremes' : createWave ( 1 , MIN )
23
23
} ;
24
24
25
+ function createWave ( n , minOpacity ) {
26
+ var arr = [ ] ;
27
+ var steps = 32 ; // Max: 256
28
+ for ( var i = 0 ; i < steps ; i ++ ) {
29
+ var u = i / ( steps - 1 ) ;
30
+ var v = minOpacity + ( 1 - minOpacity ) * ( 1 - Math . pow ( Math . sin ( n * u * Math . PI ) , 2 ) ) ;
31
+ arr . push ( [
32
+ u ,
33
+ Math . max ( 1 , Math . min ( 0 , v ) )
34
+ ] ) ;
35
+ }
36
+ return arr ;
37
+ }
25
38
var defaultScale = scales . uniform ;
26
-
27
- var paletteStr = Object . keys ( scales ) ;
39
+ var scaleKeys = Object . keys ( scales ) ;
28
40
29
41
/**
30
42
* Make opacityscale attribute declarations for
@@ -67,7 +79,7 @@ function attributes(context, opts) {
67
79
' `[[0, 1], [0.5, 0.2], [1, 1]]` means that higher/lower values would have' ,
68
80
' higher opacity values and those in the middle would be more transparent' ,
69
81
' Alternatively, `opacityscale` may be a palette name string' ,
70
- ' of the following list: ' + paletteStr + '.'
82
+ ' of the following list: ' + scaleKeys + '.'
71
83
] . join ( '' )
72
84
} ;
73
85
@@ -80,27 +92,13 @@ function defaults(traceIn, traceOut, layout, coerce, opts) {
80
92
coerce ( prefix + 'opacityscale' ) ;
81
93
}
82
94
83
- function createWave ( n , minOpacity ) {
84
- var arr = [ ] ;
85
- var steps = 32 ; // Max: 256
86
- for ( var i = 0 ; i < steps ; i ++ ) {
87
- var u = i / ( steps - 1 ) ;
88
- var v = minOpacity + ( 1 - minOpacity ) * ( 1 - Math . pow ( Math . sin ( n * u * Math . PI ) , 2 ) ) ;
89
- arr . push ( [
90
- u ,
91
- Math . max ( 1 , Math . min ( 0 , v ) )
92
- ] ) ;
93
- }
94
- return arr ;
95
- }
96
-
97
95
function getScale ( scl , dflt ) {
98
96
if ( ! dflt ) dflt = defaultScale ;
99
97
if ( ! scl ) return dflt ;
100
98
101
99
function parseScale ( ) {
102
100
try {
103
- scl = palette [ scl ] || JSON . parse ( scl ) ;
101
+ scl = scales [ scl ] || JSON . parse ( scl ) ;
104
102
} catch ( e ) {
105
103
scl = dflt ;
106
104
}
@@ -138,9 +136,15 @@ function isValidScaleArray(scl) {
138
136
return true ;
139
137
}
140
138
139
+ function isValidScale ( scl ) {
140
+ if ( scales [ scl ] !== undefined ) return true ;
141
+ else return isValidScaleArray ( scl ) ;
142
+ }
143
+
141
144
module . exports = {
142
145
attributes : attributes ,
143
146
defaults : defaults ,
144
147
scales : scales ,
145
- get : getScale
148
+ get : getScale ,
149
+ isValid : isValidScale
146
150
} ;
0 commit comments