chartjs-ror 3.3.0 → 3.3.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 +4 -4
- data/CHANGELOG +5 -0
- data/README.md +25 -0
- data/lib/chartjs/chart_helpers.rb +34 -5
- data/lib/chartjs/version.rb +1 -1
- data/test/chart_helpers_test.rb +51 -0
- data/test/test_helper.rb +3 -0
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1698b08968a158347859a536e4a29b93284df938
|
4
|
+
data.tar.gz: 9b72390f0e1793e186d89c66cdca001777faee8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4df9989001bf288c89d9b397cc30dddcdf32225473033343c77194ddd572b20725df71c6df51dab436a4e353c5b0f8a0a966ab87651ef1e0aed0e35c370400d4
|
7
|
+
data.tar.gz: c5c332161770825d90134ebfc9ec42c2a02ad49ac888a7fce9ed0b787a04f2e34d1941ef802e0869d792521018b372fbafe8fb37ec3d064d6b20588f845aafca
|
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -125,6 +125,31 @@ options = { ... }
|
|
125
125
|
<%= line_chart data, options %>
|
126
126
|
```
|
127
127
|
|
128
|
+
You can also use underscored symbols for keys, instead of the camelcase versions.
|
129
|
+
They will be converted to their lower camelcase counterparts on output.
|
130
|
+
|
131
|
+
```ruby
|
132
|
+
data = {
|
133
|
+
labels: ["January", "February", "March", "April", "May", "June", "July"],
|
134
|
+
datasets: [
|
135
|
+
{
|
136
|
+
label: "My First dataset",
|
137
|
+
background_color: "rgba(220,220,220,0.2)",
|
138
|
+
border_color: "rgba(220,220,220,1)",
|
139
|
+
data: [65, 59, 80, 81, 56, 55, 40]
|
140
|
+
},
|
141
|
+
{
|
142
|
+
label: "My Second dataset",
|
143
|
+
background_color: "rgba(151,187,205,0.2)",
|
144
|
+
border_color: "rgba(151,187,205,1)",
|
145
|
+
data: [28, 48, 40, 19, 86, 27, 90]
|
146
|
+
}
|
147
|
+
]
|
148
|
+
}
|
149
|
+
options = { ... }
|
150
|
+
<%= line_chart data, options %>
|
151
|
+
```
|
152
|
+
|
128
153
|
### Options
|
129
154
|
|
130
155
|
You can put anything in the `options` hash that Chart.js recognises. To pass a JavaScript function as an option value, wrap it in quotation marks to make it a string.
|
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'bigdecimal'
|
3
|
+
|
1
4
|
module Chartjs
|
2
5
|
module ChartHelpers
|
3
6
|
|
@@ -33,16 +36,14 @@ module Chartjs
|
|
33
36
|
canvas = content_tag :canvas, '', id: element_id, class: css_class, width: width, height: height
|
34
37
|
|
35
38
|
script = javascript_tag do
|
36
|
-
# Ensure option string values which are actually JavaScript functions
|
37
|
-
# are treated as functions.
|
38
39
|
<<-END.squish.html_safe
|
39
40
|
(function() {
|
40
41
|
var initChart = function() {
|
41
42
|
var ctx = document.getElementById(#{element_id.to_json});
|
42
43
|
var chart = new Chart(ctx, {
|
43
44
|
type: "#{camel_case type}",
|
44
|
-
data: #{data
|
45
|
-
options: #{options
|
45
|
+
data: #{to_javascript_string data},
|
46
|
+
options: #{to_javascript_string options}
|
46
47
|
});
|
47
48
|
};
|
48
49
|
|
@@ -68,7 +69,35 @@ module Chartjs
|
|
68
69
|
|
69
70
|
# polar_area -> polarArea
|
70
71
|
def camel_case(string)
|
71
|
-
string.
|
72
|
+
string.gsub(/_([a-z])/) { $1.upcase }
|
73
|
+
end
|
74
|
+
|
75
|
+
def to_javascript_string(element)
|
76
|
+
case element
|
77
|
+
when Hash
|
78
|
+
hash_elements = []
|
79
|
+
element.each do |key, value|
|
80
|
+
hash_elements << camel_case(key.to_s).to_json + ':' + to_javascript_string(value)
|
81
|
+
end
|
82
|
+
'{' + hash_elements.join(',') + '}'
|
83
|
+
when Array
|
84
|
+
array_elements = []
|
85
|
+
element.each do |value|
|
86
|
+
array_elements << to_javascript_string(value)
|
87
|
+
end
|
88
|
+
'[' + array_elements.join(',') + ']'
|
89
|
+
when String
|
90
|
+
if element.match(/^\s*function.*}\s*$/m)
|
91
|
+
# Raw-copy function definitions to the output without surrounding quotes.
|
92
|
+
element
|
93
|
+
else
|
94
|
+
element.to_json
|
95
|
+
end
|
96
|
+
when BigDecimal
|
97
|
+
element.to_s
|
98
|
+
else
|
99
|
+
element.to_json
|
100
|
+
end
|
72
101
|
end
|
73
102
|
|
74
103
|
end
|
data/lib/chartjs/version.rb
CHANGED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
require 'chartjs/chart_helpers'
|
4
|
+
|
5
|
+
class ChartHelpersTest < Minitest::Test
|
6
|
+
|
7
|
+
class Foo
|
8
|
+
include Chartjs::ChartHelpers
|
9
|
+
|
10
|
+
def to_js(element)
|
11
|
+
to_javascript_string element
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def setup
|
16
|
+
@subject = Foo.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_to_javascript_string
|
20
|
+
assert_equal '"foo"', @subject.to_js('foo')
|
21
|
+
|
22
|
+
assert_equal '["a",42]', @subject.to_js(['a', 42])
|
23
|
+
|
24
|
+
assert_equal '{"a":42}', @subject.to_js({'a' => 42})
|
25
|
+
|
26
|
+
assert_equal '{"a":function(x) { blah; }}', @subject.to_js({'a' => 'function(x) { blah; }'})
|
27
|
+
|
28
|
+
expected = \
|
29
|
+
'{"a":function(x) {
|
30
|
+
if (x) {
|
31
|
+
foo();
|
32
|
+
}
|
33
|
+
else {
|
34
|
+
bar();
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}'
|
38
|
+
|
39
|
+
assert_equal expected, @subject.to_js({'a' => <<END})
|
40
|
+
function(x) {
|
41
|
+
if (x) {
|
42
|
+
foo();
|
43
|
+
}
|
44
|
+
else {
|
45
|
+
bar();
|
46
|
+
}
|
47
|
+
}
|
48
|
+
END
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chartjs-ror
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Stewart
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -57,6 +57,8 @@ files:
|
|
57
57
|
- lib/chartjs/chart_helpers.rb
|
58
58
|
- lib/chartjs/engine.rb
|
59
59
|
- lib/chartjs/version.rb
|
60
|
+
- test/chart_helpers_test.rb
|
61
|
+
- test/test_helper.rb
|
60
62
|
- vendor/assets/javascripts/Chart.bundle.min.js
|
61
63
|
- vendor/assets/javascripts/Chart.min.js
|
62
64
|
homepage: https://github.com/airblade/chartjs-ror
|
@@ -82,4 +84,6 @@ rubygems_version: 2.5.1
|
|
82
84
|
signing_key:
|
83
85
|
specification_version: 4
|
84
86
|
summary: Simplifies using Chart.js in Rails
|
85
|
-
test_files:
|
87
|
+
test_files:
|
88
|
+
- test/chart_helpers_test.rb
|
89
|
+
- test/test_helper.rb
|