Class: GViz::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/g_viz/g_viz.rb

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ Base

Returns a new instance of Base.



7
8
9
10
11
12
13
14
# File 'lib/g_viz/g_viz.rb', line 7

def initialize(config = {})
  @viz_package_names = Set.new
  @config = config
  @namespace = @config[:namespace] || ""
  @datas = {}
  @visualizations = []
  @template_name = File.join(File.dirname(__FILE__), 'templates', 'data_tables.erb')
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/g_viz/g_viz.rb', line 40

def method_missing(name, *args)
  if name.to_s.match(/add_/)
    type = name.to_s.gsub(/add_/){""}.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
    return add_graph(type, *args)
  else
    raise NoMethodError.new("Undefined method #{name} for #{self.inspect}")
  end
end

Instance Method Details

#add_data(data, mapping) ⇒ Object



23
24
25
# File 'lib/g_viz/g_viz.rb', line 23

def add_data(data, mapping)
  @datas[data.object_id] = GViz::Data.new(data, mapping)
end

#add_graph(type, dom_id, data, columns, options = {}, extra_options = {}) ⇒ Object



27
28
29
30
31
# File 'lib/g_viz/g_viz.rb', line 27

def add_graph(type, dom_id, data, columns, options= {}, extra_options = {})
  @viz_package_names.add(type)
  new_viz = draw_visualization(type, dom_id, data, columns, options, extra_options)
  @visualizations << new_viz
end

#draw_visualization(type, dom_id, data, columns, options = {}, extra_options = {}) ⇒ Object



33
34
35
36
37
38
# File 'lib/g_viz/g_viz.rb', line 33

def draw_visualization(type, dom_id, data, columns, options = {}, extra_options = {})
  viz_string = <<-STRING
    var chart_#{data.object_id} = new google.visualization.#{type}(document.getElementById('#{dom_id}'));
    chart_#{data.object_id}.draw(createDataTable(#{@datas[data.object_id].data_name}, #{columns.to_json}, #{extra_options[:first_column_title] == true ? 'true' : 'false' }), #{options.to_json});
  STRING
end

#outputObject



16
17
18
19
20
21
# File 'lib/g_viz/g_viz.rb', line 16

def output
  b = binding
  rhtml = ERB.new(IO.read(@template_name), 0, "-")
  @output = rhtml.result(b) 
  return @output
end