googlecharts 1.6.8 → 1.6.12
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.
- checksums.yaml +7 -0
- data/.gitignore +4 -1
- data/.travis.yml +8 -0
- data/Gemfile +10 -0
- data/History.txt +10 -0
- data/README.markdown +6 -1
- data/Rakefile +12 -1
- data/googlecharts.gemspec +4 -3
- data/lib/gchart/aliases.rb +0 -1
- data/lib/gchart/version.rb +1 -1
- data/lib/gchart.rb +43 -21
- data/spec/gchart_spec.rb +224 -212
- data/spec/theme_spec.rb +8 -8
- metadata +26 -45
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fa6cc0f0e71b51d4dcc1583a1b0a14b4015a41e3
|
4
|
+
data.tar.gz: 083b34ae2a25223b6c56d8a0b9ceefb665e95597
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f68d4956480164bcee5e66c5d3de359023e355e21a9079b5318f740b321706969040ecfd1236c778e365330da55dc65292fa1bf6774262dab66fff111d29f2c5
|
7
|
+
data.tar.gz: e972de17e3f51432b417394d83ab2dd4a715c958bf7bd9c50d2eb3cd43f18bcfd8d6cbd634a23c91377b5c4253923211b5edf5b39e1395e338fbcb12d519968b
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
== 1.6.12
|
2
|
+
* added license to gemspec
|
3
|
+
* added pie_c type for concentric pie charts
|
4
|
+
|
5
|
+
== 1.6.10
|
6
|
+
* added support for custom position on axis with label (parameter chxp)
|
7
|
+
* refactored bar chart
|
8
|
+
* fixed issue #44
|
9
|
+
* allows GChart to take a theme
|
10
|
+
|
1
11
|
== 1.6.8
|
2
12
|
* added title alignment support
|
3
13
|
|
data/README.markdown
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## Googlecharts
|
2
|
+
|
3
|
+
[](https://travis-ci.org/mattetti/googlecharts)
|
4
|
+
|
1
5
|
The goal of this Gem is to make the creation of Google Charts a simple and easy task.
|
2
6
|
|
3
7
|
require 'googlecharts'
|
@@ -291,6 +295,7 @@ Multi Lines Chart Sample :
|
|
291
295
|
|
292
296
|
chart = Gchart.new( :type => 'line',
|
293
297
|
:title => "example title",
|
298
|
+
:theme => :keynote,
|
294
299
|
:data => [[17, 17, 11, 8, 2],[10, 20, 15, 5, 7],[2, 3, 7, 9, 12]],
|
295
300
|
:line_colors => 'e0440e,e62ae5,287eec',
|
296
301
|
:legend => ['courbe 1','courbe 2','courbe 3'],
|
@@ -313,4 +318,4 @@ try yourself
|
|
313
318
|
"http://chart.apis.google.com/chart?chs=300x200&chdl=matt|patrick&chd=s:AAANUIv,JENCN9y&chtt=SDRuby+Fu+level&chf=bg,lg,0,76A4FB,0,ffffff,1&cht=bvs&chco=ff0000,00ff00"
|
314
319
|
|
315
320
|
Gchart.pie(:data => [20,10,15,5,50], :title => 'SDRuby Fu level', :size => '400x200', :labels => ['matt', 'rob', 'patrick', 'ryan', 'jordan'])
|
316
|
-
http://chart.apis.google.com/chart?cht=p&chs=400x200&chd=s:YMSG9&chtt=SDRuby+Fu+level&chl=matt|rob|patrick|ryan|jordan
|
321
|
+
http://chart.apis.google.com/chart?cht=p&chs=400x200&chd=s:YMSG9&chtt=SDRuby+Fu+level&chl=matt|rob|patrick|ryan|jordan
|
data/Rakefile
CHANGED
@@ -1 +1,12 @@
|
|
1
|
-
require '
|
1
|
+
require 'rspec/core/rake_task'
|
2
|
+
|
3
|
+
desc 'Default: run specs.'
|
4
|
+
task :default => :spec
|
5
|
+
|
6
|
+
desc "Run specs"
|
7
|
+
RSpec::Core::RakeTask.new do |task|
|
8
|
+
task.pattern = "**/spec/*_spec.rb"
|
9
|
+
task.rspec_opts = []
|
10
|
+
task.rspec_opts << '--color'
|
11
|
+
task.rspec_opts << '-f documentation'
|
12
|
+
end
|
data/googlecharts.gemspec
CHANGED
@@ -6,12 +6,13 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.name = %q{googlecharts}
|
7
7
|
s.version = GchartInfo::VERSION
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
|
-
s.authors = ["Matt Aimonetti", "Andrey Deryabin"]
|
10
|
-
s.date = %q{
|
9
|
+
s.authors = ["Matt Aimonetti", "Andrey Deryabin", "Pedro Pimentel"]
|
10
|
+
s.date = %q{2015-08-12}
|
11
11
|
s.summary = %q{Generate charts using Google API & Ruby}
|
12
12
|
s.description = %q{Generate charts using Google API & Ruby}
|
13
|
-
s.email = %q{mattaimonetti@gmail.com deriabin@gmail.com}
|
13
|
+
s.email = %q{mattaimonetti@gmail.com deriabin@gmail.com zukunft@gmail.com}
|
14
14
|
s.homepage = %q{http://googlecharts.rubyforge.org/}
|
15
|
+
s.license = 'MIT'
|
15
16
|
|
16
17
|
s.files = `git ls-files`.split("\n")
|
17
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/lib/gchart/aliases.rb
CHANGED
data/lib/gchart/version.rb
CHANGED
data/lib/gchart.rb
CHANGED
@@ -19,7 +19,7 @@ class Gchart
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.types
|
22
|
-
@types ||= ['line', 'line_xy', 'scatter', 'bar', 'venn', 'pie', 'pie_3d', 'jstize', 'sparkline', 'meter', 'map', 'radar']
|
22
|
+
@types ||= ['line', 'line_xy', 'scatter', 'bar', 'venn', 'pie', 'pie_3d', 'pie_c', 'jstize', 'sparkline', 'meter', 'map', 'radar']
|
23
23
|
end
|
24
24
|
|
25
25
|
def self.simple_chars
|
@@ -38,14 +38,14 @@ class Gchart
|
|
38
38
|
'chart.png'
|
39
39
|
end
|
40
40
|
|
41
|
-
attr_accessor :title, :type, :width, :height, :curved, :horizontal, :grouped, :legend, :legend_position, :labels, :data, :encoding, :bar_colors,
|
42
|
-
:title_color, :title_size, :title_alignment, :custom, :axis_with_labels, :axis_labels, :bar_width_and_spacing, :id, :alt, :klass,
|
41
|
+
attr_accessor :title, :type, :width, :height, :curved, :horizontal, :grouped, :overlapped, :legend, :legend_position, :labels, :data, :encoding, :bar_colors,
|
42
|
+
:title_color, :title_size, :title_alignment, :custom, :axis_with_labels, :custom_axis_with_labels, :axis_labels, :bar_width_and_spacing, :id, :alt, :klass,
|
43
43
|
:range_markers, :geographical_area, :map_colors, :country_codes, :axis_range, :filename, :min, :max, :colors, :usemap
|
44
44
|
|
45
45
|
attr_accessor :bg_type, :bg_color, :bg_angle, :chart_type, :chart_color, :chart_angle, :axis_range, :thickness, :new_markers, :grid_lines, :use_ssl
|
46
46
|
|
47
47
|
attr_accessor :min_value, :max_value
|
48
|
-
|
48
|
+
|
49
49
|
types.each do |type|
|
50
50
|
instance_eval <<-DYNCLASSMETH
|
51
51
|
def #{type}(options = {})
|
@@ -73,13 +73,21 @@ class Gchart
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def initialize(options={})
|
76
|
+
# Allow Gchart to take a theme too
|
77
|
+
@theme = options[:theme]
|
78
|
+
options = @theme ? Chart::Theme.load(@theme).to_options.merge(options) : options
|
79
|
+
options.delete(:theme)
|
80
|
+
|
76
81
|
@type = options[:type] || 'line'
|
77
82
|
@data = []
|
78
83
|
@width = 300
|
79
84
|
@height = 200
|
80
85
|
@curved = false
|
81
86
|
@horizontal = false
|
87
|
+
|
82
88
|
@grouped = false
|
89
|
+
@overlapped = false
|
90
|
+
|
83
91
|
@use_ssl = false
|
84
92
|
@encoding = 'simple'
|
85
93
|
# @max_value = 'auto'
|
@@ -106,11 +114,11 @@ class Gchart
|
|
106
114
|
def size=(size='300x200')
|
107
115
|
@width, @height = size.split("x").map { |dimension| dimension.to_i }
|
108
116
|
end
|
109
|
-
|
117
|
+
|
110
118
|
def size
|
111
119
|
"#{width}x#{height}"
|
112
120
|
end
|
113
|
-
|
121
|
+
|
114
122
|
def dimensions
|
115
123
|
# TODO: maybe others?
|
116
124
|
[:line_xy, :scatter].include?(type) ? 2 : 1
|
@@ -125,9 +133,14 @@ class Gchart
|
|
125
133
|
end
|
126
134
|
end
|
127
135
|
|
128
|
-
|
129
|
-
|
130
|
-
|
136
|
+
def bar_presentation
|
137
|
+
if @overlapped
|
138
|
+
'o'
|
139
|
+
elsif @grouped
|
140
|
+
'g'
|
141
|
+
else
|
142
|
+
's'
|
143
|
+
end
|
131
144
|
end
|
132
145
|
|
133
146
|
def bg=(options)
|
@@ -149,7 +162,7 @@ class Gchart
|
|
149
162
|
@chart_angle = options[:angle]
|
150
163
|
end
|
151
164
|
end
|
152
|
-
|
165
|
+
|
153
166
|
def max_value=(max_v)
|
154
167
|
if max_v =~ /false/
|
155
168
|
@max_value = false
|
@@ -174,7 +187,7 @@ class Gchart
|
|
174
187
|
ds.each_with_index do |mds, mds_index|
|
175
188
|
mds[:min_value] ||= min_value
|
176
189
|
mds[:max_value] ||= max_value
|
177
|
-
|
190
|
+
|
178
191
|
if mds_index == 0 && type.to_s == 'bar'
|
179
192
|
# TODO: unless you specify a zero line (using chp or chds),
|
180
193
|
# the min_value of a bar chart is always 0.
|
@@ -235,7 +248,7 @@ class Gchart
|
|
235
248
|
@dataset
|
236
249
|
end
|
237
250
|
end
|
238
|
-
|
251
|
+
|
239
252
|
# Sets of data to handle multiple sets
|
240
253
|
def datasets
|
241
254
|
datasets = []
|
@@ -248,7 +261,7 @@ class Gchart
|
|
248
261
|
end
|
249
262
|
datasets
|
250
263
|
end
|
251
|
-
|
264
|
+
|
252
265
|
def self.jstize(string)
|
253
266
|
# See http://github.com/mattetti/googlecharts/issues#issue/27
|
254
267
|
#URI.escape( string ).gsub("%7C", "|")
|
@@ -313,7 +326,7 @@ class Gchart
|
|
313
326
|
# The title size cannot be set without specifying a color.
|
314
327
|
# A dark key will be used for the title color if no color is specified
|
315
328
|
def set_title
|
316
|
-
title_params = "chtt=#{title}"
|
329
|
+
title_params = "chtt=#{title}".gsub(/\|/,"\n")
|
317
330
|
unless (title_color.nil? && title_size.nil? && title_alignment.nil?)
|
318
331
|
title_params << "&chts=" + (color, size, alignment = (title_color || '454545'), title_size, (title_alignment.to_s[0,1] || 'c')).compact.join(',')
|
319
332
|
end
|
@@ -460,6 +473,11 @@ class Gchart
|
|
460
473
|
"chxt=#{axis_with_labels}"
|
461
474
|
end
|
462
475
|
|
476
|
+
def set_custom_axis_with_labels
|
477
|
+
@custom_axis_with_labels = custom_axis_with_labels.join(',') if @custom_axis_with_labels.is_a?(Array)
|
478
|
+
"chxp=#{custom_axis_with_labels}"
|
479
|
+
end
|
480
|
+
|
463
481
|
def set_axis_labels
|
464
482
|
if axis_labels.is_a?(Array)
|
465
483
|
if RUBY_VERSION.to_f < 1.9
|
@@ -510,6 +528,7 @@ class Gchart
|
|
510
528
|
when 'line' then "lc"
|
511
529
|
when 'line_xy' then "lxy"
|
512
530
|
when 'pie_3d' then "p3"
|
531
|
+
when 'pie_c' then "pc"
|
513
532
|
when 'pie' then "p"
|
514
533
|
when 'venn' then "v"
|
515
534
|
when 'scatter' then "s"
|
@@ -519,7 +538,7 @@ class Gchart
|
|
519
538
|
when 'radar'
|
520
539
|
"r" + (curved? ? 's' : '')
|
521
540
|
when 'bar'
|
522
|
-
"b" + (horizontal? ? "h" : "v") +
|
541
|
+
"b" + (horizontal? ? "h" : "v") + bar_presentation
|
523
542
|
end
|
524
543
|
end
|
525
544
|
|
@@ -530,7 +549,7 @@ class Gchart
|
|
530
549
|
when 'stripes' then 'ls'
|
531
550
|
end
|
532
551
|
end
|
533
|
-
|
552
|
+
|
534
553
|
def number_visible
|
535
554
|
n = 0
|
536
555
|
dataset.each do |mds|
|
@@ -543,7 +562,7 @@ class Gchart
|
|
543
562
|
end
|
544
563
|
""
|
545
564
|
end
|
546
|
-
|
565
|
+
|
547
566
|
# Turns input into an array of axis hashes, dependent on the chart type
|
548
567
|
def convert_dataset(ds)
|
549
568
|
if dimensions == 2
|
@@ -563,7 +582,7 @@ class Gchart
|
|
563
582
|
end
|
564
583
|
ds
|
565
584
|
end
|
566
|
-
|
585
|
+
|
567
586
|
# just an alias
|
568
587
|
def axis_set
|
569
588
|
dataset
|
@@ -577,7 +596,7 @@ class Gchart
|
|
577
596
|
value.nil? ? "_" : value
|
578
597
|
end
|
579
598
|
end
|
580
|
-
|
599
|
+
|
581
600
|
def convert_to_extended_value(number)
|
582
601
|
if number.nil?
|
583
602
|
'__'
|
@@ -586,7 +605,7 @@ class Gchart
|
|
586
605
|
value.nil? ? "__" : value
|
587
606
|
end
|
588
607
|
end
|
589
|
-
|
608
|
+
|
590
609
|
def encode_scaled_dataset(chars, nil_char)
|
591
610
|
dsets = []
|
592
611
|
dataset.each do |ds|
|
@@ -655,6 +674,7 @@ class Gchart
|
|
655
674
|
def query_builder(options="")
|
656
675
|
query_params = instance_variables.sort.map do |var|
|
657
676
|
case var.to_s
|
677
|
+
|
658
678
|
when '@data'
|
659
679
|
set_data unless data == []
|
660
680
|
# Set the graph size
|
@@ -673,7 +693,7 @@ class Gchart
|
|
673
693
|
when '@thickness'
|
674
694
|
set_line_thickness
|
675
695
|
when '@new_markers'
|
676
|
-
|
696
|
+
set_line_markers
|
677
697
|
when '@bg_color'
|
678
698
|
set_colors
|
679
699
|
when '@chart_color'
|
@@ -690,6 +710,8 @@ class Gchart
|
|
690
710
|
set_range_markers
|
691
711
|
when '@grid_lines'
|
692
712
|
set_grid_lines
|
713
|
+
when '@custom_axis_with_labels'
|
714
|
+
set_custom_axis_with_labels
|
693
715
|
when '@geographical_area'
|
694
716
|
set_geographical_area
|
695
717
|
when '@country_codes'
|