# -*- coding: utf-8 -*- # Copyright 2016 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Text templates used by various parts of results_report.""" import html from string import Template _TabMenuTemplate = Template( """
HTML Text TSV
""" ) def _GetTabMenuHTML(table_name): # N.B. cgi.escape does some very basic HTML escaping. Nothing more. escaped = html.escape(table_name) return _TabMenuTemplate.substitute(table_name=escaped) _ExperimentFileHTML = """
Experiment File
%s
""" def _GetExperimentFileHTML(experiment_file_text): if not experiment_file_text: return "" return _ExperimentFileHTML % ( html.escape(experiment_file_text, quote=False), ) _ResultsSectionHTML = Template( """
$sect_name
$html_table
$text_table
$tsv_table
$tab_menu
""" ) def _GetResultsSectionHTML(print_table, table_name, data): first_word = table_name.strip().split()[0] short_name = first_word.lower() return _ResultsSectionHTML.substitute( sect_name=table_name, html_table=print_table(data, "HTML"), text_table=print_table(data, "PLAIN"), tsv_table=print_table(data, "TSV"), tab_menu=_GetTabMenuHTML(short_name), short_name=short_name, ) _MainHTML = Template( """ $summary_table $perf_html
Charts
$chart_divs
$full_table $experiment_file """ ) # It's a bit ugly that we take some HTML things, and some non-HTML things, but I # need to balance prettiness with time spent making things pretty. def GenerateHTMLPage( perf_table, chart_js, summary_table, print_table, chart_divs, full_table, experiment_file, ): """Generates a crosperf HTML page from the given arguments. print_table is a two-arg function called like: print_table(t, f) t is one of [summary_table, print_table, full_table]; it's the table we want to format. f is one of ['TSV', 'HTML', 'PLAIN']; it's the type of format we want. """ summary_table_html = _GetResultsSectionHTML( print_table, "Summary Table", summary_table ) if perf_table: perf_html = _GetResultsSectionHTML( print_table, "Perf Table", perf_table ) perf_init = "switchTab('perf', 'html')" else: perf_html = "" perf_init = "" full_table_html = _GetResultsSectionHTML( print_table, "Full Table", full_table ) experiment_file_html = _GetExperimentFileHTML(experiment_file) return _MainHTML.substitute( perf_init=perf_init, chart_js=chart_js, summary_table=summary_table_html, perf_html=perf_html, chart_divs=chart_divs, full_table=full_table_html, experiment_file=experiment_file_html, )