text: # -*- coding: utf-8 -*-
  # Copyright 2011 The Chromium OS Authors. All rights reserved.
  # Use of this source code is governed by a BSD-style license that can be
  # found in the LICENSE file.
  
  """Module to draw column chart."""
  
  
  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 = """
  var chart_%s = new google.visualization.ComboChart(
    document.getElementById('%s'));
  chart_%s.draw(data, {width: %s, height: %s, title: '%s', legend: 'none',
    seriesType: "bars", lineWidth: 0, pointSize: 5, series: {%s},
    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
  
    def GetDiv(self):
      return "<div id='%s' class='chart'></div>" % self.chart_div
  