gchartrb 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +6 -0
- data/README.txt +7 -6
- data/Rakefile +22 -1
- data/lib/example.rb +11 -3
- data/lib/google_chart/bar_chart.rb +0 -1
- data/lib/google_chart/base.rb +58 -13
- data/lib/google_chart/pie_chart.rb +6 -2
- data/lib/test.rb +12 -5
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 0.5.2 / 2007-12-14
|
2
|
+
|
3
|
+
* Added support for title color via title_color attribute
|
4
|
+
* Added support for vertical and horizontal range markers using the range_marker method
|
5
|
+
* Removed show_labels from base.rb and added it only for pie charts
|
6
|
+
|
1
7
|
== 0.5.1 / 2007-12-12
|
2
8
|
|
3
9
|
* Added support for max_value method to specify maximum values to plot against
|
data/README.txt
CHANGED
@@ -36,12 +36,13 @@ The following features are pending :
|
|
36
36
|
|
37
37
|
However, you can still make use of the API to insert arbitrary parameters
|
38
38
|
|
39
|
-
#
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
# Plotting a sparklines chart (using extra params)
|
40
|
+
sparklines = GoogleChart::LineChart.new('100x50', nil, false)
|
41
|
+
sparklines.data "Test", [4,3,2,4,6,8,10]
|
42
|
+
sparklines.show_legend = false
|
43
|
+
sparklines.axis :x, :labels => [] # Empty labels
|
44
|
+
sparklines.axis :y, :labels => [] # Empty labels
|
45
|
+
puts sparklines.to_url(:chxs => "0,000000,10,0,_|1,000000,10,0,_")
|
45
46
|
|
46
47
|
== SYNOPSIS:
|
47
48
|
|
data/Rakefile
CHANGED
@@ -8,7 +8,7 @@ class Hoe
|
|
8
8
|
def extra_deps; @extra_deps.reject { |x| Array(x).first == "hoe" } end
|
9
9
|
end # copied from the Rakefile of the sup project
|
10
10
|
|
11
|
-
Hoe.new('gchartrb', "0.5.
|
11
|
+
Hoe.new('gchartrb', "0.5.2") do |p|
|
12
12
|
p.rubyforge_name = 'gchartrb'
|
13
13
|
p.author = 'Deepak Jois'
|
14
14
|
p.email = 'deepak.jois@gmail.com'
|
@@ -19,4 +19,25 @@ Hoe.new('gchartrb', "0.5.1") do |p|
|
|
19
19
|
p.remote_rdoc_dir = ''
|
20
20
|
end
|
21
21
|
|
22
|
+
|
23
|
+
RDOC_OPTS = [
|
24
|
+
'--quiet',
|
25
|
+
'--title', 'gchartrb API',
|
26
|
+
'--main', 'README.txt',
|
27
|
+
'--charset', 'utf-8',
|
28
|
+
'--inline-source',
|
29
|
+
'--tab-width', '2',
|
30
|
+
'--line-numbers',
|
31
|
+
]
|
32
|
+
|
33
|
+
Rake::RDocTask.new do |rdoc|
|
34
|
+
rdoc.rdoc_dir = 'doc/'
|
35
|
+
rdoc.options = RDOC_OPTS
|
36
|
+
rdoc.main = "README.txt"
|
37
|
+
rdoc.rdoc_files.add [
|
38
|
+
'README.txt',
|
39
|
+
'History.txt',
|
40
|
+
'lib/**/*.rb'
|
41
|
+
]
|
42
|
+
end
|
22
43
|
# vim: syntax=Ruby
|
data/lib/example.rb
CHANGED
@@ -56,9 +56,6 @@ series_2_x.each_with_index do |v,i|
|
|
56
56
|
series_2_xy[i] = [v-1, series_2_y[i ] ]
|
57
57
|
end
|
58
58
|
|
59
|
-
puts series_1_xy.inspect
|
60
|
-
puts series_2_xy.inspect
|
61
|
-
|
62
59
|
lcxy = GoogleChart::LineChart.new('800x300', "Projected Christmas Cheer for 2007", true)
|
63
60
|
lcxy.data "2006", series_1_xy, '458B00'
|
64
61
|
lcxy.data "2007", series_2_xy, 'CD2626'
|
@@ -68,3 +65,14 @@ lcxy.axis :x, :labels => x_axis_labels
|
|
68
65
|
lcxy.axis :y, :labels => y_axis_labels
|
69
66
|
lcxy.grid :x_step => 3.333, :y_step => 10, :length_segment => 1, :length_blank => 3
|
70
67
|
puts lcxy.to_url
|
68
|
+
|
69
|
+
|
70
|
+
# Plotting a sparklines chart
|
71
|
+
sparklines = GoogleChart::LineChart.new('100x40', nil, false)
|
72
|
+
sparklines.data "Test", [4,3,2,4,6,8,10]
|
73
|
+
sparklines.show_legend = false
|
74
|
+
sparklines.axis :x, :labels => []
|
75
|
+
sparklines.axis :y, :labels => []
|
76
|
+
puts sparklines.to_url(:chxs => "0,000000,10,0,_|1,000000,10,0,_")
|
77
|
+
|
78
|
+
|
data/lib/google_chart/base.rb
CHANGED
@@ -13,19 +13,41 @@ module GoogleChart
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
# Size of the chart in WIDTHxHEIGHT format
|
17
|
+
attr_accessor :chart_size
|
18
|
+
|
19
|
+
# Type of the chart. Usually, you do not need to set this yourself
|
20
|
+
attr_accessor :chart_type
|
21
|
+
|
22
|
+
# Chart title
|
23
|
+
attr_accessor :chart_title
|
24
|
+
|
25
|
+
# RRGGBB hex value for the color of the title
|
26
|
+
attr_accessor :title_color
|
27
|
+
|
28
|
+
# Font size of the title
|
29
|
+
attr_accessor :title_font_size
|
30
|
+
|
31
|
+
# Data encoding to use. Can be one of <tt>:simple</tt>, <tt>:text</tt> or <tt>:extended</tt> (see http://code.google.com/apis/chart/#chart_data)
|
32
|
+
attr_accessor :data_encoding
|
33
|
+
|
34
|
+
# A hash of the params used to construct the URL
|
35
|
+
attr_accessor :params
|
36
|
+
|
37
|
+
# Set to <tt>true</tt> or <tt>false</tt> to show or hide the chart legend. Not applicable for Scatter Chart.
|
38
|
+
attr_accessor :show_legend
|
39
|
+
|
18
40
|
def initialize(chart_size, chart_title)
|
19
41
|
self.params = Hash.new
|
20
42
|
@labels = []
|
21
43
|
@data = []
|
22
44
|
@colors = []
|
23
45
|
@axis = []
|
46
|
+
@range_markers = []
|
24
47
|
self.chart_size = chart_size
|
25
48
|
self.chart_title = chart_title
|
26
49
|
self.data_encoding = :simple
|
27
50
|
self.show_legend = true
|
28
|
-
self.show_labels = false
|
29
51
|
end
|
30
52
|
|
31
53
|
# Generates the URL string that can be used to retrieve the graph image in PNG format.
|
@@ -43,10 +65,11 @@ module GoogleChart
|
|
43
65
|
set_type
|
44
66
|
set_colors
|
45
67
|
set_fill_options
|
46
|
-
add_axis
|
68
|
+
add_axis unless @axis.empty?
|
47
69
|
add_grid
|
48
70
|
add_data
|
49
|
-
|
71
|
+
add_range_markers unless @range_markers.empty?
|
72
|
+
add_labels(@labels) if [:p, :p3].member?(self.chart_type)
|
50
73
|
add_legend(@labels) if show_legend
|
51
74
|
add_title if chart_title.to_s.length > 0
|
52
75
|
|
@@ -111,11 +134,11 @@ module GoogleChart
|
|
111
134
|
# * A <tt>:color</tt> option which specifies the RGB hex value of the color to be used as a fill. For e.g <tt>lc.fill(:chart, :solid, {:color => 'ffcccc'})</tt>
|
112
135
|
#
|
113
136
|
# For <tt>:gradient</tt> type
|
114
|
-
# * An <tt>:angle</
|
137
|
+
# * An <tt>:angle</tt>, which is the angle of the gradient between 0(horizontal) and 90(vertical)
|
115
138
|
# * A <tt>:color</tt> option which is a 2D array containing the colors and an offset each, which specifies at what point the color is pure where: 0 specifies the right-most chart position and 1 the left-most. e,g <tt>lc.fill :background, :gradient, :angle => 0, :color => [['76A4FB',1],['ffffff',0]]</tt>
|
116
139
|
#
|
117
140
|
# For <tt>:stripes</tt> type
|
118
|
-
# * An <tt>:angle</
|
141
|
+
# * An <tt>:angle</tt>, which is the angle of the stripe between 0(horizontal) and 90(vertical)
|
119
142
|
# * A <tt>:color</tt> option which is a 2D array containing the colors and width value each, which must be between 0 and 1 where 1 is the full width of the chart. for e.g <tt>lc.fill :chart, :stripes, :angle => 90, :color => [ ['76A4FB',0.2], ['ffffff',0.2] ]</tt>
|
120
143
|
def fill(bg_or_c, type, options = {})
|
121
144
|
case bg_or_c
|
@@ -162,13 +185,32 @@ module GoogleChart
|
|
162
185
|
#
|
163
186
|
# === Examples
|
164
187
|
# lc.grid :x_step => 5, :y_step => 5, :length_segment => 1, :length_blank => 0
|
165
|
-
#
|
166
|
-
|
188
|
+
#
|
167
189
|
def grid(options={})
|
168
190
|
@grid_str = "#{options[:x_step].to_f},#{options[:y_step].to_f}"
|
169
191
|
if options[:length_segment] or options[:length_blank]
|
170
192
|
@grid_str += ",#{options[:length_segment].to_f},#{options[:length_blank].to_f}"
|
171
193
|
end
|
194
|
+
end
|
195
|
+
|
196
|
+
# Defines a horizontal or vertical range marker. Applicable for line charts and vertical charts
|
197
|
+
#
|
198
|
+
# [+alignment+] can be <tt>:horizontal</tt> or <tt>:vertical</tt>
|
199
|
+
# [+options+] specifies the color, start point and end point
|
200
|
+
#
|
201
|
+
# ==== Options
|
202
|
+
# [<tt>:color</tt>] RRGGBB hex value for the color of the range marker
|
203
|
+
# [<tt>:start_point</tt>] position on the x-axis/y-axis at which the range starts where 0.00 is the left/bottom and 1.00 is the right/top
|
204
|
+
# [<tt>:end_point</tt>] position on the x-axis/y-axis at which the range ends where 0.00 is the left/bottom and 1.00 is the right/top
|
205
|
+
#
|
206
|
+
# ==== Examples
|
207
|
+
# lc.range_marker :horizontal, :color => 'E5ECF9', :start_point => 0.1, :end_point => 0.5
|
208
|
+
# lc.range_marker :vertical, :color => 'a0bae9', :start_point => 0.1, :end_point => 0.5
|
209
|
+
def range_marker(alignment, options={})
|
210
|
+
raise "Invalid alignment specified" unless [:horizontal, :vertical].member?(alignment)
|
211
|
+
str = (alignment == :horizontal ) ? "r" : "R"
|
212
|
+
str += ",#{options[:color]},0,#{options[:start_point]},#{options[:end_point]}"
|
213
|
+
@range_markers << str
|
172
214
|
end
|
173
215
|
|
174
216
|
protected
|
@@ -203,7 +245,7 @@ module GoogleChart
|
|
203
245
|
end
|
204
246
|
|
205
247
|
def add_labels(labels)
|
206
|
-
params.merge!({:chl => labels.collect{|l| l.to_s}.join("|") })
|
248
|
+
params.merge!({:chl => labels.collect{|l| l.to_s}.join("|") }) if self.show_labels
|
207
249
|
end
|
208
250
|
|
209
251
|
def add_legend(labels)
|
@@ -212,6 +254,7 @@ module GoogleChart
|
|
212
254
|
|
213
255
|
def add_title
|
214
256
|
params.merge!({:chtt => chart_title})
|
257
|
+
params.merge!({:chts => title_color}) if title_color
|
215
258
|
end
|
216
259
|
|
217
260
|
def add_axis
|
@@ -281,6 +324,10 @@ module GoogleChart
|
|
281
324
|
params.merge!({ :chg => @grid_str }) if @grid_str
|
282
325
|
end
|
283
326
|
|
327
|
+
def add_range_markers
|
328
|
+
params.merge!({:chm => @range_markers.join("|")})
|
329
|
+
end
|
330
|
+
|
284
331
|
def add_data
|
285
332
|
converted_data = process_data
|
286
333
|
case data_encoding
|
@@ -357,9 +404,7 @@ module GoogleChart
|
|
357
404
|
def max_data_value
|
358
405
|
@max_data or @data.flatten.max
|
359
406
|
end
|
360
|
-
|
361
|
-
## Applicable to Line Charts and Scatter Charts only
|
362
|
-
|
407
|
+
|
363
408
|
def max_x_value
|
364
409
|
@max_x or x_data.flatten.max
|
365
410
|
end
|
@@ -1,15 +1,19 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/base'
|
2
2
|
module GoogleChart
|
3
3
|
class PieChart < Base
|
4
|
-
|
4
|
+
|
5
|
+
# set to <tt>true</tt> or <tt>false</tt> to indicate if this is a 3d chart
|
5
6
|
attr_accessor :is_3d
|
7
|
+
|
8
|
+
# set to <tt>true</tt> or <tt>false</tt> to show or hide pie chart labels
|
9
|
+
attr_accessor :show_labels
|
6
10
|
|
7
11
|
# Initializes a Pie Chart object with a +chart_size+ and +chart_title+. Specify <tt>is_3d</tt> as +true+ to generate a 3D Pie chart
|
8
12
|
def initialize(chart_size='300x200', chart_title=nil, is_3d = false)
|
9
13
|
super(chart_size, chart_title)
|
10
14
|
self.is_3d = is_3d
|
11
|
-
self.show_labels = true
|
12
15
|
self.show_legend = false
|
16
|
+
self.show_labels = true
|
13
17
|
end
|
14
18
|
|
15
19
|
# Set this value to <tt>true</tt> if you want the Pie Chart to be rendered as a 3D image
|
data/lib/test.rb
CHANGED
@@ -9,11 +9,15 @@ pc.data "Orange", 60
|
|
9
9
|
puts "\nPie Chart"
|
10
10
|
puts pc.to_url
|
11
11
|
|
12
|
+
# Pie Chart with no labels
|
13
|
+
pc.show_labels = false
|
14
|
+
puts "\nPie Chart (with no labels)"
|
15
|
+
puts pc.to_url
|
16
|
+
|
12
17
|
# Line Chart
|
13
18
|
lc = GoogleChart::LineChart.new('320x200', "Line Chart", false)
|
14
19
|
lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
|
15
|
-
lc.show_legend = true
|
16
|
-
lc.show_labels = false
|
20
|
+
lc.show_legend = true
|
17
21
|
lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
|
18
22
|
lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
|
19
23
|
lc.axis :y, :range => [0,6], :color => 'ff00ff', :font_size => 16, :alignment => :center
|
@@ -83,12 +87,15 @@ puts lc.to_url
|
|
83
87
|
|
84
88
|
# Adding Extra params
|
85
89
|
lc = GoogleChart::LineChart.new('320x200', "Line Chart", false)
|
90
|
+
lc.title_color = 'ff00ff'
|
86
91
|
lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
|
87
92
|
lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
|
88
93
|
lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
|
89
|
-
lc.max_value 10 # Setting max value for simple line chart
|
90
|
-
|
91
|
-
|
94
|
+
lc.max_value 10 # Setting max value for simple line chart
|
95
|
+
lc.range_marker :horizontal, :color => 'E5ECF9', :start_point => 0.1, :end_point => 0.5
|
96
|
+
lc.range_marker :vertical, :color => 'a0bae9', :start_point => 0.1, :end_point => 0.5
|
97
|
+
puts "\nLine Chart with range markers"
|
98
|
+
puts lc.to_url
|
92
99
|
|
93
100
|
# Bryan Error condition
|
94
101
|
lcxy = GoogleChart::LineChart.new('320x200', "Line XY Chart", true)
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: gchartrb
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.5.
|
7
|
-
date: 2007-12-
|
6
|
+
version: 0.5.2
|
7
|
+
date: 2007-12-14 00:00:00 +08:00
|
8
8
|
summary: Ruby Wrapper for the Google Chart API
|
9
9
|
require_paths:
|
10
10
|
- lib
|