rbgct 0.0.3 → 0.0.4

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/README.markdown CHANGED
@@ -10,139 +10,145 @@ $ gem install rbgct
10
10
  SampleData = Struct.new(:date, :values)
11
11
  fantasy_data = (0..100).to_a.map {|i| SampleData.new((Time.now + 60*5*i).strftime("%H:%M"), rand(500)) }
12
12
 
13
- Rbgct.render(fantasy_data,{ :type => :line_chart,
14
- :x_method => :date,
15
- :y_method => :values,
16
- :x_label => :time,
17
- :y_label => :transactions})
13
+ Rbgct.render(fantasy_data,{
14
+ :type => :line_chart,
15
+ :x_method => :date,
16
+ :y_method => :values,
17
+ :x_label => :time,
18
+ :y_label => :transactions,
19
+ :chart_options =>{
20
+ :width => 1600,
21
+ :height => 600,
22
+ :dom_id => 'transactions_linechart',
23
+ :curve_type => 'function'
24
+ }})
18
25
  </pre>
19
26
 
20
27
  ## Line Chart output in HTML
21
28
  <pre>
22
- <script type="text/javascript" src="http://www.google.com/jsapi"></script>
23
- <script type="text/javascript">
24
- google.load('visualization', '1', {packages: ['corechart']});
25
- </script>
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>
26
33
 
27
- <script type="text/javascript">
28
- function drawVisualization() {
29
- // Create and populate the data table.
30
- var data = new google.visualization.DataTable();
31
- data.addColumn('string', 'time');
32
- data.addColumn('number', 'transactions');
33
- data.addRow(['01:00', 7]);
34
- data.addRow(['01:05', 314]);
35
- data.addRow(['01:10', 267]);
36
- data.addRow(['01:15', 39]);
37
- data.addRow(['01:20', 240]);
38
- data.addRow(['01:25', 461]);
39
- data.addRow(['01:30', 86]);
40
- data.addRow(['01:35', 336]);
41
- data.addRow(['01:40', 486]);
42
- data.addRow(['01:45', 170]);
43
- data.addRow(['01:50', 191]);
44
- data.addRow(['01:55', 252]);
45
- data.addRow(['02:00', 375]);
46
- data.addRow(['02:05', 432]);
47
- data.addRow(['02:10', 106]);
48
- data.addRow(['02:15', 495]);
49
- data.addRow(['02:20', 226]);
50
- data.addRow(['02:25', 255]);
51
- data.addRow(['02:30', 20]);
52
- data.addRow(['02:35', 335]);
53
- data.addRow(['02:40', 116]);
54
- data.addRow(['02:45', 125]);
55
- data.addRow(['02:50', 53]);
56
- data.addRow(['02:55', 341]);
57
- data.addRow(['03:00', 189]);
58
- data.addRow(['03:05', 303]);
59
- data.addRow(['03:10', 156]);
60
- data.addRow(['03:15', 388]);
61
- data.addRow(['03:20', 228]);
62
- data.addRow(['03:25', 291]);
63
- data.addRow(['03:30', 173]);
64
- data.addRow(['03:35', 456]);
65
- data.addRow(['03:40', 203]);
66
- data.addRow(['03:45', 186]);
67
- data.addRow(['03:50', 7]);
68
- data.addRow(['03:55', 49]);
69
- data.addRow(['04:00', 444]);
70
- data.addRow(['04:05', 12]);
71
- data.addRow(['04:10', 37]);
72
- data.addRow(['04:15', 490]);
73
- data.addRow(['04:20', 2]);
74
- data.addRow(['04:25', 155]);
75
- data.addRow(['04:30', 50]);
76
- data.addRow(['04:35', 235]);
77
- data.addRow(['04:40', 412]);
78
- data.addRow(['04:45', 167]);
79
- data.addRow(['04:50', 89]);
80
- data.addRow(['04:55', 488]);
81
- data.addRow(['05:00', 74]);
82
- data.addRow(['05:05', 353]);
83
- data.addRow(['05:10', 262]);
84
- data.addRow(['05:15', 89]);
85
- data.addRow(['05:20', 374]);
86
- data.addRow(['05:25', 296]);
87
- data.addRow(['05:30', 275]);
88
- data.addRow(['05:35', 105]);
89
- data.addRow(['05:40', 70]);
90
- data.addRow(['05:45', 409]);
91
- data.addRow(['05:50', 429]);
92
- data.addRow(['05:55', 445]);
93
- data.addRow(['06:00', 38]);
94
- data.addRow(['06:05', 125]);
95
- data.addRow(['06:10', 340]);
96
- data.addRow(['06:15', 425]);
97
- data.addRow(['06:20', 189]);
98
- data.addRow(['06:25', 357]);
99
- data.addRow(['06:30', 220]);
100
- data.addRow(['06:35', 69]);
101
- data.addRow(['06:40', 344]);
102
- data.addRow(['06:45', 292]);
103
- data.addRow(['06:50', 243]);
104
- data.addRow(['06:55', 287]);
105
- data.addRow(['07:00', 162]);
106
- data.addRow(['07:05', 116]);
107
- data.addRow(['07:10', 174]);
108
- data.addRow(['07:15', 187]);
109
- data.addRow(['07:20', 227]);
110
- data.addRow(['07:25', 425]);
111
- data.addRow(['07:30', 376]);
112
- data.addRow(['07:35', 387]);
113
- data.addRow(['07:40', 210]);
114
- data.addRow(['07:45', 136]);
115
- data.addRow(['07:50', 202]);
116
- data.addRow(['07:55', 471]);
117
- data.addRow(['08:00', 313]);
118
- data.addRow(['08:05', 63]);
119
- data.addRow(['08:10', 326]);
120
- data.addRow(['08:15', 482]);
121
- data.addRow(['08:20', 190]);
122
- data.addRow(['08:25', 183]);
123
- data.addRow(['08:30', 434]);
124
- data.addRow(['08:35', 242]);
125
- data.addRow(['08:40', 257]);
126
- data.addRow(['08:45', 42]);
127
- data.addRow(['08:50', 279]);
128
- data.addRow(['08:55', 223]);
129
- data.addRow(['09:00', 103]);
130
- data.addRow(['09:05', 447]);
131
- data.addRow(['09:10', 41]);
132
- data.addRow(['09:15', 325]);
133
- data.addRow(['09:20', 327]);
34
+ <script type="text/javascript">
35
+ function drawVisualization() {
36
+ // Create and populate the data table.
37
+ var data = new google.visualization.DataTable();
134
38
 
135
- // Create and draw the visualization.
136
- new google.visualization.LineChart(document.getElementById('visualization')).
137
- draw(data, {curveType: "function",
138
- width: 1000, height: 400,
139
- vAxis: {maxValue: 495}}
140
- );
141
- }
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
+ }
147
+
148
+ google.setOnLoadCallback(drawVisualization);
149
+ </script>
150
+ <div id="transactions_linechart" style="width: 1600px; height: 600px;"></div>
142
151
 
143
- google.setOnLoadCallback(drawVisualization);
144
- </script>
145
- <div id="visualization" style="width: 1000px; height: 400px;"></div>
146
152
  </pre>
147
153
 
148
154
  ## Line Chart in Google Beauty
data/init.rb CHANGED
@@ -1,2 +1,4 @@
1
+ # encoding: UTF-8
2
+
1
3
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '.', 'lib'))
2
4
  require 'rbgct'
@@ -6,7 +6,7 @@ module Rbgct::Charts
6
6
  DEFAULT_HEIGHT = 400
7
7
 
8
8
  attr_accessor :data, :type
9
- attr_accessor :width, :height
9
+ attr_accessor :width, :height, :dom_id
10
10
 
11
11
  def jsapi
12
12
  <<-EOL
@@ -30,16 +30,13 @@ module Rbgct::Charts
30
30
  <<-EOL
31
31
 
32
32
  // Create and draw the visualization.
33
- new google.visualization.LineChart(document.getElementById('visualization')).
34
- draw(data, {curveType: "function",
35
- width: #{width}, height: #{height},
36
- vAxis: {maxValue: #{max_value}}}
37
- );
33
+ new google.visualization.LineChart(document.getElementById('#{dom_id}')).
34
+ draw(data, {width: #{width}, height: #{height} #{options_for_chart}});
38
35
  }
39
36
 
40
37
  google.setOnLoadCallback(drawVisualization);
41
38
  </script>
42
- <div id="visualization" style="width: #{width}px; height: #{height}px;"></div>
39
+ <div id="#{dom_id}" style="width: #{width}px; height: #{height}px;"></div>
43
40
  EOL
44
41
  end
45
42
 
@@ -51,6 +48,7 @@ module Rbgct::Charts
51
48
  end
52
49
 
53
50
  def set_default_values
51
+ @dom_id ||= 'visualization'
54
52
  @width ||= DEFAULT_WIDTH
55
53
  @height ||= DEFAULT_HEIGHT
56
54
  end
@@ -4,18 +4,23 @@ module Rbgct::Charts
4
4
 
5
5
  include Chart
6
6
 
7
- attr_accessor :x_label, :x_method, :y_label, :y_method
7
+ attr_accessor :x_label, :x_method, :y_label, :y_method, :curve_type
8
8
  attr_accessor :max_value
9
9
 
10
10
  def initialize(data, opts)
11
+ raise ArgumentError.new('x_method or y_method are not defined') unless opts[:x_method] && opts[:y_method]
12
+
11
13
  @data = data
12
14
 
13
15
  opts.each{ |method,arg| self.send("#{method}=",arg) if self.respond_to?(method)}
16
+
17
+ opts[:chart_options] ||= {}
14
18
  opts[:chart_options].each{ |method,arg| self.send("#{method}=",arg) if self.respond_to?(method)}
15
19
 
16
20
  @max_value = data.map(&:"#{y_method}").flatten.max
17
21
 
18
22
  set_default_values # in Chart
23
+ set_default_values_line_chart
19
24
  end
20
25
 
21
26
  def render
@@ -38,5 +43,16 @@ module Rbgct::Charts
38
43
  %(data.addRow(['#{row.send(x_method)}', #{Array(row.send(y_method)).join(",")}]);)
39
44
  end.join("\n")
40
45
  end
46
+
47
+ def options_for_chart
48
+ ", vAxis: {maxValue: #{max_value}}, curveType: \"#{curve_type}\""
49
+ end
50
+
51
+ def set_default_values_line_chart
52
+ @y_label ||= 'Y'
53
+ @x_label ||= 'X'
54
+ @curve_type ||= 'none'
55
+ end
56
+
41
57
  end
42
58
  end
data/lib/rbgct/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rbgct
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
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
- version: 0.0.3
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 4
9
+ version: 0.0.4
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-24 00:00:00 Z
17
+ date: 2011-06-26 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"
@@ -36,6 +41,7 @@ files:
36
41
  - lib/rbgct/charts/line_chart.rb
37
42
  - lib/rbgct/version.rb
38
43
  - rbgct.gemspec
44
+ has_rdoc: true
39
45
  homepage: http://www.mekdigital.com
40
46
  licenses: []
41
47
 
@@ -49,17 +55,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
49
55
  requirements:
50
56
  - - ">="
51
57
  - !ruby/object:Gem::Version
58
+ segments:
59
+ - 0
52
60
  version: "0"
53
61
  required_rubygems_version: !ruby/object:Gem::Requirement
54
62
  none: false
55
63
  requirements:
56
64
  - - ">="
57
65
  - !ruby/object:Gem::Version
66
+ segments:
67
+ - 0
58
68
  version: "0"
59
69
  requirements: []
60
70
 
61
71
  rubyforge_project: rbgct
62
- rubygems_version: 1.7.2
72
+ rubygems_version: 1.3.7
63
73
  signing_key:
64
74
  specification_version: 3
65
75
  summary: Ruby Google Chart Tools