swagchart 1.2.0 → 1.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a0b90ec9a585d353f053ee64cf5c3e7cfa4f11fa
4
- data.tar.gz: 9d6698e336db48e4f0bdd24664331c203b8f7b94
3
+ metadata.gz: 361389686191b4ccf09b4bee58c0b4a36425ffad
4
+ data.tar.gz: 7ce73f89b87c6523c36c19eb8a0644108c9774d1
5
5
  SHA512:
6
- metadata.gz: f4f9bf2efd57e5d1b14249918b8580982f23754890f07aaec7b958b82720bad7e31f1777ca73ba2e9df1197da870740e0244d2af9e84dd6756b518fb729950d5
7
- data.tar.gz: b6517a1a50e024544766edb7af8b893f53555dc2bcc00c133bae3e244da98496c3e6f8c46dd7ba77c4b0baba960cc4842a6428af72c85ddd5daf30375d7c9b3f
6
+ metadata.gz: 16ea22dbb261db396b6471ac711a73c719dd7fa68c10331e8dc95e0803391d0a14e18eb72ba7e3504568c2af3fb38824417adfa2978e20a82daa83c7a916d1ba
7
+ data.tar.gz: 60d37cea617ff2eba35961424dbb7c95e46aa552a8077ea4c186544f3df429d65daab374a8348ea58efb7b136f6d420eedafd6e35c3825779c1954d35c6dd747
data/README.md CHANGED
@@ -14,61 +14,23 @@ Works with Rails, Sinatra and most browsers (including IE 6).
14
14
 
15
15
  ## Usage examples
16
16
 
17
- Line chart
18
-
19
- ```erb
20
- <%= chart :line_chart, User.group_by_day(:created_at).count %>
21
- ```
22
-
23
- Pie chart
24
-
25
- ```erb
26
- <%= chart 'PieChart', Goal.group(:name).count %>
27
- ```
28
-
29
- ### Data
30
-
31
- Pass data as a Array, Hash or "DataTable"
32
-
33
- ```erb
34
- <%= chart :pie_chart, [["Football", 10], ["Basketball", 5]] %>
35
- ```
36
-
37
- ```erb
38
- <%= chart :pie_chart, {"Football" => 10, "Basketball" => 5} %>
39
- ```
40
-
41
- ```erb
42
- <%= chart :pie_chart, [["Sport", "Popularity"], ["Football", 10], ["Basketball", 5]] %>
43
- ```
44
-
45
- Multiple series just work automatically
46
-
47
- ```erb
48
- <%= chart :line_chart, [[1,2,4],[2,3,8],[3,4,16],[4,5,32]], columns: ['x', 'Series 1', 'Series 2'] %>
49
- ```
50
-
51
- No need to define columns if you don't want to
52
-
53
- ```erb
54
- <%= chart :line_chart, [[1,2,4],[2,3,8],[3,4,16],[4,5,32]] %>
55
- ```
56
-
57
- :sparkles: Now brand new: Instead of actual data you can just provide an URL from where the data will be retrieved via an Ajax Get request
58
-
59
- ```erb
60
- <%= chart :line_chart, '/api/line-chart-data' %>
61
- ```
62
-
63
- If you want to use times or dates, do so. They have to be a time or date object!
64
-
65
-
66
- ```erb
67
- <%= line_chart({20.day.ago => 5, Time.at(1368174456) => 4, Time.parse("2013-05-07 00:00:00 UTC") => 7, Date.new(1999,12,24) => 9}) %>
17
+ ```ruby
18
+ chart :line_chart, [{y: 23, x: 42}, {y: 666, x: 999}]
19
+ chart :line_chart, [[23, 42], [666, 999]], columns: ['x', 'y']
20
+ chart :line_chart, [[23, 42], [666, 999]], columns: ['x', 'y'], style: 'width:100%;'
21
+ chart :line_chart, [[1,2,4],[2,3,8],[3,4,16],[4,5,32]]
22
+ chart :line_chart, User.group_by_day(:created_at).count
23
+ chart :bar_chart, [['x', 'y'],[23, 42], [666, 999]]
24
+ chart :pie_chart, Goal.group(:name).count
25
+ chart :geo_map, [{'Country'=>'Germany', 'Population'=>8600000}, {'Country'=>'France', 'Population'=>6500000}]
26
+ chart :line_chart,
27
+ [[0, nil, nil, 5], [1, 'foo', 'Foobar', 2], [2, nil, nil, 6], [3, 'bar', 'Barfoo', 3], [4, nil, nil, 8]],
28
+ columns: ['y', {type: 'string', role: 'annotation'}, {type: 'string', role: 'annotationText'}, 'foo'],
29
+ options: {annotations: {style: 'line'}}
30
+ chart :pie_chart, '/api/pie-chart-data'
68
31
 
69
32
  ```
70
33
 
71
-
72
34
  ## Installation
73
35
 
74
36
  Add this line to your application's Gemfile:
@@ -19,7 +19,7 @@ module Swagchart
19
19
  data = data.to_a if data.is_a?(Hash)
20
20
  if opts[:columns]
21
21
  opts[:columns] = opts[:columns].split(',').map(&:strip) if opts[:columns].is_a?(String)
22
- data.unshift opts[:columns]
22
+ data.unshift opts[:columns] unless data.is_a?(String)
23
23
  end
24
24
  chart_id = ERB::Util.html_escape(opts.delete(:chart_id) || "chart_#{SecureRandom.uuid}")
25
25
  style = 'height:320px;' # dirty hack right here .. you can override that with your style though
@@ -40,16 +40,14 @@ module Swagchart
40
40
  str.split('_').each(&:capitalize!).join('')
41
41
  end
42
42
 
43
- def autocast_data_template(opts = {})
44
- js = ''
45
- js << 'if(Array.isArray(data) && !Array.isArray(data[0])){'
46
- js << 'var keys=[], vals=[], row=[]; for(var k in data[0]){keys.push(k)}; for(var d in data){row=[]; for(var k in keys){row.push(data[d][keys[k]])}; vals.push(row)}; vals.unshift(keys); data = vals;'
47
- js << '}'
48
- js << 'else{data.unshift(Array(data[0].length).join(".").split("."));}' unless opts[:columns]
49
- js << "for(var i=0;i<data.length;i++){for(var j=0;j<data[i].length;j++){if(typeof data[i][j] === 'string'){"
50
- js << 'var pd = Date.parse(data[i][j]); if(!isNaN(pd)){data[i][j] = new Date(pd)};'
51
- js << '}}};console.log(data);'
52
- js
43
+ def jsapi_includes_template
44
+ html = "<script type='text/javascript'>"
45
+ html << "google.load('visualization', '1');"
46
+ html << "google.load('visualization', '1', {packages: ["
47
+ html << "'corechart', 'geochart', 'map', 'treemap', 'annotatedtimeline','sankey', 'orgchart', 'calendar', 'gauge', 'timeline'"
48
+ html << ']});'
49
+ html << '</script>'
50
+ html
53
51
  end
54
52
 
55
53
  def chart_template(opts = {})
@@ -82,14 +80,17 @@ module Swagchart
82
80
  js
83
81
  end
84
82
 
85
- def jsapi_includes_template
86
- html = "<script type='text/javascript'>"
87
- html << "google.load('visualization', '1');"
88
- html << "google.load('visualization', '1', {packages: ["
89
- html << "'corechart', 'geochart', 'map', 'treemap', 'annotatedtimeline','sankey', 'orgchart', 'calendar', 'gauge', 'timeline'"
90
- html << ']});'
91
- html << '</script>'
92
- html
83
+ def autocast_data_template(opts = {})
84
+ js = ''
85
+ js << 'if(Array.isArray(data) && !Array.isArray(data[0])){'
86
+ js << 'var keys=[], vals=[], row=[]; for(var k in data[0]){keys.push(k)}; for(var d in data){row=[]; for(var k in keys){row.push(data[d][keys[k]])}; vals.push(row)}; vals.unshift(keys); data = vals;'
87
+ js << '}'
88
+ js << 'else{data.unshift(Array(data[0].length).join(".").split("."));}' unless opts[:columns]
89
+ js << "data.unshift(#{opts[:columns].to_json});" if opts[:columns]
90
+ js << "for(var i=0;i<data.length;i++){for(var j=0;j<data[i].length;j++){if(typeof data[i][j] === 'string'){"
91
+ js << 'var pd = Date.parse(data[i][j]); if(!isNaN(pd)){data[i][j] = new Date(pd)};'
92
+ js << '}}};'
93
+ js
93
94
  end
94
95
  end
95
96
  end
@@ -1,3 +1,3 @@
1
1
  module Swagchart
2
- VERSION = '1.2.0'.freeze
2
+ VERSION = '1.2.1'.freeze
3
3
  end
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swagchart
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - pachacamac
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-25 00:00:00.000000000 Z
11
+ date: 2016-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,6 +72,7 @@ files:
72
72
  - lib/swagchart/rails.rb
73
73
  - lib/swagchart/sinatra.rb
74
74
  - lib/swagchart/version.rb
75
+ - swagchart-1.2.0.gem
75
76
  - swagchart.gemspec
76
77
  - test/swagchart_test.rb
77
78
  - test/test_helper.rb