Class: GViz::Base
- Inherits:
-
Object
show all
- Defined in:
- lib/g_viz/g_viz.rb
Instance Method Summary
collapse
-
#add_data(data, mapping) ⇒ Object
-
#add_graph(type, dom_id, data, columns, options = {}, extra_options = {}) ⇒ Object
-
#draw_visualization(type, dom_id, data, columns, options = {}, extra_options = {}) ⇒ Object
-
#initialize(config = {}) ⇒ Base
constructor
-
#method_missing(name, *args) ⇒ Object
-
#output ⇒ Object
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= {}, = {})
@viz_package_names.add(type)
new_viz = draw_visualization(type, dom_id, data, columns, 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 = {}, = {})
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}, #{[:first_column_title] == true ? 'true' : 'false' }), #{options.to_json});
STRING
end
|
#output ⇒ Object
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
|