@@ -13,7 +13,6 @@ var calcColorscale = require('../../components/colorscale/calc');
13
13
var isNumeric = require ( 'fast-isnumeric' ) ;
14
14
var d3 = require ( 'd3' ) ;
15
15
16
- // todo consider unifying common parts with e.g. `scatter`
17
16
function colorScale ( trace ) {
18
17
if ( hasColorscale ( trace , 'line' ) ) {
19
18
calcColorscale ( trace , trace . line . color , 'line' , 'c' ) ;
@@ -44,11 +43,20 @@ module.exports = function calc(gd, trace) {
44
43
} ) ;
45
44
}
46
45
47
- // todo should it be in defaults.js?
48
46
colorScale ( trace , trace . line . color , 'line' , 'c' ) ;
49
47
50
- var colorStops = trace . line . colorscale . map ( function ( d ) { return d [ 0 ] ; } ) ;
51
- var colorStrings = trace . line . colorscale . map ( function ( d ) { return d [ 1 ] ; } ) ;
48
+ var cs = ! ! trace . line . colorscale ;
49
+
50
+ var cscale = cs ? trace . line . colorscale : [ [ 0 , trace . line . color ] , [ 1 , trace . line . color ] ] ;
51
+ var cmin = trace . line . cmin === void ( 0 ) ? 0 : trace . line . cmin ;
52
+ var cmax = trace . line . cmax === void ( 0 ) ? 1 : trace . line . cmax ;
53
+ var color = cs ? trace . line . color : Array . apply ( 0 , Array ( trace . dimensions . reduce ( function ( p , n ) { return Math . max ( p , n . values . length ) ; } , 0 ) ) ) . map ( function ( ) { return 0.5 ; } ) ;
54
+
55
+ trace . line . color = color ;
56
+ trace . line . colorscale = cscale ;
57
+
58
+ var colorStops = cscale . map ( function ( d ) { return d [ 0 ] ; } ) ;
59
+ var colorStrings = cscale . map ( function ( d ) { return d [ 1 ] ; } ) ;
52
60
var colorTuples = colorStrings . map ( function ( c ) { return d3 . rgb ( c ) ; } ) ;
53
61
var prop = function ( n ) { return function ( o ) { return o [ n ] ; } ; } ;
54
62
@@ -62,10 +70,10 @@ module.exports = function calc(gd, trace) {
62
70
} ) ;
63
71
64
72
var colorToUnitScale = d3 . scale . linear ( )
65
- . domain ( d3 . extent ( trace . line . color ) ) ;
73
+ . domain ( d3 . extent ( color ) ) ;
66
74
67
- var unitMin = colorToUnitScale ( trace . line . cmin ) ;
68
- var unitMax = colorToUnitScale ( trace . line . cmax ) ;
75
+ var unitMin = colorToUnitScale ( cmin ) ;
76
+ var unitMax = colorToUnitScale ( cmax ) ;
69
77
70
78
var cScale = d3 . scale . linear ( )
71
79
. clamp ( true )
0 commit comments