lazy_high_charts_tomgi 1.2.2
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/.gitignore +12 -0
- data/.rspec +3 -0
- data/CHANGELOG.md +43 -0
- data/Gemfile +14 -0
- data/MIT-LICENSE +20 -0
- data/README.md +171 -0
- data/Rakefile +17 -0
- data/autotest/discover.rb +1 -0
- data/init.rb +5 -0
- data/lazy_high_charts.gemspec +31 -0
- data/lib/generators/lazy_high_charts/install/install_generator.rb +17 -0
- data/lib/lazy_high_charts.rb +9 -0
- data/lib/lazy_high_charts/core_ext/string.rb +12 -0
- data/lib/lazy_high_charts/high_chart.rb +84 -0
- data/lib/lazy_high_charts/layout_helper.rb +93 -0
- data/lib/lazy_high_charts/options_key_filter.rb +39 -0
- data/lib/lazy_high_charts/railtie.rb +20 -0
- data/lib/lazy_high_charts/version.rb +3 -0
- data/rails/init.rb +2 -0
- data/spec/high_chart_spec.rb +128 -0
- data/spec/lazy_high_charts_spec.rb +134 -0
- data/spec/options_key_filter_spec.rb +28 -0
- data/spec/spec_helper.rb +46 -0
- metadata +111 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
* Aug 31, 2012
|
2
|
+
1. Correct highchart js location
|
3
|
+
[issue#74](https://github.com/michelson/lazy_high_charts/issues/74)
|
4
|
+
2. support series data add javascript event
|
5
|
+
[issue#73](https://github.com/michelson/lazy_high_charts/issues/73)
|
6
|
+
3. remove default html options.
|
7
|
+
[issue#72](https://github.com/michelson/lazy_high_charts/issues/72)
|
8
|
+
|
9
|
+
* Aug 26, 2012
|
10
|
+
1. Troy Anderson (laptop) <troy@tlainvestments.com>
|
11
|
+
Added ability to supply an array of axes or other objects and still use .js_code within the array of hashes.
|
12
|
+
2. David Biehl <lazylodr@gmail.com>
|
13
|
+
removing the window.onload function for AJAX requests
|
14
|
+
|
15
|
+
* Jun 27, 2012
|
16
|
+
update assets path for rails 3.x
|
17
|
+
|
18
|
+
* Jun 25, 2012
|
19
|
+
support inline javascript in click event on ruby runtime.
|
20
|
+
https://github.com/michelson/lazy_high_charts/issues/57
|
21
|
+
|
22
|
+
* Jul 14, 2011
|
23
|
+
add support rails 3.1 rc4 now
|
24
|
+
|
25
|
+
* Jul 13, 2011
|
26
|
+
HighStock support
|
27
|
+
remove some defaults
|
28
|
+
|
29
|
+
Jan 31, 2011
|
30
|
+
* backwards compatibility for rails 2.3.x in rendering callbacks options
|
31
|
+
|
32
|
+
Nov 30,2010
|
33
|
+
* dumped to gem 0.0.1
|
34
|
+
|
35
|
+
Sep 13,2010
|
36
|
+
* truely support rails 3.0(returning is deprecate function,use tap) deshi(xiaods@gmail.com)
|
37
|
+
|
38
|
+
Sep 14,2010
|
39
|
+
* update codebase to support rails3.0 and rspec2
|
40
|
+
|
41
|
+
Oct 8,2010
|
42
|
+
* update rake.it works now!
|
43
|
+
|
data/Gemfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
source "http://ruby.taobao.org"
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in lazy_high_charts.gemspec
|
4
|
+
gemspec
|
5
|
+
|
6
|
+
group :test, :development do # This causes the plugins to NOT load
|
7
|
+
gem 'webrat','~> 0.7'
|
8
|
+
gem 'rspec', '~> 2.0'
|
9
|
+
gem 'rails'
|
10
|
+
gem 'ZenTest'
|
11
|
+
gem 'autotest'
|
12
|
+
end
|
13
|
+
|
14
|
+
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2008-2010 Miguel Michelson Martinez
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,171 @@
|
|
1
|
+
# LazyHighCharts
|
2
|
+
|
3
|
+
Easily displaying Highcharts graphs with gem style.
|
4
|
+
[](http://travis-ci.org/michelson/lazy_high_charts)
|
5
|
+
|
6
|
+
## Notice
|
7
|
+
latest version: 1.2.2
|
8
|
+
[ChangeLog](https://github.com/xiaods/lazy_high_charts/blob/master/CHANGELOG.md)
|
9
|
+
|
10
|
+
### Installation instructions for Rails 3
|
11
|
+
|
12
|
+
### Installing it by rubygems
|
13
|
+
To install it, you just need to add it to your Gemfile:
|
14
|
+
gem 'lazy_high_charts'
|
15
|
+
|
16
|
+
And then run this to install the javascript files:
|
17
|
+
rails g lazy_high_charts:install
|
18
|
+
|
19
|
+
### Installing it as a plugin for rails 2.3.x
|
20
|
+
|
21
|
+
script/plugin install git://github.com/michelson/lazy_high_charts.git ##(for rails 2)
|
22
|
+
|
23
|
+
rails plugin install git://github.com/michelson/lazy_high_charts.git ##(for rails 3)
|
24
|
+
|
25
|
+
### HighStocks
|
26
|
+
LazyHighCharts now compatible with beta HighStock, http://www.highcharts.com/stock/demo/
|
27
|
+
|
28
|
+
## Usage
|
29
|
+
|
30
|
+
About javascript Assets notes:
|
31
|
+
|
32
|
+
### For Rails 3.2.x
|
33
|
+
1. add your highcart js to app/assets/javascripts/application.js
|
34
|
+
````
|
35
|
+
//= require highcharts
|
36
|
+
````
|
37
|
+
|
38
|
+
### For Rails 2.x/3.0.x
|
39
|
+
|
40
|
+
1. you need manually put jquery/highcharts js to public/javascript
|
41
|
+
2. modify your layout html
|
42
|
+
Sample Code:
|
43
|
+
````
|
44
|
+
<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" %>
|
45
|
+
<%= javascript_include_tag :highcharts %>
|
46
|
+
````
|
47
|
+
|
48
|
+
3. add gem name in your config/environment.rb
|
49
|
+
````
|
50
|
+
config.gem "lazy_high_charts"
|
51
|
+
````
|
52
|
+
4. Done!
|
53
|
+
|
54
|
+
### Demo Usage in Controller:
|
55
|
+
````
|
56
|
+
@h = LazyHighCharts::HighChart.new('graph') do |f|
|
57
|
+
f.options[:chart][:defaultSeriesType] = "area"
|
58
|
+
f.series(:name=>'John', :data=>[3, 20, 3, 5, 4, 10, 12 ,3, 5,6,7,7,80,9,9])
|
59
|
+
f.series(:name=>'Jane', :data=> [1, 3, 4, 3, 3, 5, 4,-46,7,8,8,9,9,0,0,9] )
|
60
|
+
end
|
61
|
+
````
|
62
|
+
|
63
|
+
Without overriding entire option , (only change a specific option index):
|
64
|
+
|
65
|
+
````
|
66
|
+
@h = LazyHighCharts::HighChart.new('graph') do |f|
|
67
|
+
#.....
|
68
|
+
f.options[:chart][:defaultSeriesType] = "area"
|
69
|
+
f.options[:chart][:inverted] = true
|
70
|
+
f.options[:legend][:layout] = "horizontal"
|
71
|
+
f.options[:xAxis][:categories] = ["uno" ,"dos" , "tres" , "cuatro"]
|
72
|
+
#......
|
73
|
+
````
|
74
|
+
|
75
|
+
Overriding entire option:
|
76
|
+
|
77
|
+
````
|
78
|
+
@h = LazyHighCharts::HighChart.new('graph') do |f|
|
79
|
+
#.....
|
80
|
+
f.xAxis(:categories => @days.reverse! , :labels=>{:rotation=>-45 , :align => 'right'})
|
81
|
+
f.chart({:defaultSeriesType=>"spline" , :renderTo => "myRenderArea" , :inverted => true})
|
82
|
+
#.....
|
83
|
+
````
|
84
|
+
|
85
|
+
If you want to use this syntax and still be able to build option step-by-step without overriding:
|
86
|
+
|
87
|
+
````
|
88
|
+
@h = LazyHighCharts::HighChart.new('graph') do |f|
|
89
|
+
#.....
|
90
|
+
f.xAxis!(:categories => @days.reverse! , :labels=>{:rotation=>-45 , :align => 'right'})
|
91
|
+
f.chart!({:defaultSeriesType=>"spline" , :renderTo => "myRenderArea" , :inverted => true})
|
92
|
+
#.....
|
93
|
+
````
|
94
|
+
|
95
|
+
Using the datetime axis type:
|
96
|
+
|
97
|
+
````
|
98
|
+
@h = LazyHighCharts::HighChart.new('graph', style: '') do |f|
|
99
|
+
f.options[:chart][:defaultSeriesType] = "area"
|
100
|
+
f.options[:plotOptions] = {area: {pointInterval: 1.day, pointStart: 10.days.ago}}
|
101
|
+
f.series(:name=>'John', :data=>[3, 20, 3, 5, 4, 10, 12 ,3, 5,6,7,7,80,9,9])
|
102
|
+
f.series(:name=>'Jane', :data=> [1, 3, 4, 3, 3, 5, 4,-46,7,8,8,9,9,0,0,9])
|
103
|
+
f.xAxis(type: :datetime)
|
104
|
+
end
|
105
|
+
````
|
106
|
+
A datetime axis [example](http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/xaxis/type-datetime/)
|
107
|
+
|
108
|
+
|
109
|
+
Usage in layout:
|
110
|
+
````
|
111
|
+
<%= javascript_include_tag :highcharts %>
|
112
|
+
````
|
113
|
+
|
114
|
+
Usage in view:
|
115
|
+
````
|
116
|
+
<%= high_chart("my_id", @h) %>
|
117
|
+
````
|
118
|
+
|
119
|
+
You can pass in additional javascript into to the view with a block, this will be executed before the high chart is called
|
120
|
+
|
121
|
+
````
|
122
|
+
<%= high_chart("my_id", @h) do |c| %>
|
123
|
+
alert('hello')
|
124
|
+
<%end %>
|
125
|
+
````
|
126
|
+
To include javascript function calls or callbacks you can use the js_code method on your string`"function".js_code`:
|
127
|
+
|
128
|
+
````
|
129
|
+
f.options[:plotOptions] = {
|
130
|
+
:column => { :events => { :click => %|function() { window.location = "http://www.highcharts.com" }|.js_code } }
|
131
|
+
}
|
132
|
+
````
|
133
|
+
|
134
|
+
|
135
|
+
## HighStock Support:
|
136
|
+
|
137
|
+
Just call HighChart Helper this way:
|
138
|
+
````
|
139
|
+
<%= high_stock("my_id", @h) %>
|
140
|
+
````
|
141
|
+
|
142
|
+
## Option reference:
|
143
|
+
|
144
|
+
http://www.highcharts.com/ref/
|
145
|
+
|
146
|
+
## HighCharts License:
|
147
|
+
|
148
|
+
http://www.highcharts.com/license
|
149
|
+
|
150
|
+
|
151
|
+
## Contributing
|
152
|
+
|
153
|
+
We're open to any contribution. It has to be tested properly though.
|
154
|
+
|
155
|
+
* [Fork](http://help.github.com/forking/) the project
|
156
|
+
* Do your changes and commit them to your repository
|
157
|
+
* Test your changes. We won't accept any untested contributions (except if they're not testable).
|
158
|
+
* Create an [issue](https://github.com/michelson/lazy_high_charts/issues) with a link to your commits.
|
159
|
+
|
160
|
+
Contributer List:
|
161
|
+
* [Troy Anderson](https://github.com/troya2)
|
162
|
+
* [David Biehl](https://github.com/lazylodr)
|
163
|
+
|
164
|
+
Thanks for Troy & David
|
165
|
+
## Maintainers
|
166
|
+
* Miguel Michelson Martinez [github/michelson](https://github.com/michelson)
|
167
|
+
* Deshi Xiao [github/xiaods](https://github.com/xiaods)
|
168
|
+
|
169
|
+
## License
|
170
|
+
* Copyright (c) 2011,2012 Deshi Xiao,released under the MIT license
|
171
|
+
* Copyright (c) 2010 Miguel Michelson Martinez, released under the MIT license
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rake'
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
require 'bundler'
|
6
|
+
|
7
|
+
Bundler::GemHelper.install_tasks
|
8
|
+
|
9
|
+
desc 'Default: run unit specs.'
|
10
|
+
task :default => :spec
|
11
|
+
|
12
|
+
desc 'Test the lazy_high_charts plugin.'
|
13
|
+
RSpec::Core::RakeTask.new('spec') do |t|
|
14
|
+
t.pattern = FileList['spec/**/*_spec.rb']
|
15
|
+
end
|
16
|
+
|
17
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
Autotest.add_discovery { "rspec2" }
|
data/init.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
3
|
+
require 'lazy_high_charts/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "lazy_high_charts_tomgi"
|
7
|
+
s.version = LazyHighCharts::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ['Miguel Michelson Martinez','Deshi Xiao']
|
10
|
+
s.email = ['miguelmichelson@gmail.com','xiaods@gmail.com']
|
11
|
+
s.homepage = "https://github.com/xiaods/lazy_high_charts"
|
12
|
+
s.summary = "lazy higcharts gem for rails"
|
13
|
+
s.description = "use highcharts js libary to visualization your data by rubygem/rails"
|
14
|
+
|
15
|
+
s.extra_rdoc_files = [ "README.md", "CHANGELOG.md" ]
|
16
|
+
s.rdoc_options = [ "--charset=UTF-8" ]
|
17
|
+
|
18
|
+
s.required_rubygems_version = "~> 1.3"
|
19
|
+
|
20
|
+
s.add_dependency "bundler", "~> 1.0"
|
21
|
+
s.add_dependency "hash-deep-merge"
|
22
|
+
|
23
|
+
s.description = <<-DESC
|
24
|
+
lazy_high_charts is a Rails 3.x gem for displaying Highcharts graphs.
|
25
|
+
DESC
|
26
|
+
|
27
|
+
s.files = `git ls-files`.split("\n")
|
28
|
+
s.executables = `git ls-files`.split("\n").select{|f| f =~ /^bin/}
|
29
|
+
s.require_path = 'lib'
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module LazyHighCharts
|
2
|
+
class InstallGenerator < Rails::Generators::Base
|
3
|
+
desc "This generator install highcharts javascripts"
|
4
|
+
|
5
|
+
def install_highcharts(opts = nil)
|
6
|
+
say_status("installing", "Highcharts javascript(code.highcharts.com/stock version)", :green)
|
7
|
+
if ::Rails::VERSION::MAJOR == 3 && ::Rails::VERSION::MINOR >= 1
|
8
|
+
get "http://code.highcharts.com/stock/highstock.js", "vendor/assets/javascripts/highcharts.js"
|
9
|
+
else
|
10
|
+
get "http://code.highcharts.com/stock/highstock.js","public/javascripts/highcharts.js"
|
11
|
+
end
|
12
|
+
rescue OpenURI::HTTPError
|
13
|
+
say_status("warning", "could not find Highcharts javascript file", :yellow)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), *%w[lazy_high_charts core_ext string])
|
2
|
+
require File.join(File.dirname(__FILE__), *%w[lazy_high_charts options_key_filter])
|
3
|
+
require File.join(File.dirname(__FILE__), *%w[lazy_high_charts high_chart])
|
4
|
+
require File.join(File.dirname(__FILE__), *%w[lazy_high_charts layout_helper])
|
5
|
+
require File.join(File.dirname(__FILE__), *%w[lazy_high_charts railtie]) if defined?(::Rails::Railtie)
|
6
|
+
|
7
|
+
module LazyHighCharts
|
8
|
+
|
9
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module LazyHighCharts
|
2
|
+
class HighChart
|
3
|
+
SERIES_OPTIONS = %w(data dataParser dataURL index legendIndex name stack type xAxis yAxis)
|
4
|
+
|
5
|
+
attr_accessor :data, :options, :placeholder, :html_options
|
6
|
+
alias :canvas :placeholder
|
7
|
+
alias :canvas= :placeholder=
|
8
|
+
|
9
|
+
def initialize(canvas = nil, html_opts = {})
|
10
|
+
|
11
|
+
@collection_filter = nil
|
12
|
+
self.tap do |high_chart|
|
13
|
+
high_chart.data ||= []
|
14
|
+
high_chart.options ||= {}
|
15
|
+
high_chart.defaults_options
|
16
|
+
high_chart.html_options ||={}
|
17
|
+
high_chart.canvas = canvas if canvas
|
18
|
+
yield high_chart if block_given?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# title: legend: xAxis: yAxis: tooltip: credits: :plotOptions
|
23
|
+
def defaults_options
|
24
|
+
self.title({ :text=>"example test title from highcharts gem"})
|
25
|
+
self.legend({ :layout=>"vertical", :style=>{} })
|
26
|
+
self.xAxis({})
|
27
|
+
self.yAxis({ :title=> {:text=> nil}, :labels=>{} })
|
28
|
+
self.tooltip({ :enabled=>true })
|
29
|
+
self.credits({ :enabled => false})
|
30
|
+
self.plotOptions({ :areaspline => { } })
|
31
|
+
self.chart({ :defaultSeriesType=>"line" , :renderTo => nil})
|
32
|
+
self.subtitle({})
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
# Pass other methods through to the javascript high_chart object.
|
37
|
+
#
|
38
|
+
# For instance: <tt>high_chart.grid(:color => "#699")</tt>
|
39
|
+
def method_missing(meth, opts = {})
|
40
|
+
if meth.to_s.end_with? '!'
|
41
|
+
deep_merge_options meth[0..-2].to_sym, opts
|
42
|
+
else
|
43
|
+
merge_options meth, opts
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# Add a simple series to the graph:
|
48
|
+
#
|
49
|
+
# data = [[0,5], [1,5], [2,5]]
|
50
|
+
# @high_chart.series :name=>'Updated', :data=>data
|
51
|
+
# @high_chart.series :name=>'Updated', :data=>[5, 1, 6, 1, 5, 4, 9]
|
52
|
+
def series(opts = {})
|
53
|
+
@data ||= []
|
54
|
+
if not opts.empty?
|
55
|
+
@data << OptionsKeyFilter.filter(opts.merge(:name => opts[:name], :data => opts[:data]))
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def series_options
|
62
|
+
@options.reject {|k,v| SERIES_OPTIONS.include?(k.to_s) == false}
|
63
|
+
end
|
64
|
+
|
65
|
+
def merge_options(name, opts)
|
66
|
+
@options.merge! name => opts
|
67
|
+
end
|
68
|
+
|
69
|
+
def deep_merge_options(name, opts)
|
70
|
+
@options.deep_merge! name => opts
|
71
|
+
end
|
72
|
+
|
73
|
+
def arguments_to_options(args)
|
74
|
+
if args.blank?
|
75
|
+
{:show => true}
|
76
|
+
elsif args.is_a? Array
|
77
|
+
args.first
|
78
|
+
else
|
79
|
+
args
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module LazyHighCharts
|
4
|
+
module LayoutHelper
|
5
|
+
|
6
|
+
def high_chart(placeholder, object , &block)
|
7
|
+
object.html_options.merge!({:id=>placeholder})
|
8
|
+
object.options[:chart][:renderTo] = placeholder
|
9
|
+
high_graph(placeholder,object , &block).concat(content_tag("div","", object.html_options))
|
10
|
+
end
|
11
|
+
|
12
|
+
def high_stock(placeholder, object , &block)
|
13
|
+
object.html_options.merge!({:id=>placeholder})
|
14
|
+
object.options[:chart][:renderTo] = placeholder
|
15
|
+
high_graph_stock(placeholder,object , &block).concat(content_tag("div","", object.html_options))
|
16
|
+
end
|
17
|
+
|
18
|
+
def high_graph(placeholder, object, &block)
|
19
|
+
build_html_output("Chart", placeholder, object, &block)
|
20
|
+
end
|
21
|
+
|
22
|
+
def high_graph_stock(placeholder, object, &block)
|
23
|
+
build_html_output("StockChart", placeholder, object, &block)
|
24
|
+
end
|
25
|
+
|
26
|
+
def build_html_output(type, placeholder, object, &block)
|
27
|
+
options_collection = [ generate_json_from_hash(OptionsKeyFilter.filter(object.options)) ]
|
28
|
+
options_collection << %|"series": [#{generate_json_from_array(object.data)}]|
|
29
|
+
|
30
|
+
core_js =<<-EOJS
|
31
|
+
var options, chart;
|
32
|
+
options = { #{options_collection.join(',')} };
|
33
|
+
#{capture(&block) if block_given?}
|
34
|
+
chart = new Highcharts.#{type}(options);
|
35
|
+
EOJS
|
36
|
+
|
37
|
+
if defined?(request) && request.respond_to?(:xhr?) && request.xhr?
|
38
|
+
graph =<<-EOJS
|
39
|
+
<script type="text/javascript">
|
40
|
+
(function() {
|
41
|
+
#{core_js}
|
42
|
+
})()
|
43
|
+
</script>
|
44
|
+
EOJS
|
45
|
+
else
|
46
|
+
graph =<<-EOJS
|
47
|
+
<script type="text/javascript">
|
48
|
+
(function() {
|
49
|
+
var onload = window.onload;
|
50
|
+
window.onload = function(){
|
51
|
+
if (typeof onload == "function") onload();
|
52
|
+
#{core_js}
|
53
|
+
};
|
54
|
+
})()
|
55
|
+
</script>
|
56
|
+
EOJS
|
57
|
+
end
|
58
|
+
|
59
|
+
if defined?(raw)
|
60
|
+
return raw(graph)
|
61
|
+
else
|
62
|
+
return graph
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def generate_json_from_hash hash
|
70
|
+
hash.each_pair.map do |key, value|
|
71
|
+
k = key.to_s.camelize.gsub!(/\b\w/) { $&.downcase }
|
72
|
+
%|"#{k}": #{generate_json_from_value value}|
|
73
|
+
end.flatten.join(',')
|
74
|
+
end
|
75
|
+
|
76
|
+
def generate_json_from_value value
|
77
|
+
if value.is_a? Hash
|
78
|
+
%|{ #{generate_json_from_hash value} }|
|
79
|
+
elsif value.is_a? Array
|
80
|
+
%|[ #{generate_json_from_array value} ]|
|
81
|
+
elsif value.respond_to?(:js_code) && value.js_code?
|
82
|
+
value
|
83
|
+
else
|
84
|
+
value.to_json
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def generate_json_from_array array
|
89
|
+
array.map{|value| generate_json_from_value(value)}.join(",")
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#
|
2
|
+
# A way to filter certain keys of data provided to the LazyHighCharts#series method and the LazyHighCharts#options
|
3
|
+
#
|
4
|
+
# Add methods or keys to the FILTER_MAP hash to have them applied to the options in a series
|
5
|
+
# In the FILTER_MAP, the hash keys are methods, and the values are arrays of the hash keys the filter should be
|
6
|
+
# applied to
|
7
|
+
#
|
8
|
+
# Be careful that it is OK to filter the hash keys you specify for every key of the options or series hash
|
9
|
+
#
|
10
|
+
module LazyHighCharts
|
11
|
+
module OptionsKeyFilter
|
12
|
+
def self.milliseconds value
|
13
|
+
value * 1000
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.date_to_js_code date
|
17
|
+
"Date.UTC(#{date.year}, #{date.month - 1}, #{date.day})".js_code
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.filter options
|
21
|
+
new_options = options.map do |k, v|
|
22
|
+
if v.is_a? ::Hash
|
23
|
+
v = filter v
|
24
|
+
else
|
25
|
+
FILTER_MAP.each_pair do |method, matchers|
|
26
|
+
v = method.call(v) if matchers.include?(k)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
[k, v]
|
30
|
+
end
|
31
|
+
Hash[new_options]
|
32
|
+
end
|
33
|
+
|
34
|
+
FILTER_MAP = {
|
35
|
+
method(:milliseconds) => [:pointInterval],
|
36
|
+
method(:date_to_js_code) => [:pointStart]
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'lazy_high_charts'
|
2
|
+
require 'lazy_high_charts/layout_helper.rb'
|
3
|
+
|
4
|
+
require 'rails'
|
5
|
+
|
6
|
+
module LazyHighCharts
|
7
|
+
|
8
|
+
class Railtie < ::Rails::Railtie
|
9
|
+
config.before_configuration do
|
10
|
+
config.action_view.javascript_expansions[:high_charts] = %w(highcharts)
|
11
|
+
end
|
12
|
+
|
13
|
+
initializer 'lazy_high_charts.initialize' do
|
14
|
+
ActiveSupport.on_load(:action_view) do
|
15
|
+
include LazyHighCharts::LayoutHelper
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/rails/init.rb
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
Record = Struct.new(:frequency, :amplitude)
|
4
|
+
|
5
|
+
describe "HighChart" do
|
6
|
+
before(:each) do
|
7
|
+
@collection = [Record.new(1,15), Record.new(2,30), Record.new(4,40)]
|
8
|
+
@data = [ [1,15], [2,30], [4,40]]
|
9
|
+
|
10
|
+
@placeholder = "placeholder"
|
11
|
+
@html_options = {:class => "stylin"}
|
12
|
+
@options = {:bars => {:show => true}}
|
13
|
+
|
14
|
+
@flot = LazyHighCharts::HighChart.new(@placeholder, @html_options) {|chart| chart.options = @options }
|
15
|
+
end
|
16
|
+
|
17
|
+
# this is almost all flotomatic stuff
|
18
|
+
describe "initialization" do
|
19
|
+
it "should take an optional 'placeholder' argument" do
|
20
|
+
LazyHighCharts::HighChart.new(@placeholder).placeholder.should == @placeholder
|
21
|
+
LazyHighCharts::HighChart.new.placeholder.should == nil
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should take an optional html_options argument (defaulting to 300px height)" do
|
25
|
+
LazyHighCharts::HighChart.new(@html_options).placeholder.should == @html_options
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should set options by default" do
|
29
|
+
LazyHighCharts::HighChart.new.options.should == {
|
30
|
+
:title=>{:text=>"example test title from highcharts gem"},
|
31
|
+
:legend=>{:layout=>"vertical", :style=>{}},
|
32
|
+
:xAxis=>{},
|
33
|
+
:yAxis=>{:title=>{:text=>nil}, :labels=>{}},
|
34
|
+
:tooltip=>{:enabled=>true},
|
35
|
+
:credits=>{:enabled=>false},
|
36
|
+
:plotOptions=>{:areaspline=>{}},
|
37
|
+
:chart=>{:defaultSeriesType=>"line", :renderTo=>nil},
|
38
|
+
:subtitle=>{}}
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should set data empty by default" do
|
42
|
+
LazyHighCharts::HighChart.new.data.should == []
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should take a block setting attributes" do
|
46
|
+
chart = LazyHighCharts::HighChart.new {|f| f.data = @data ; f.options = @options }
|
47
|
+
chart.data.should == @data
|
48
|
+
chart.options.should == @options
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should take a block setting attributes" do
|
52
|
+
chart = LazyHighCharts::HighChart.new {|f| f.options[:legend][:layout] = "horizontal" }
|
53
|
+
chart.options[:legend][:layout].should == "horizontal"
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should take a block setting attributes" do
|
57
|
+
chart = LazyHighCharts::HighChart.new {|f| f.options[:range_selector] = {}; f.options[:range_selector][:selected] = 1}
|
58
|
+
chart.options[:range_selector][:selected].should == 1
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should change a block data without overriding options" do
|
62
|
+
chart = LazyHighCharts::HighChart.new('graph') do |f|
|
63
|
+
f.series(:name=>'John', :data=>[3, 20])
|
64
|
+
f.series(:name=>'Jane',:data=> [1, 3] )
|
65
|
+
# without overriding
|
66
|
+
f.options[:chart][:defaultSeriesType] = "area"
|
67
|
+
f.options[:chart][:inverted] = true
|
68
|
+
f.options[:legend][:layout] = "horizontal"
|
69
|
+
f.options[:xAxis][:categories] = ["uno" ,"dos" , "tres" , "cuatro"]
|
70
|
+
end
|
71
|
+
chart.data.should == [{:name=>"John", :data=>[3, 20]}, {:name=>"Jane", :data=>[1, 3]}]
|
72
|
+
chart.options[:legend][:layout].should == "horizontal"
|
73
|
+
chart.options[:xAxis][:categories].should == ["uno" ,"dos" , "tres" , "cuatro"]
|
74
|
+
chart.options[:chart][:defaultSeriesType].should == "area"
|
75
|
+
chart.options[:chart][:inverted].should == true
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should change a block data with overriding entire options" do
|
79
|
+
chart = LazyHighCharts::HighChart.new('graph') do |f|
|
80
|
+
f.series(:name=>'John', :data=>[3, 20])
|
81
|
+
f.series(:name=>'Jane', :data=>[1, 3] )
|
82
|
+
f.title({ :text=>"example test title from controller"})
|
83
|
+
# without overriding
|
84
|
+
f.xAxis(:categories => ["uno" ,"dos" , "tres" , "cuatro"] , :labels=>{:rotation=>-45 , :align => 'right'})
|
85
|
+
f.chart({:defaultSeriesType=>"spline" , :renderTo => "myRenderArea" , :inverted => true})
|
86
|
+
end
|
87
|
+
chart.options[:xAxis][:categories].should == ["uno" ,"dos" , "tres" , "cuatro"]
|
88
|
+
chart.options[:xAxis][:labels][:rotation].should == -45
|
89
|
+
chart.options[:xAxis][:labels][:align].should == "right"
|
90
|
+
chart.options[:chart][:defaultSeriesType].should == "spline"
|
91
|
+
chart.options[:chart][:renderTo].should == "myRenderArea"
|
92
|
+
chart.options[:chart][:inverted].should == true
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should have subtitles" do
|
96
|
+
chart = LazyHighCharts::HighChart.new('graph') do |f|
|
97
|
+
f.series(:name=>'John',:data=> [3, 20])
|
98
|
+
f.series(:name=>'Jane', :data=>[1, 3] )
|
99
|
+
f.title({ :text=>"example test title from controller"})
|
100
|
+
# without overriding
|
101
|
+
f.x_axis(:categories => ["uno" ,"dos" , "tres" , "cuatro"] , :labels=>{:rotation=>-45 , :align => 'right'})
|
102
|
+
f.chart({:defaultSeriesType=>"spline" , :renderTo => "myRenderArea" , :inverted => true})
|
103
|
+
f.subtitle({:text=>"Bar"})
|
104
|
+
end
|
105
|
+
chart.options[:subtitle][:text].should == "Bar"
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'should override entire option by default when resetting it again' do
|
109
|
+
chart = LazyHighCharts::HighChart.new('graph') do |f|
|
110
|
+
f.xAxis(categories: [3, 5, 7])
|
111
|
+
f.xAxis(title: {text: 'x title'})
|
112
|
+
end
|
113
|
+
chart.options[:xAxis][:categories].should == nil
|
114
|
+
chart.options[:xAxis][:title][:text].should == 'x title'
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'should allow to build options step by step without overriding previously set values' do
|
118
|
+
chart = LazyHighCharts::HighChart.new('graph') do |f|
|
119
|
+
f.xAxis!(categories: [3, 5, 7])
|
120
|
+
f.xAxis!(title: {text: 'x title'})
|
121
|
+
end
|
122
|
+
chart.options[:xAxis][:categories].should == [3, 5, 7]
|
123
|
+
chart.options[:xAxis][:title][:text].should == 'x title'
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
@@ -0,0 +1,134 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
+
|
4
|
+
describe HighChartsHelper do
|
5
|
+
include LazyHighCharts::LayoutHelper
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@class = "stylin"
|
9
|
+
@placeholder = "placeholder"
|
10
|
+
@chart = LazyHighCharts::HighChart.new(@placeholder)
|
11
|
+
@data = "data"
|
12
|
+
@options = "options"
|
13
|
+
end
|
14
|
+
|
15
|
+
context "layout_helper" do
|
16
|
+
it "should return a div with an id of high_chart object" do
|
17
|
+
high_chart(@placeholder, @chart).should have_selector('div', :id => @placeholder)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should return a script" do
|
21
|
+
hc = LazyHighCharts::HighChart.new("placeholder")
|
22
|
+
high_chart(hc.placeholder, hc).should have_selector('script')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "high_chart_graph" do
|
27
|
+
describe "ready function" do
|
28
|
+
it "should be a javascript script" do
|
29
|
+
high_chart(@placeholder, @chart).should have_selector('script', :type => 'text/javascript')
|
30
|
+
high_chart(@placeholder, @chart).should match(/}\)\(\)/)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should assign to the onload event" do
|
34
|
+
high_chart(@placeholder, @chart).should include('window.onload = function(){')
|
35
|
+
end
|
36
|
+
it "should call any existing onload function" do
|
37
|
+
high_chart(@placeholder, @chart).should match(/onload = window.onload;/)
|
38
|
+
high_chart(@placeholder, @chart).should match(/if \(typeof onload == "function"\)\s*onload\(\)/)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
describe "initialize HighChart" do
|
42
|
+
it "should set variables `chart` `options`" do
|
43
|
+
high_chart(@placeholder, @chart).should include('var options, chart;')
|
44
|
+
end
|
45
|
+
it "should set Chart data" do
|
46
|
+
high_chart(@placeholder, @chart).should match(/chart\s+=\s+new\s+Highcharts.Chart/)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should set chart renderTo" do
|
50
|
+
high_chart(@placeholder, @chart).should match(/"renderTo": "placeholder"/)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should set Chart Stock" do
|
54
|
+
high_stock(@placeholder, @chart).should match(/chart\s+=\s+new\s+Highcharts.StockChart/)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
it "should take a block setting attributes" do
|
62
|
+
chart = LazyHighCharts::HighChart.new {|f|
|
63
|
+
f.options[:rangeSelector] = {:selected=>1};
|
64
|
+
f.series(:type =>"spline",
|
65
|
+
:name =>"Historias",
|
66
|
+
:pointInterval => (1.day.to_i * 1000) ,
|
67
|
+
:pointStart => (Time.now.to_i * 1000),
|
68
|
+
:data => [0,1,2,3,5,6,0,7]
|
69
|
+
)
|
70
|
+
}
|
71
|
+
chart.options[:rangeSelector][:selected].should == 1
|
72
|
+
high_chart(@placeholder, chart).should match(/rangeSelector/)
|
73
|
+
high_chart(@placeholder, chart).should match(/xAxis/)
|
74
|
+
high_chart(@placeholder, chart).should match(/yAxis/)
|
75
|
+
high_chart(@placeholder, chart).should match(/series/)
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
it "should take a block setting attributes" do
|
81
|
+
chart = LazyHighCharts::HighChart.new {|f|
|
82
|
+
f.others(:foo =>"bar")
|
83
|
+
}
|
84
|
+
high_chart(@placeholder, chart).should match(/foo/)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should allow js code as attribute" do
|
88
|
+
chart = LazyHighCharts::HighChart.new {|f|
|
89
|
+
f.options[:foo] = "function () { alert('hello') }".js_code
|
90
|
+
}
|
91
|
+
|
92
|
+
high_chart(@placeholder, chart).should match(/"foo": function \(\) { alert\('hello'\) }/)
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should convert keys to proper format" do
|
96
|
+
chart = LazyHighCharts::HighChart.new {|f|
|
97
|
+
f.options[:foo_bar] = { :bar_foo => "someattrib"}
|
98
|
+
}
|
99
|
+
|
100
|
+
high_chart(@placeholder, chart).should match(/fooBar/)
|
101
|
+
high_chart(@placeholder, chart).should match(/barFoo/)
|
102
|
+
end
|
103
|
+
|
104
|
+
# issue #62 .js_code setting ignored
|
105
|
+
# https://github.com/michelson/lazy_high_charts/issues/62
|
106
|
+
it "should allow js code in array && nest attributs" do
|
107
|
+
chart = LazyHighCharts::HighChart.new {|f|
|
108
|
+
f.yAxis([{
|
109
|
+
:labels => {
|
110
|
+
:formatter => %|function() {return this.value + ' W';}|.js_code
|
111
|
+
}
|
112
|
+
}])
|
113
|
+
}
|
114
|
+
high_chart(@placeholder,chart).should match(/"formatter": function\(\) {return this.value \+ ' W';}/)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should support js_code in Individual data label for each point" do
|
118
|
+
chart = LazyHighCharts::HighChart.new {|f|
|
119
|
+
f.series(
|
120
|
+
:data => [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, {
|
121
|
+
:dataLabels => {:enabled => true,
|
122
|
+
:align => 'left',
|
123
|
+
:x => 10,
|
124
|
+
:y => 4,
|
125
|
+
:style => {:fontWeight => 'bold'},
|
126
|
+
:formatter => "function() { return this.x; }".js_code
|
127
|
+
},
|
128
|
+
:y => 54.4}
|
129
|
+
])
|
130
|
+
}
|
131
|
+
high_chart(@placeholder,chart).should match(/"formatter": function\(\) {\ return this.x;\ }/)
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
describe LazyHighCharts::OptionsKeyFilter do
|
4
|
+
it "should filter :pointInterval from seconds to milliseconds" do
|
5
|
+
hash = LazyHighCharts::OptionsKeyFilter.filter(pointInterval: 1)
|
6
|
+
hash[:pointInterval].should == 1000
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "filters :pointStart from a Date to a JavaScript compatible string" do
|
10
|
+
before(:each) do
|
11
|
+
hash = LazyHighCharts::OptionsKeyFilter.filter(pointStart: Date.new(2012, 9, 13))
|
12
|
+
@value = hash[:pointStart]
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should be the correct string" do
|
16
|
+
@value.should == "Date.UTC(2012, 8, 13)"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should be js_code" do
|
20
|
+
@value.js_code.should be_true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should filter keys recursively" do
|
25
|
+
hash = LazyHighCharts::OptionsKeyFilter.filter({something: {another_thing: {pointInterval: 2}}})
|
26
|
+
hash[:something][:another_thing][:pointInterval].should == 2000
|
27
|
+
end
|
28
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'rubygems'
|
3
|
+
require 'bundler'
|
4
|
+
Bundler.setup
|
5
|
+
|
6
|
+
require 'active_support'
|
7
|
+
require 'action_pack'
|
8
|
+
require 'action_view'
|
9
|
+
require 'action_controller'
|
10
|
+
require 'rails'
|
11
|
+
#require 'action_mailer'
|
12
|
+
require "active_support/core_ext"
|
13
|
+
|
14
|
+
|
15
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '../lib/lazy_high_charts'))
|
16
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '../lib/lazy_high_charts/layout_helper'))
|
17
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '../lib/lazy_high_charts/options_key_filter'))
|
18
|
+
|
19
|
+
require 'webrat'
|
20
|
+
require 'rspec'
|
21
|
+
|
22
|
+
# RSpec 1.x and 2.x compatibility
|
23
|
+
if defined?(RSpec)
|
24
|
+
RSPEC_NAMESPACE = RSPEC_CONFIGURER = RSpec
|
25
|
+
elsif defined?(Spec)
|
26
|
+
RSPEC_NAMESPACE = Spec
|
27
|
+
RSPEC_CONFIGURER = Spec::Runner
|
28
|
+
else
|
29
|
+
begin
|
30
|
+
require 'rspec'
|
31
|
+
RSPEC_NAMESPACE = RSPEC_CONFIGURER = Rspec
|
32
|
+
rescue LoadError
|
33
|
+
require 'spec'
|
34
|
+
RSPEC_NAMESPACE = Spec
|
35
|
+
RSPEC_CONFIGURER = Spec::Runner
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
RSPEC_CONFIGURER.configure do |config|
|
40
|
+
config.include ActionView::Helpers
|
41
|
+
config.include Webrat::Matchers
|
42
|
+
end
|
43
|
+
|
44
|
+
module HighChartsHelper
|
45
|
+
include ActionView::Helpers::TagHelper
|
46
|
+
end
|
metadata
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lazy_high_charts_tomgi
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.2.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Miguel Michelson Martinez
|
9
|
+
- Deshi Xiao
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2012-10-22 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: bundler
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '1.0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: hash-deep-merge
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
description: ! ' lazy_high_charts is a Rails 3.x gem for displaying Highcharts
|
48
|
+
graphs.
|
49
|
+
|
50
|
+
'
|
51
|
+
email:
|
52
|
+
- miguelmichelson@gmail.com
|
53
|
+
- xiaods@gmail.com
|
54
|
+
executables: []
|
55
|
+
extensions: []
|
56
|
+
extra_rdoc_files:
|
57
|
+
- README.md
|
58
|
+
- CHANGELOG.md
|
59
|
+
files:
|
60
|
+
- .gitignore
|
61
|
+
- .rspec
|
62
|
+
- CHANGELOG.md
|
63
|
+
- Gemfile
|
64
|
+
- MIT-LICENSE
|
65
|
+
- README.md
|
66
|
+
- Rakefile
|
67
|
+
- autotest/discover.rb
|
68
|
+
- init.rb
|
69
|
+
- lazy_high_charts.gemspec
|
70
|
+
- lib/generators/lazy_high_charts/install/install_generator.rb
|
71
|
+
- lib/lazy_high_charts.rb
|
72
|
+
- lib/lazy_high_charts/core_ext/string.rb
|
73
|
+
- lib/lazy_high_charts/high_chart.rb
|
74
|
+
- lib/lazy_high_charts/layout_helper.rb
|
75
|
+
- lib/lazy_high_charts/options_key_filter.rb
|
76
|
+
- lib/lazy_high_charts/railtie.rb
|
77
|
+
- lib/lazy_high_charts/version.rb
|
78
|
+
- rails/init.rb
|
79
|
+
- spec/high_chart_spec.rb
|
80
|
+
- spec/lazy_high_charts_spec.rb
|
81
|
+
- spec/options_key_filter_spec.rb
|
82
|
+
- spec/spec_helper.rb
|
83
|
+
homepage: https://github.com/xiaods/lazy_high_charts
|
84
|
+
licenses: []
|
85
|
+
post_install_message:
|
86
|
+
rdoc_options:
|
87
|
+
- --charset=UTF-8
|
88
|
+
require_paths:
|
89
|
+
- lib
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
segments:
|
97
|
+
- 0
|
98
|
+
hash: 2261933756179286063
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ~>
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '1.3'
|
105
|
+
requirements: []
|
106
|
+
rubyforge_project:
|
107
|
+
rubygems_version: 1.8.24
|
108
|
+
signing_key:
|
109
|
+
specification_version: 3
|
110
|
+
summary: lazy higcharts gem for rails
|
111
|
+
test_files: []
|