Skip to content

Commit c2d8047

Browse files
committed
Make summary grid have multiple levels
1 parent ce84890 commit c2d8047

File tree

2 files changed

+100
-22
lines changed

2 files changed

+100
-22
lines changed

asv/www/asv.css

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,38 @@ nav li.active span.navbar-brand:hover {
125125

126126
/* Summary page */
127127

128-
.benchmark-group > h1 {
129-
text-align: center;
128+
.benchmark-group h1, h2, h3, h4, h5, h6 {
129+
margin: 5px 0;
130+
}
131+
132+
.benchmark-group h2, h3, h4, h5, h6 {
133+
background-color: #ddd;
134+
}
135+
136+
.benchmark-group h1 {
137+
font-weight: bold;
138+
background-color: #ccc;
139+
padding-left: 10px;
140+
}
141+
142+
.benchmark-group h2 {
143+
padding-left: 30px;
144+
}
145+
146+
.benchmark-group h3 {
147+
padding-left: 50px;
148+
}
149+
150+
.benchmark-group h4 {
151+
padding-left: 60px;
152+
}
153+
154+
.benchmark-group h5 {
155+
padding-left: 80px;
156+
}
157+
158+
.benchmark-group h6 {
159+
padding-left: 100px;
130160
}
131161

132162
.benchmark-container {

asv/www/summarygrid.js

Lines changed: 68 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
$(document).ready(function() {
44
var summary_loaded = false;
5+
var MAX_GRID_DEPTH = 3
56

67
/* Callback a function when an element comes in view */
78
function callback_in_view(element, func) {
@@ -18,19 +19,38 @@ $(document).ready(function() {
1819
$(window).on('scroll', handler);
1920
}
2021

21-
function get_benchmarks_by_groups() {
22+
function get_benchmarks_tree() {
2223
var master_json = $.asv.master_json;
23-
var groups = {};
24+
var groups_by_level = {};
25+
var current_object;
26+
2427
$.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]
3051
}
31-
groups[group].push(bm_name);
3252
});
33-
return groups;
53+
return groups_by_level;
3454
}
3555

3656
function benchmark_container(bm) {
@@ -100,7 +120,34 @@ $(document).ready(function() {
100120
});
101121
return container;
102122
}
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+
}
104151
function make_summary() {
105152
var summary_display = $('#summarygrid-display');
106153
var master_json = $.asv.master_json;
@@ -109,17 +156,18 @@ $(document).ready(function() {
109156
if (summary_loaded) {
110157
return;
111158
}
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)
112165

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+
123171
summary_display.append(summary_container);
124172
$(window).trigger('scroll');
125173

0 commit comments

Comments
 (0)