rbgct 0.1.2 → 0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/rbgct/chart_factory.rb +2 -0
- data/lib/rbgct/charts/bar_chart.rb +44 -0
- data/lib/rbgct/charts/chart.rb +14 -24
- data/lib/rbgct/version.rb +1 -1
- data/lib/rbgct.rb +34 -0
- metadata +31 -23
data/lib/rbgct/chart_factory.rb
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Rbgct::Charts
|
|
2
|
+
|
|
3
|
+
class BarChart
|
|
4
|
+
|
|
5
|
+
include Chart
|
|
6
|
+
|
|
7
|
+
attr_accessor :name, :value, :name_label, :value_label, :is3D
|
|
8
|
+
|
|
9
|
+
def initialize(data, opts)
|
|
10
|
+
raise ArgumentError.new('name or value are not defined') unless opts[:name] && opts[:value]
|
|
11
|
+
|
|
12
|
+
@data = data
|
|
13
|
+
|
|
14
|
+
opts.each{ |method,arg| self.send("#{method}=",arg) if self.respond_to?(method)}
|
|
15
|
+
|
|
16
|
+
opts[:chart_options] ||= {}
|
|
17
|
+
opts[:chart_options].each{ |method,arg| self.send("#{method}=",arg) if self.respond_to?(method)}
|
|
18
|
+
|
|
19
|
+
set_default_values # in Chart
|
|
20
|
+
set_default_values_pie_chart
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def data_columns
|
|
24
|
+
"data.addColumn('string', '#{name_label}');
|
|
25
|
+
data.addColumn('number', '#{value_label}');"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def data_rows
|
|
29
|
+
data.inject([]) do |ary, el|
|
|
30
|
+
ary << " data.setValue(#{ary.size}, 0, '#{el.send(name)}');\n data.setValue(#{ary.size}, 1, #{el.send(value)});"
|
|
31
|
+
end.unshift("data.addRows(#{data.size});").join("\n")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def options_for_chart
|
|
35
|
+
%(, is3D: "#{is3D}")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def set_default_values_pie_chart
|
|
39
|
+
@is3D ||= true
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
data/lib/rbgct/charts/chart.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Rbgct::Charts
|
|
2
2
|
|
|
3
3
|
module Chart
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
DEFAULT_WIDTH = 600
|
|
6
6
|
DEFAULT_HEIGHT = 400
|
|
7
7
|
|
|
@@ -13,51 +13,41 @@ module Rbgct::Charts
|
|
|
13
13
|
return render_warning ? "<span class='rbgct-no-data'>Dataset <em>#{title}<em> contains no data.</span>" : nil
|
|
14
14
|
end
|
|
15
15
|
<<-EOL
|
|
16
|
-
#{jsapi}
|
|
17
16
|
#{draw_visualization_start}
|
|
18
17
|
#{data_columns}
|
|
19
18
|
#{data_rows}
|
|
20
19
|
#{draw_visualization_end}
|
|
21
20
|
EOL
|
|
22
21
|
end
|
|
23
|
-
|
|
24
|
-
def jsapi
|
|
25
|
-
<<-EOL
|
|
26
|
-
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
|
|
27
|
-
<script type="text/javascript">
|
|
28
|
-
google.load('visualization', '1', {packages: ['#{package}']});
|
|
29
|
-
</script>
|
|
30
|
-
EOL
|
|
31
|
-
end
|
|
32
22
|
|
|
33
23
|
def draw_visualization_start
|
|
34
24
|
<<-EOL
|
|
25
|
+
<div id="#{dom_id}" style="width: #{width}px; height: #{height}px;"></div>
|
|
35
26
|
<script type="text/javascript">
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
rbgct.graphs['#{dom_id}'] = (function() {
|
|
28
|
+
|
|
29
|
+
if(document.getElementById('#{dom_id}')){
|
|
30
|
+
// Create and populate the data table.
|
|
31
|
+
var data = new google.visualization.DataTable();
|
|
39
32
|
EOL
|
|
40
33
|
end
|
|
41
34
|
|
|
42
35
|
def draw_visualization_end
|
|
43
36
|
<<-EOL
|
|
44
37
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
38
|
+
// Create and draw the visualization.
|
|
39
|
+
new google.visualization.#{class_name}(document.getElementById('#{dom_id}')).
|
|
40
|
+
draw(data, {width: #{width}, height: #{height}, backgroundColor:{stroke:'#{bg_stroke_color}', strokeWidth:#{bg_stroke}, fill:'#{bg_color}'}, title: "#{title}", chartArea: {top: #{top}, left: #{left}} #{options_for_chart}});
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
rbgct.drawGraphs();
|
|
51
44
|
</script>
|
|
52
|
-
<div id="#{dom_id}" style="width: #{width}px; height: #{height}px;"></div>
|
|
53
45
|
EOL
|
|
54
46
|
end
|
|
55
47
|
|
|
56
48
|
def package
|
|
57
49
|
case type
|
|
58
|
-
when :line_chart
|
|
59
|
-
'corechart'
|
|
60
|
-
when :pie_chart
|
|
50
|
+
when :line_chart, :bar_chart, :pie_chart
|
|
61
51
|
'corechart'
|
|
62
52
|
end
|
|
63
53
|
end
|
data/lib/rbgct/version.rb
CHANGED
data/lib/rbgct.rb
CHANGED
|
@@ -4,9 +4,43 @@ module Rbgct
|
|
|
4
4
|
require 'rbgct/charts/chart'
|
|
5
5
|
require 'rbgct/charts/line_chart'
|
|
6
6
|
require 'rbgct/charts/pie_chart'
|
|
7
|
+
require 'rbgct/charts/bar_chart'
|
|
7
8
|
|
|
8
9
|
class NotImplementedError < StandardError; end
|
|
9
10
|
|
|
11
|
+
def self.include_javascript(packages=['corechart','table'])
|
|
12
|
+
<<-EOL
|
|
13
|
+
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
|
|
14
|
+
<script type="text/javascript">
|
|
15
|
+
var rbgct = {
|
|
16
|
+
|
|
17
|
+
"graphs" : {},
|
|
18
|
+
|
|
19
|
+
"loadedPackages" : [],
|
|
20
|
+
|
|
21
|
+
"packages" : ['#{packages.join("\',\'")}'],
|
|
22
|
+
|
|
23
|
+
"drawGraphs" : (function(){
|
|
24
|
+
for(var i in rbgct.graphs){
|
|
25
|
+
rbgct.graphs[i]();
|
|
26
|
+
}
|
|
27
|
+
}),
|
|
28
|
+
|
|
29
|
+
"loadPackages" : (function(){
|
|
30
|
+
for(var i in rbgct.packages){
|
|
31
|
+
if( rbgct.loadedPackages.indexOf(rbgct.packages[i]) == -1 ){
|
|
32
|
+
google.load('visualization', '1', {packages: [rbgct.packages[i]]});
|
|
33
|
+
rbgct.loadedPackages.push(rbgct.packages[i]);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
google.setOnLoadCallback(rbgct.drawGraphs)
|
|
37
|
+
})
|
|
38
|
+
};
|
|
39
|
+
rbgct.loadPackages();
|
|
40
|
+
</script>
|
|
41
|
+
EOL
|
|
42
|
+
end
|
|
43
|
+
|
|
10
44
|
def self.render(data, opts={})
|
|
11
45
|
raise ArgumentError.new('Dataset must respond to :each') unless data.respond_to?(:each)
|
|
12
46
|
chart = ChartFactory[opts[:type]].new(data,opts)
|
metadata
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rbgct
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.2
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
5
4
|
prerelease:
|
|
5
|
+
version: "0.2"
|
|
6
6
|
platform: ruby
|
|
7
|
-
authors:
|
|
7
|
+
authors:
|
|
8
8
|
- Emanuele Tozzato
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
|
|
13
|
+
date: 2012-07-23 00:00:00 Z
|
|
14
14
|
dependencies: []
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
email:
|
|
15
|
+
|
|
16
|
+
description: "Google Chart Tools provide a perfect way to visualize data on your website: now on Ruby"
|
|
17
|
+
email:
|
|
18
18
|
- etozzato@gmail.com
|
|
19
19
|
executables: []
|
|
20
|
+
|
|
20
21
|
extensions: []
|
|
22
|
+
|
|
21
23
|
extra_rdoc_files: []
|
|
22
|
-
|
|
24
|
+
|
|
25
|
+
files:
|
|
23
26
|
- .gitignore
|
|
24
27
|
- Gemfile
|
|
25
28
|
- LICENSE
|
|
@@ -29,34 +32,39 @@ files:
|
|
|
29
32
|
- init.rb
|
|
30
33
|
- lib/rbgct.rb
|
|
31
34
|
- lib/rbgct/chart_factory.rb
|
|
35
|
+
- lib/rbgct/charts/bar_chart.rb
|
|
32
36
|
- lib/rbgct/charts/chart.rb
|
|
33
37
|
- lib/rbgct/charts/line_chart.rb
|
|
34
38
|
- lib/rbgct/charts/pie_chart.rb
|
|
35
39
|
- lib/rbgct/version.rb
|
|
36
40
|
- rbgct.gemspec
|
|
37
|
-
has_rdoc: true
|
|
38
41
|
homepage: http://www.mekdigital.com
|
|
39
42
|
licenses: []
|
|
43
|
+
|
|
40
44
|
post_install_message:
|
|
41
45
|
rdoc_options: []
|
|
42
|
-
|
|
46
|
+
|
|
47
|
+
require_paths:
|
|
43
48
|
- lib
|
|
44
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
45
50
|
none: false
|
|
46
|
-
requirements:
|
|
47
|
-
- -
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version:
|
|
50
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: "0"
|
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
51
56
|
none: false
|
|
52
|
-
requirements:
|
|
53
|
-
- -
|
|
54
|
-
- !ruby/object:Gem::Version
|
|
55
|
-
version:
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: "0"
|
|
56
61
|
requirements: []
|
|
62
|
+
|
|
57
63
|
rubyforge_project: rbgct
|
|
58
|
-
rubygems_version: 1.
|
|
64
|
+
rubygems_version: 1.8.24
|
|
59
65
|
signing_key:
|
|
60
66
|
specification_version: 3
|
|
61
67
|
summary: Ruby Google Chart Tools
|
|
62
68
|
test_files: []
|
|
69
|
+
|
|
70
|
+
has_rdoc:
|