2
2
3
3
$ ( document ) . ready ( function ( ) {
4
4
var summary_loaded = false ;
5
+ var MAX_GRID_DEPTH = 3
5
6
6
7
/* Callback a function when an element comes in view */
7
8
function callback_in_view ( element , func ) {
@@ -18,19 +19,38 @@ $(document).ready(function() {
18
19
$ ( window ) . on ( 'scroll' , handler ) ;
19
20
}
20
21
21
- function get_benchmarks_by_groups ( ) {
22
+ function get_benchmarks_tree ( ) {
22
23
var master_json = $ . asv . master_json ;
23
- var groups = { } ;
24
+ var groups_by_level = { } ;
25
+ var current_object ;
26
+
24
27
$ . each ( master_json . benchmarks , function ( bm_name , bm ) {
25
- var i = bm_name . indexOf ( '.' ) ;
26
- var group = bm_name . slice ( 0 , i ) ;
27
- var name = bm_name . slice ( i + 1 ) ;
28
- if ( groups [ group ] === undefined ) {
29
- groups [ group ] = [ ] ;
28
+ current_object = groups_by_level ;
29
+ for ( var level = 0 ; level < MAX_GRID_DEPTH ; level ++ ) {
30
+ var i = bm_name . indexOf ( '.' ) ;
31
+ var nested = bm_name . slice ( 0 , i ) ;
32
+ bm_name = bm_name . slice ( i + 1 )
33
+ i = bm_name . indexOf ( '.' ) ;
34
+ if ( i === - 1 ) {
35
+ if ( ! Array . isArray ( current_object [ nested ] ) ) {
36
+ current_object [ nested ] = [ ]
37
+ }
38
+ current_object [ nested ] . push ( bm_name ) ;
39
+ break ;
40
+ }
41
+ if ( current_object [ nested ] === undefined ) {
42
+ current_object [ nested ] = { } ;
43
+ if ( level === MAX_GRID_DEPTH - 1 ) {
44
+ current_object [ nested ] = [ ]
45
+ }
46
+ }
47
+ if ( level === MAX_GRID_DEPTH - 1 ) {
48
+ current_object [ nested ] . push ( bm_name ) ;
49
+ }
50
+ current_object = current_object [ nested ]
30
51
}
31
- groups [ group ] . push ( bm_name ) ;
32
52
} ) ;
33
- return groups ;
53
+ return groups_by_level ;
34
54
}
35
55
36
56
function benchmark_container ( bm ) {
@@ -100,7 +120,34 @@ $(document).ready(function() {
100
120
} ) ;
101
121
return container ;
102
122
}
103
-
123
+
124
+ function benchmarks_tree_to_html ( current_object , parent_container , bm_name , level ) {
125
+ if ( Array . isArray ( current_object ) ) {
126
+ $ . each ( current_object , function ( i , bm_suffix ) {
127
+ var bm = $ . asv . master_json . benchmarks [ bm_name + '.' + bm_suffix ] ;
128
+ if ( bm !== undefined ) {
129
+ parent_container . append ( benchmark_container ( bm ) ) ;
130
+ }
131
+ } )
132
+ }
133
+ else {
134
+ for ( var nested in current_object ) {
135
+ if ( current_object . hasOwnProperty ( nested ) ) {
136
+ var new_bm_name = bm_name + '.' + nested ;
137
+ var nested_container = $ ( '<div class="benchmark-group-nested"/>' ) ;
138
+ nested_container . append ( $ ( '<h' + level + '>' + nested + '</h' + level + '>' ) ) ;
139
+ var inner = benchmarks_tree_to_html (
140
+ current_object [ nested ] ,
141
+ nested_container ,
142
+ new_bm_name ,
143
+ level + 1
144
+ )
145
+ nested_container . append ( inner ) ;
146
+ parent_container . append ( nested_container ) ;
147
+ }
148
+ }
149
+ }
150
+ }
104
151
function make_summary ( ) {
105
152
var summary_display = $ ( '#summarygrid-display' ) ;
106
153
var master_json = $ . asv . master_json ;
@@ -109,17 +156,18 @@ $(document).ready(function() {
109
156
if ( summary_loaded ) {
110
157
return ;
111
158
}
159
+ var tree = get_benchmarks_tree ( ) ;
160
+ for ( var key in tree ) {
161
+ if ( tree . hasOwnProperty ( key ) ) {
162
+ var group_container = $ ( '<div class="benchmark-group"/>' )
163
+ group_container . append ( $ ( '<h1>' + key + '</h1>' ) ) ;
164
+ benchmarks_tree_to_html ( tree [ key ] , group_container , key , 2 )
112
165
113
- $ . each ( get_benchmarks_by_groups ( ) , function ( group , benchmarks ) {
114
- var group_container = $ ( '<div class="benchmark-group"/>' )
115
- group_container . append ( $ ( '<h1>' + group + '</h1>' ) ) ;
116
- summary_display . append ( group_container ) ;
117
- $ . each ( benchmarks , function ( i , bm_name ) {
118
- var bm = $ . asv . master_json . benchmarks [ bm_name ] ;
119
- group_container . append ( benchmark_container ( bm ) ) ;
120
- } ) ;
121
- } ) ;
122
-
166
+ summary_display . append ( group_container ) ;
167
+ }
168
+
169
+ }
170
+
123
171
summary_display . append ( summary_container ) ;
124
172
$ ( window ) . trigger ( 'scroll' ) ;
125
173
0 commit comments