'use strict'; $(document).ready(function() { var summary_loaded = false; /* Callback a function when an element comes in view */ function callback_in_view(element, func) { function handler(evt) { var visible = ( $('#summarygrid-display').css('display') != 'none' && (element.offset().top <= $(window).height() + $(window).scrollTop()) && (element.offset().top + element.height() >= $(window).scrollTop())); if (visible) { func(); $(window).off('scroll', handler); } } $(window).on('scroll', handler); } function get_benchmarks_by_groups() { var main_json = $.asv.main_json; var groups = {}; $.each(main_json.benchmarks, function(bm_name, bm) { var i = bm_name.indexOf('.'); var group = bm_name.slice(0, i); var name = bm_name.slice(i + 1); if (groups[group] === undefined) { groups[group] = []; } groups[group].push(bm_name); }); return groups; } function benchmark_container(bm) { var container = $( ''); var plot_div = $( '
'); var display_name = bm.pretty_name || bm.name.slice(bm.name.indexOf('.') + 1); var name = $('
' + display_name + '
'); name.tooltip({ title: bm.name, html: true, placement: 'top', container: 'body', animation: false }); plot_div.tooltip({ title: bm.code, html: true, placement: 'bottom', container: 'body', animation: false }); container.append(name); container.append(plot_div); callback_in_view(plot_div, function() { $.asv.load_graph_data( 'graphs/summary/' + bm.name + '.json' ).done(function(data) { var options = { colors: $.asv.colors, series: { lines: { show: true, lineWidth: 2 }, shadowSize: 0 }, grid: { borderWidth: 1, margin: 0, labelMargin: 0, axisMargin: 0, minBorderMargin: 0 }, xaxis: { ticks: [], }, yaxis: { ticks: [], min: 0 }, legend: { show: false } }; var plot = $.plot( plot_div, [{data: data}], options); }).fail(function() { // TODO: Handle failure }); }); return container; } function make_summary() { var summary_display = $('#summarygrid-display'); var main_json = $.asv.main_json; var summary_container = $('
'); if (summary_loaded) { return; } $.each(get_benchmarks_by_groups(), function(group, benchmarks) { var group_container = $('
') group_container.attr('id', 'group-' + group) group_container.append($('

' + group + '

')); summary_display.append(group_container); $.each(benchmarks, function(i, bm_name) { var bm = $.asv.main_json.benchmarks[bm_name]; group_container.append(benchmark_container(bm)); }); }); summary_display.append(summary_container); $(window).trigger('scroll'); summary_loaded = true; } $.asv.register_page('', function(params) { $('#summarygrid-display').show(); $("#title").text("All benchmarks"); $('.tooltip').remove(); make_summary(); }); });