11
11
12
12
var d3 = require ( 'd3' ) ;
13
13
14
- function flattenUniqueSort ( axisLetter , categorymode , data ) {
14
+ function flattenUniqueSort ( axisLetter , sortFunction , data ) {
15
15
var traceLines = data . map ( function ( d ) { return d [ axisLetter ] ; } ) ;
16
16
var categoryMap = { } ; // hashmap is O(1);
17
17
var i , j , tracePoints , category ;
@@ -25,11 +25,7 @@ function flattenUniqueSort(axisLetter, categorymode, data) {
25
25
}
26
26
}
27
27
return Object . keys ( categoryMap )
28
- . sort ( ( {
29
- 'category ascending' : d3 . ascending ,
30
- 'category descending' : d3 . descending
31
- } ) [ categorymode ] ) ;
32
-
28
+ . sort ( sortFunction ) ;
33
29
}
34
30
35
31
@@ -45,12 +41,10 @@ function flattenUniqueSort(axisLetter, categorymode, data) {
45
41
46
42
module . exports = function orderedCategories ( axisLetter , categorymode , categorylist , data ) {
47
43
48
- if ( categorymode === 'array' ) {
49
- // just return a copy of the specified array, if any
50
- return ( Array . isArray ( categorylist ) ? categorylist : [ ] ) . slice ( ) ;
51
- } else if ( [ 'category ascending' , 'category descending' ] . indexOf ( categorymode ) === - 1 ) {
52
- return [ ] . slice ( ) ;
53
- } else {
54
- return flattenUniqueSort ( axisLetter , categorymode , data ) ;
44
+ switch ( categorymode ) {
45
+ case 'array' : return ( Array . isArray ( categorylist ) ? categorylist : [ ] ) . slice ( ) ;
46
+ case 'category ascending' : return flattenUniqueSort ( axisLetter , d3 . ascending , data ) ;
47
+ case 'category descending' : return flattenUniqueSort ( axisLetter , d3 . descending , data ) ;
48
+ default : return [ ] . slice ( ) ;
55
49
}
56
50
} ;
0 commit comments