88
99'use strict' ;
1010
11- var min = 0.2 ;
12-
11+ var MIN = 0.1 ; // Note: often we don't want the data cube to be disappeared
1312var scales = {
13+ 'uniform' : [
14+ [ 0 , 1 ] , [ 1 , 1 ]
15+ ] ,
1416 'max' : [
15- [ 0 , min ] , [ 1 , 1 ]
17+ [ 0 , MIN ] , [ 1 , 1 ]
1618 ] ,
17-
1819 'min' : [
19- [ 0 , 1 ] , [ 1 , min ]
20+ [ 0 , 1 ] , [ 1 , MIN ]
2021 ] ,
21-
22- 'extremes' : createWave ( 1 , min )
22+ 'extremes' : createWave ( 1 , MIN )
2323} ;
2424
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+ }
2538var defaultScale = scales . uniform ;
26-
27- var paletteStr = Object . keys ( scales ) ;
39+ var scaleKeys = Object . keys ( scales ) ;
2840
2941/**
3042 * Make opacityscale attribute declarations for
@@ -67,7 +79,7 @@ function attributes(context, opts) {
6779 ' `[[0, 1], [0.5, 0.2], [1, 1]]` means that higher/lower values would have' ,
6880 ' higher opacity values and those in the middle would be more transparent' ,
6981 ' Alternatively, `opacityscale` may be a palette name string' ,
70- ' of the following list: ' + paletteStr + '.'
82+ ' of the following list: ' + scaleKeys + '.'
7183 ] . join ( '' )
7284 } ;
7385
@@ -80,27 +92,13 @@ function defaults(traceIn, traceOut, layout, coerce, opts) {
8092 coerce ( prefix + 'opacityscale' ) ;
8193}
8294
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-
9795function getScale ( scl , dflt ) {
9896 if ( ! dflt ) dflt = defaultScale ;
9997 if ( ! scl ) return dflt ;
10098
10199 function parseScale ( ) {
102100 try {
103- scl = palette [ scl ] || JSON . parse ( scl ) ;
101+ scl = scales [ scl ] || JSON . parse ( scl ) ;
104102 } catch ( e ) {
105103 scl = dflt ;
106104 }
@@ -138,9 +136,15 @@ function isValidScaleArray(scl) {
138136 return true ;
139137}
140138
139+ function isValidScale ( scl ) {
140+ if ( scales [ scl ] !== undefined ) return true ;
141+ else return isValidScaleArray ( scl ) ;
142+ }
143+
141144module . exports = {
142145 attributes : attributes ,
143146 defaults : defaults ,
144147 scales : scales ,
145- get : getScale
148+ get : getScale ,
149+ isValid : isValidScale
146150} ;
0 commit comments