diff options
Diffstat (limited to 'crosperf/column_chart.py')
-rw-r--r-- | crosperf/column_chart.py | 98 |
1 files changed, 52 insertions, 46 deletions
diff --git a/crosperf/column_chart.py b/crosperf/column_chart.py index 6063421d..7d6bd0dd 100644 --- a/crosperf/column_chart.py +++ b/crosperf/column_chart.py @@ -7,46 +7,46 @@ class ColumnChart(object): - """class to draw column chart.""" - - def __init__(self, title, width, height): - self.title = title - self.chart_div = ''.join(t for t in title if t.isalnum()) - self.width = width - self.height = height - self.columns = [] - self.rows = [] - self.series = [] - - def AddSeries(self, column_name, series_type, color): - for i in range(len(self.columns)): - if column_name == self.columns[i][1]: - self.series.append((i - 1, series_type, color)) - break - - def AddColumn(self, name, column_type): - self.columns.append((column_type, name)) - - def AddRow(self, row): - self.rows.append(row) - - def GetJavascript(self): - res = 'var data = new google.visualization.DataTable();\n' - for column in self.columns: - res += "data.addColumn('%s', '%s');\n" % column - res += 'data.addRows(%s);\n' % len(self.rows) - for row in range(len(self.rows)): - for column in range(len(self.columns)): - val = self.rows[row][column] - if isinstance(val, str): - val = "'%s'" % val - res += 'data.setValue(%s, %s, %s);\n' % (row, column, val) - - series_javascript = '' - for series in self.series: - series_javascript += "%s: {type: '%s', color: '%s'}, " % series - - chart_add_javascript = """ + """class to draw column chart.""" + + def __init__(self, title, width, height): + self.title = title + self.chart_div = "".join(t for t in title if t.isalnum()) + self.width = width + self.height = height + self.columns = [] + self.rows = [] + self.series = [] + + def AddSeries(self, column_name, series_type, color): + for i in range(len(self.columns)): + if column_name == self.columns[i][1]: + self.series.append((i - 1, series_type, color)) + break + + def AddColumn(self, name, column_type): + self.columns.append((column_type, name)) + + def AddRow(self, row): + self.rows.append(row) + + def GetJavascript(self): + res = "var data = new google.visualization.DataTable();\n" + for column in self.columns: + res += "data.addColumn('%s', '%s');\n" % column + res += "data.addRows(%s);\n" % len(self.rows) + for row in range(len(self.rows)): + for column in range(len(self.columns)): + val = self.rows[row][column] + if isinstance(val, str): + val = "'%s'" % val + res += "data.setValue(%s, %s, %s);\n" % (row, column, val) + + series_javascript = "" + for series in self.series: + series_javascript += "%s: {type: '%s', color: '%s'}, " % series + + chart_add_javascript = """ var chart_%s = new google.visualization.ComboChart( document.getElementById('%s')); chart_%s.draw(data, {width: %s, height: %s, title: '%s', legend: 'none', @@ -54,10 +54,16 @@ chart_%s.draw(data, {width: %s, height: %s, title: '%s', legend: 'none', vAxis: {minValue: 0}}) """ - res += chart_add_javascript % (self.chart_div, self.chart_div, - self.chart_div, self.width, self.height, - self.title, series_javascript) - return res + res += chart_add_javascript % ( + self.chart_div, + self.chart_div, + self.chart_div, + self.width, + self.height, + self.title, + series_javascript, + ) + return res - def GetDiv(self): - return "<div id='%s' class='chart'></div>" % self.chart_div + def GetDiv(self): + return "<div id='%s' class='chart'></div>" % self.chart_div |