class PiCharts::Bar

Public Instance Methods

add_dataset(args={}) click to toggle source
# File lib/pi_charts/bar_chart.rb, line 39
def add_dataset(args={})
  if args.keys.empty?
    raise "need to specify dataset"
  end
  label = args[:label]
  data  = args[:data]
  color = args[:color] || random_color
  index = dataset_index(label)
  if index
    if data.kind_of?(Array)
      data.each { |d| @config.data[:data][:datasets][index][:data] << d }
    else
      @config.data[:data][:datasets][index][:data] << data
    end
  else
    dataset = {}
    dataset[:label] = label
    dataset[:borderColor] = color 
    dataset[:backgroundColor] = color 
    dataset[:data]  = []
    if data.kind_of?(Array)
      data.each { |d| dataset[:data] << d }
    else
      dataset[:data] << data
    end
    @config.data[:data][:datasets] << dataset
  end 
  true
end
add_labels(labels) click to toggle source
# File lib/pi_charts/bar_chart.rb, line 5
def add_labels(labels)
  @config.data[:data][:labels] = labels
end
border(args={}) click to toggle source
# File lib/pi_charts/bar_chart.rb, line 69
def border(args={}) 
  if args.keys.empty?
    false
  else
    if args[:dataset]
      index = dataset_index(args[:dataset])
      if index
        @config.data[:data][:datasets][index][:borderColor]   = args[:color]   if args[:color]
        @config.data[:data][:datasets][index][:borderWidth]   = args[:width]   if args[:width]
        @config.data[:data][:datasets][index][:borderSkipped] = args[:skipped] if args[:skipped]
        @config.data[:data][:datasets][index][:borderDash]    = args[:dash]    if args[:dash]
      else
        raise "dataset doesn't seem to exist"
      end    
    else
      raise "need to specify a dataset"
    end
  end
end
create(args={}) click to toggle source
# File lib/pi_charts/bar_chart.rb, line 19
def create(args={})
  @config.data[:type] = 'bar'
  @config.data[:data][:datasets] = []
  @config.data[:data][:labels]   = []
  true
end
hover(args={}) click to toggle source
# File lib/pi_charts/bar_chart.rb, line 89
def hover(args={}) 
  if args.keys.empty?
    false
  else
    if args[:dataset]
      index = dataset_index(args[:dataset])
      if index
        @config.data[:data][:datasets][index][:hoverBackgroundColor] = args[:color]  if args[:color]
        @config.data[:data][:datasets][index][:hoverBorderColor]     = args[:border] if args[:border]
        @config.data[:data][:datasets][index][:hoverBorderWidth]     = args[:width]  if args[:width]
      else
        raise "dataset doesn't seem to exist"
      end    
    else
      raise "need to specify a dataset"
    end
  end
end
stack(args={}) click to toggle source
# File lib/pi_charts/bar_chart.rb, line 26
def stack(args={})
  @config.data[:options][:scales]         = {} unless @config.data[:options][:scales]
  @config.data[:options][:scales][:xAxes] = [] unless @config.data[:options][:scales][:xAxes] 
  @config.data[:options][:scales][:yAxes] = [] unless @config.data[:options][:scales][:yAxes]
  if args.keys.empty?
    @config.data[:options][:scales][:xAxes] << { stacked: true } 
    @config.data[:options][:scales][:yAxes] << { stacked: true }
  else
    @config.data[:options][:scales][:xAxes] << { stacked: true } if args[:x]
    @config.data[:options][:scales][:yAxes] << { stacked: true } if args[:y]
  end
end
title(args={}) click to toggle source
# File lib/pi_charts/bar_chart.rb, line 9
def title(args={})
  if args.keys.empty? or ! args.keys.include? [:title]
    raise "need to specify title with {title: 'name', display: true/false }" 
  end
  @config.data[:data][:options][:title] = {}
  @config.data[:data][:options][:title][:text] = args[:title] || ""
  @config.data[:data][:options][:title][:display] = true unless args[:display] == false
  true
end

Private Instance Methods

dataset_index(label=false) click to toggle source
# File lib/pi_charts/bar_chart.rb, line 110
def dataset_index(label=false)
  if label
    @config.data[:data][:datasets].each_with_index do |set, index|
      if set[:label] == label
        return index
      end
    end
  end
  false
end