9
9
'use strict' ;
10
10
11
11
var Lib = require ( '../../lib' ) ;
12
- var attributes = require ( './attributes' ) ;
13
- var parcatConstants = require ( './constants' ) ;
14
- var colorbarDefaults = require ( '../../components/colorbar/defaults' ) ;
12
+ var hasColorscale = require ( '../../components/colorscale/has_colorscale' ) ;
13
+ var colorscaleDefaults = require ( '../../components/colorscale/defaults' ) ;
15
14
var handleDomainDefaults = require ( '../../plots/domain' ) . defaults ;
15
+ var handleArrayContainerDefaults = require ( '../../plots/array_container_defaults' ) ;
16
16
17
- function markerDefaults ( traceIn , traceOut , defaultColor , layout , coerce ) {
17
+ var attributes = require ( './attributes' ) ;
18
+ var mergeLength = require ( '../parcoords/merge_length' ) ;
18
19
19
- coerce ( 'line.color' , defaultColor ) ;
20
+ function handleLineDefaults ( traceIn , traceOut , defaultColor , layout , coerce ) {
20
21
21
22
if ( traceIn . line ) {
22
- coerce ( 'line.cmin' ) ;
23
- coerce ( 'line.cmax' ) ;
24
- coerce ( 'line.cauto' ) ;
25
- coerce ( 'line.colorscale' ) ;
26
- coerce ( 'line.showscale' ) ;
27
23
coerce ( 'line.shape' ) ;
28
- colorbarDefaults ( traceIn . line , traceOut . line , layout ) ;
29
24
}
30
- }
31
-
32
- function dimensionsDefaults ( traceIn , traceOut ) {
33
- var dimensionsIn = traceIn . dimensions || [ ] ,
34
- dimensionsOut = traceOut . dimensions = [ ] ;
35
25
36
- var dimensionIn , dimensionOut , i ;
37
- var commonLength = Infinity ;
26
+ var lineColor = coerce ( 'line.color' , defaultColor ) ;
27
+ if ( hasColorscale ( traceIn , 'line' ) && Lib . isArrayOrTypedArray ( lineColor ) ) {
28
+ if ( lineColor . length ) {
29
+ coerce ( 'line.colorscale' ) ;
30
+ colorscaleDefaults ( traceIn , traceOut , layout , coerce , { prefix : 'line.' , cLetter : 'c' } ) ;
31
+ return lineColor . length ;
32
+ }
33
+ else {
34
+ traceOut . line . color = defaultColor ;
35
+ }
36
+ }
37
+ return Infinity ;
38
+ }
38
39
40
+ function dimensionDefaults ( dimensionIn , dimensionOut ) {
39
41
function coerce ( attr , dflt ) {
40
42
return Lib . coerce ( dimensionIn , dimensionOut , attributes . dimensions , attr , dflt ) ;
41
43
}
42
44
43
- for ( i = 0 ; i < dimensionsIn . length ; i ++ ) {
44
- dimensionIn = dimensionsIn [ i ] ;
45
- dimensionOut = { } ;
46
-
47
- if ( ! Lib . isPlainObject ( dimensionIn ) ) {
48
- continue ;
49
- }
45
+ var values = coerce ( 'values' ) ;
46
+ var visible = coerce ( 'visible' ) ;
47
+ if ( ! ( values && values . length ) ) {
48
+ visible = dimensionOut . visible = false ;
49
+ }
50
50
51
+ if ( visible ) {
51
52
// Dimension level
52
- coerce ( 'values' ) ;
53
53
coerce ( 'label' ) ;
54
- coerce ( 'displayindex' , i ) ;
54
+ coerce ( 'displayindex' , dimensionOut . _index ) ;
55
55
56
56
// Category level
57
57
coerce ( 'catDisplayInds' ) ;
58
58
coerce ( 'catValues' ) ;
59
59
coerce ( 'catLabels' ) ;
60
-
61
- // Pass through catValues, catorder, and catlabels (validated in calc since this is where unique info is available)
62
-
63
- // pass through line (color)
64
- // Pass through font
65
-
66
- commonLength = Math . min ( commonLength , dimensionOut . values . length ) ;
67
-
68
- // dimensionOut._index = i;
69
- dimensionsOut . push ( dimensionOut ) ;
70
- }
71
-
72
- if ( isFinite ( commonLength ) ) {
73
- for ( i = 0 ; i < dimensionsOut . length ; i ++ ) {
74
- dimensionOut = dimensionsOut [ i ] ;
75
- if ( dimensionOut . values . length > commonLength ) {
76
- dimensionOut . values = dimensionOut . values . slice ( 0 , commonLength ) ;
77
- }
78
- }
79
60
}
80
-
81
- // handle dimension order
82
- // If specified for all dimensions and no collisions or holes keep, otherwise discard
83
-
84
- // Pass through value colors
85
- // Pass through opacity
86
-
87
- // Pass through dimension font
88
- // Pass through category font
89
-
90
- return dimensionsOut ;
91
61
}
92
62
93
63
module . exports = function supplyDefaults ( traceIn , traceOut , defaultColor , layout ) {
@@ -96,11 +66,20 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
96
66
return Lib . coerce ( traceIn , traceOut , attributes , attr , dflt ) ;
97
67
}
98
68
99
- dimensionsDefaults ( traceIn , traceOut ) ;
69
+ var dimensions = handleArrayContainerDefaults ( traceIn , traceOut , {
70
+ name : 'dimensions' ,
71
+ handleItemDefaults : dimensionDefaults
72
+ } ) ;
73
+
74
+ var len = handleLineDefaults ( traceIn , traceOut , defaultColor , layout , coerce ) ;
100
75
101
76
handleDomainDefaults ( traceOut , layout , coerce ) ;
102
77
103
- markerDefaults ( traceIn , traceOut , defaultColor , layout , coerce ) ;
78
+ if ( ! Array . isArray ( dimensions ) || ! dimensions . length ) {
79
+ traceOut . visible = false ;
80
+ }
81
+
82
+ mergeLength ( traceOut , dimensions , 'values' , len ) ;
104
83
105
84
coerce ( 'hovermode' ) ;
106
85
coerce ( 'tooltip' ) ;
0 commit comments