rbgct 0.0.7 → 0.0.8
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/.gitignore +1 -1
- data/README.markdown +62 -126
- data/THANKYOU.markdown +4 -0
- data/lib/rbgct/chart_factory.rb +2 -0
- data/lib/rbgct/charts/chart.rb +22 -8
- data/lib/rbgct/charts/line_chart.rb +0 -10
- data/lib/rbgct/charts/pie_chart.rb +44 -0
- data/lib/rbgct/version.rb +1 -1
- data/lib/rbgct.rb +1 -0
- metadata +16 -5
- data/CONTRIBUTORS +0 -3
data/.gitignore
CHANGED
data/README.markdown
CHANGED
@@ -5,7 +5,46 @@
|
|
5
5
|
$ gem install rbgct
|
6
6
|
</pre>
|
7
7
|
|
8
|
-
##
|
8
|
+
## Implemented Classes
|
9
|
+
|
10
|
+
* [LineChart](http://code.google.com/apis/chart/interactive/docs/gallery/linechart.html)
|
11
|
+
* [PieChart](http://code.google.com/apis/chart/interactive/docs/gallery/piechart.html)
|
12
|
+
|
13
|
+
## TODO
|
14
|
+
|
15
|
+
*way too much!*
|
16
|
+
|
17
|
+
* Add Specs
|
18
|
+
* Add Documentation
|
19
|
+
* Implement More :chart_options
|
20
|
+
* Fix Known Bugs
|
21
|
+
* Implement:
|
22
|
+
* Annotated Time Line
|
23
|
+
* Area Chart
|
24
|
+
* Bar Chart
|
25
|
+
* Candlestick Chart
|
26
|
+
* Chart Editor
|
27
|
+
* Chart Wrapper
|
28
|
+
* Column Chart
|
29
|
+
* Combo Chart
|
30
|
+
* Gauge
|
31
|
+
* Geo Chart
|
32
|
+
* Geo Map
|
33
|
+
* Image Chart
|
34
|
+
* Image Area Chart
|
35
|
+
* Image Bar Chart
|
36
|
+
* Image Candlestick Chart
|
37
|
+
* Image Line Chart
|
38
|
+
* Image Pie Chart
|
39
|
+
* Intensity Map
|
40
|
+
* Motion Chart
|
41
|
+
* Org Chart
|
42
|
+
* Scatter Chart
|
43
|
+
* Sparkline
|
44
|
+
* Table
|
45
|
+
* Tree Map
|
46
|
+
|
47
|
+
## LineChart
|
9
48
|
<pre>
|
10
49
|
SampleData = Struct.new(:date, :values)
|
11
50
|
fantasy_data = (0..100).to_a.map {|i| SampleData.new((Time.now + 60*5*i).strftime("%H:%M"), rand(500)) }
|
@@ -24,132 +63,29 @@ Rbgct.render(fantasy_data,{
|
|
24
63
|
}})
|
25
64
|
</pre>
|
26
65
|
|
27
|
-
##
|
28
|
-
|
29
|
-
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
|
30
|
-
<script type="text/javascript">
|
31
|
-
google.load('visualization', '1', {packages: ['corechart']});
|
32
|
-
</script>
|
33
|
-
|
34
|
-
<script type="text/javascript">
|
35
|
-
function drawVisualization() {
|
36
|
-
// Create and populate the data table.
|
37
|
-
var data = new google.visualization.DataTable();
|
38
|
-
|
39
|
-
data.addColumn('string', 'time');
|
40
|
-
data.addColumn('number', 'transactions');
|
41
|
-
data.addRow(['10:58', 184]);
|
42
|
-
data.addRow(['11:03', 380]);
|
43
|
-
data.addRow(['11:08', 231]);
|
44
|
-
data.addRow(['11:13', 133]);
|
45
|
-
data.addRow(['11:18', 282]);
|
46
|
-
data.addRow(['11:23', 99]);
|
47
|
-
data.addRow(['11:28', 86]);
|
48
|
-
data.addRow(['11:33', 50]);
|
49
|
-
data.addRow(['11:38', 144]);
|
50
|
-
data.addRow(['11:43', 399]);
|
51
|
-
data.addRow(['11:48', 38]);
|
52
|
-
data.addRow(['11:53', 466]);
|
53
|
-
data.addRow(['11:58', 402]);
|
54
|
-
data.addRow(['12:03', 365]);
|
55
|
-
data.addRow(['12:08', 408]);
|
56
|
-
data.addRow(['12:13', 436]);
|
57
|
-
data.addRow(['12:18', 248]);
|
58
|
-
data.addRow(['12:23', 156]);
|
59
|
-
data.addRow(['12:28', 109]);
|
60
|
-
data.addRow(['12:33', 272]);
|
61
|
-
data.addRow(['12:38', 290]);
|
62
|
-
data.addRow(['12:43', 465]);
|
63
|
-
data.addRow(['12:48', 301]);
|
64
|
-
data.addRow(['12:53', 171]);
|
65
|
-
data.addRow(['12:58', 223]);
|
66
|
-
data.addRow(['13:03', 157]);
|
67
|
-
data.addRow(['13:08', 139]);
|
68
|
-
data.addRow(['13:13', 115]);
|
69
|
-
data.addRow(['13:18', 205]);
|
70
|
-
data.addRow(['13:23', 314]);
|
71
|
-
data.addRow(['13:28', 443]);
|
72
|
-
data.addRow(['13:33', 428]);
|
73
|
-
data.addRow(['13:38', 462]);
|
74
|
-
data.addRow(['13:43', 347]);
|
75
|
-
data.addRow(['13:48', 291]);
|
76
|
-
data.addRow(['13:53', 69]);
|
77
|
-
data.addRow(['13:58', 383]);
|
78
|
-
data.addRow(['14:03', 84]);
|
79
|
-
data.addRow(['14:08', 247]);
|
80
|
-
data.addRow(['14:13', 73]);
|
81
|
-
data.addRow(['14:18', 9]);
|
82
|
-
data.addRow(['14:23', 120]);
|
83
|
-
data.addRow(['14:28', 17]);
|
84
|
-
data.addRow(['14:33', 441]);
|
85
|
-
data.addRow(['14:38', 161]);
|
86
|
-
data.addRow(['14:43', 154]);
|
87
|
-
data.addRow(['14:48', 281]);
|
88
|
-
data.addRow(['14:53', 498]);
|
89
|
-
data.addRow(['14:58', 363]);
|
90
|
-
data.addRow(['15:03', 11]);
|
91
|
-
data.addRow(['15:08', 99]);
|
92
|
-
data.addRow(['15:13', 84]);
|
93
|
-
data.addRow(['15:18', 460]);
|
94
|
-
data.addRow(['15:23', 350]);
|
95
|
-
data.addRow(['15:28', 204]);
|
96
|
-
data.addRow(['15:33', 177]);
|
97
|
-
data.addRow(['15:38', 174]);
|
98
|
-
data.addRow(['15:43', 200]);
|
99
|
-
data.addRow(['15:48', 111]);
|
100
|
-
data.addRow(['15:53', 293]);
|
101
|
-
data.addRow(['15:58', 112]);
|
102
|
-
data.addRow(['16:03', 274]);
|
103
|
-
data.addRow(['16:08', 43]);
|
104
|
-
data.addRow(['16:13', 324]);
|
105
|
-
data.addRow(['16:18', 190]);
|
106
|
-
data.addRow(['16:23', 371]);
|
107
|
-
data.addRow(['16:28', 455]);
|
108
|
-
data.addRow(['16:33', 63]);
|
109
|
-
data.addRow(['16:38', 432]);
|
110
|
-
data.addRow(['16:43', 63]);
|
111
|
-
data.addRow(['16:48', 17]);
|
112
|
-
data.addRow(['16:53', 377]);
|
113
|
-
data.addRow(['16:58', 176]);
|
114
|
-
data.addRow(['17:03', 211]);
|
115
|
-
data.addRow(['17:08', 105]);
|
116
|
-
data.addRow(['17:13', 18]);
|
117
|
-
data.addRow(['17:18', 46]);
|
118
|
-
data.addRow(['17:23', 368]);
|
119
|
-
data.addRow(['17:28', 171]);
|
120
|
-
data.addRow(['17:33', 404]);
|
121
|
-
data.addRow(['17:38', 82]);
|
122
|
-
data.addRow(['17:43', 417]);
|
123
|
-
data.addRow(['17:48', 13]);
|
124
|
-
data.addRow(['17:53', 189]);
|
125
|
-
data.addRow(['17:58', 216]);
|
126
|
-
data.addRow(['18:03', 259]);
|
127
|
-
data.addRow(['18:08', 4]);
|
128
|
-
data.addRow(['18:13', 4]);
|
129
|
-
data.addRow(['18:18', 339]);
|
130
|
-
data.addRow(['18:23', 5]);
|
131
|
-
data.addRow(['18:28', 194]);
|
132
|
-
data.addRow(['18:33', 127]);
|
133
|
-
data.addRow(['18:38', 247]);
|
134
|
-
data.addRow(['18:43', 42]);
|
135
|
-
data.addRow(['18:48', 29]);
|
136
|
-
data.addRow(['18:53', 357]);
|
137
|
-
data.addRow(['18:58', 65]);
|
138
|
-
data.addRow(['19:03', 300]);
|
139
|
-
data.addRow(['19:08', 355]);
|
140
|
-
data.addRow(['19:13', 58]);
|
141
|
-
data.addRow(['19:18', 58]);
|
142
|
-
|
143
|
-
// Create and draw the visualization.
|
144
|
-
new google.visualization.LineChart(document.getElementById('transactions_linechart')).
|
145
|
-
draw(data, {width: 1600, height: 600 , vAxis: {maxValue: 498}, curveType: "function"});
|
146
|
-
}
|
66
|
+
## LineChart in Google Beauty
|
67
|
+

|
147
68
|
|
148
|
-
|
149
|
-
|
150
|
-
|
69
|
+
## PieChart
|
70
|
+
<pre>
|
71
|
+
SampleDataPieChart = Struct.new(:label, :value)
|
72
|
+
fantasy_data = ['OSX', 'WIN', 'LINUX'].map{ |os| SampleDataPieChart.new(os,rand(99999999))}
|
151
73
|
|
74
|
+
Rbgct.render(fantasy_data, {
|
75
|
+
:type => :pie_chart,
|
76
|
+
:name => :label,
|
77
|
+
:value => :value,
|
78
|
+
:name_label => 'Type',
|
79
|
+
:value_label => 'Installations',
|
80
|
+
:chart_options =>{
|
81
|
+
:width => 600,
|
82
|
+
:height => 600,
|
83
|
+
:dom_id => 'graph',
|
84
|
+
:is_3d => true,
|
85
|
+
:title => "Operating Systems Installations (2012)"
|
86
|
+
}
|
87
|
+
})
|
152
88
|
</pre>
|
153
89
|
|
154
|
-
##
|
155
|
-

|
data/THANKYOU.markdown
ADDED
data/lib/rbgct/chart_factory.rb
CHANGED
data/lib/rbgct/charts/chart.rb
CHANGED
@@ -5,9 +5,20 @@ module Rbgct::Charts
|
|
5
5
|
DEFAULT_WIDTH = 600
|
6
6
|
DEFAULT_HEIGHT = 400
|
7
7
|
|
8
|
-
attr_accessor :data, :type
|
8
|
+
attr_accessor :data, :type, :class_name
|
9
9
|
attr_accessor :width, :height, :dom_id, :title, :h_title, :v_title, :top, :left, :legend, :x_strftime, :y_strftime, :time_offset
|
10
|
-
|
10
|
+
|
11
|
+
|
12
|
+
def render
|
13
|
+
<<-EOL
|
14
|
+
#{jsapi}
|
15
|
+
#{draw_visualization_start}
|
16
|
+
#{data_columns}
|
17
|
+
#{data_rows}
|
18
|
+
#{draw_visualization_end}
|
19
|
+
EOL
|
20
|
+
end
|
21
|
+
|
11
22
|
def jsapi
|
12
23
|
<<-EOL
|
13
24
|
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
|
@@ -30,7 +41,7 @@ module Rbgct::Charts
|
|
30
41
|
<<-EOL
|
31
42
|
|
32
43
|
// Create and draw the visualization.
|
33
|
-
new google.visualization
|
44
|
+
new google.visualization.#{class_name}(document.getElementById('#{dom_id}')).
|
34
45
|
draw(data, {width: #{width}, height: #{height}, title: "#{title}", chartArea: {top: #{top}, left: #{left}} #{options_for_chart}});
|
35
46
|
}
|
36
47
|
|
@@ -44,15 +55,18 @@ module Rbgct::Charts
|
|
44
55
|
case type
|
45
56
|
when :line_chart
|
46
57
|
'corechart'
|
58
|
+
when :pie_chart
|
59
|
+
'corechart'
|
47
60
|
end
|
48
61
|
end
|
49
62
|
|
50
63
|
def set_default_values
|
51
|
-
@dom_id
|
52
|
-
@width
|
53
|
-
@height
|
54
|
-
@top
|
55
|
-
@left
|
64
|
+
@dom_id ||= 'visualization'
|
65
|
+
@width ||= DEFAULT_WIDTH
|
66
|
+
@height ||= DEFAULT_HEIGHT
|
67
|
+
@top ||= 100
|
68
|
+
@left ||= 100
|
69
|
+
@class_name ||= self.class.name.sub('Rbgct::Charts::','')
|
56
70
|
end
|
57
71
|
|
58
72
|
end
|
@@ -23,16 +23,6 @@ module Rbgct::Charts
|
|
23
23
|
set_default_values_line_chart
|
24
24
|
end
|
25
25
|
|
26
|
-
def render
|
27
|
-
<<-EOL
|
28
|
-
#{jsapi}
|
29
|
-
#{draw_visualization_start}
|
30
|
-
#{data_columns}
|
31
|
-
#{data_rows}
|
32
|
-
#{draw_visualization_end}
|
33
|
-
EOL
|
34
|
-
end
|
35
|
-
|
36
26
|
def data_columns
|
37
27
|
"data.addColumn('string', '#{x_label}');\n" +
|
38
28
|
Array(y_label).map{|lbl| %(data.addColumn('number', '#{lbl}');)}.join("\n")
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Rbgct::Charts
|
2
|
+
|
3
|
+
class PieChart
|
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/version.rb
CHANGED
data/lib/rbgct.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbgct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 8
|
9
|
+
version: 0.0.8
|
6
10
|
platform: ruby
|
7
11
|
authors:
|
8
12
|
- Emanuele Tozzato
|
@@ -10,7 +14,8 @@ autorequire:
|
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
16
|
|
13
|
-
date: 2011-06-
|
17
|
+
date: 2011-06-30 00:00:00 -07:00
|
18
|
+
default_executable:
|
14
19
|
dependencies: []
|
15
20
|
|
16
21
|
description: "Google Chart Tools provide a perfect way to visualize data on your website: now on Ruby"
|
@@ -24,18 +29,20 @@ extra_rdoc_files: []
|
|
24
29
|
|
25
30
|
files:
|
26
31
|
- .gitignore
|
27
|
-
- CONTRIBUTORS
|
28
32
|
- Gemfile
|
29
33
|
- LICENSE
|
30
34
|
- README.markdown
|
31
35
|
- Rakefile
|
36
|
+
- THANKYOU.markdown
|
32
37
|
- init.rb
|
33
38
|
- lib/rbgct.rb
|
34
39
|
- lib/rbgct/chart_factory.rb
|
35
40
|
- lib/rbgct/charts/chart.rb
|
36
41
|
- lib/rbgct/charts/line_chart.rb
|
42
|
+
- lib/rbgct/charts/pie_chart.rb
|
37
43
|
- lib/rbgct/version.rb
|
38
44
|
- rbgct.gemspec
|
45
|
+
has_rdoc: true
|
39
46
|
homepage: http://www.mekdigital.com
|
40
47
|
licenses: []
|
41
48
|
|
@@ -49,17 +56,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
49
56
|
requirements:
|
50
57
|
- - ">="
|
51
58
|
- !ruby/object:Gem::Version
|
59
|
+
segments:
|
60
|
+
- 0
|
52
61
|
version: "0"
|
53
62
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
63
|
none: false
|
55
64
|
requirements:
|
56
65
|
- - ">="
|
57
66
|
- !ruby/object:Gem::Version
|
67
|
+
segments:
|
68
|
+
- 0
|
58
69
|
version: "0"
|
59
70
|
requirements: []
|
60
71
|
|
61
72
|
rubyforge_project: rbgct
|
62
|
-
rubygems_version: 1.7
|
73
|
+
rubygems_version: 1.3.7
|
63
74
|
signing_key:
|
64
75
|
specification_version: 3
|
65
76
|
summary: Ruby Google Chart Tools
|
data/CONTRIBUTORS
DELETED