11
11
12
12
var d3 = require ( 'd3' ) ;
13
13
14
- function flattenUniqueSort ( axisLetter , sortFunction , data ) {
14
+ // flattenUnique :: String -> [[String]] -> Object
15
+ function flattenUnique ( axisLetter , data ) {
15
16
var traceLines = data . map ( function ( d ) { return d [ axisLetter ] ; } ) ;
16
17
var categoryMap = { } ; // hashmap is O(1);
17
18
var i , j , tracePoints , category ;
@@ -24,8 +25,12 @@ function flattenUniqueSort(axisLetter, sortFunction, data) {
24
25
}
25
26
}
26
27
}
27
- return Object . keys ( categoryMap )
28
- . sort ( sortFunction ) ;
28
+ return categoryMap ;
29
+ }
30
+
31
+ // flattenUniqueSort :: String -> Function -> [[String]] -> [String]
32
+ function flattenUniqueSort ( axisLetter , sortFunction , data ) {
33
+ return Object . keys ( flattenUnique ( axisLetter , data ) ) . sort ( sortFunction ) ;
29
34
}
30
35
31
36
@@ -37,14 +42,18 @@ function flattenUniqueSort(axisLetter, sortFunction, data) {
37
42
* If categorymode is 'category ascending' or 'category descending', the result is an array of ascending or descending
38
43
* order of the unique categories encountered in the data for specified axisLetter.
39
44
*
45
+ * See cartesian/layout_attributes.js for the definition of categorymode and categorylist
46
+ *
40
47
*/
41
48
49
+ // orderedCategories :: String -> String -> [String] -> [[String]] -> [String]
42
50
module . exports = function orderedCategories ( axisLetter , categorymode , categorylist , data ) {
43
51
44
52
switch ( categorymode ) {
45
- case 'array' : return ( Array . isArray ( categorylist ) ? categorylist : [ ] ) . slice ( ) ;
53
+ case 'array' : return Array . isArray ( categorylist ) ? categorylist : [ ] ;
46
54
case 'category ascending' : return flattenUniqueSort ( axisLetter , d3 . ascending , data ) ;
47
55
case 'category descending' : return flattenUniqueSort ( axisLetter , d3 . descending , data ) ;
48
- default : return [ ] . slice ( ) ;
56
+ case 'trace' : return [ ] ;
57
+ default : return [ ] ;
49
58
}
50
59
} ;
0 commit comments