pi_charts 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,27 @@
1
+ module PiCharts
2
+
3
+ class Doughnut < Pie
4
+ def create!(args={})
5
+ @config.data[:type] = 'doughnut'
6
+ @config.data[:data][:datasets] = []
7
+ label = args[:label] || ""
8
+ data = args[:data] || []
9
+ color = args[:color] || []
10
+ data = { data: data, backgroundColor: color, label: label }
11
+ @config.data[:data][:datasets] << data
12
+ @config.data[:options][:cutoutpercentage] = 50
13
+ @config.data[:data][:labels] = []
14
+ true
15
+ end
16
+
17
+ def cutout(percentage=false)
18
+ if percentage
19
+ @config.data[:options][:cutoutpercentage] = percentage
20
+ true
21
+ else
22
+ @config.data[:options][:cutoutPercentage]
23
+ end
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,187 @@
1
+ module PiCharts
2
+
3
+ class Line < Base
4
+
5
+ def add_labels(labels)
6
+ @config.data[:data][:labels] = labels
7
+ end
8
+
9
+ def title(args = {})
10
+ if args.keys.empty? or ! args.keys.include? [:title]
11
+ raise "need to specify title with {title: 'name', display: true/false }"
12
+ end
13
+ @config.data[:data][:options][:title] = {}
14
+ @config.data[:data][:options][:title][:text] = args[:title] || ""
15
+ @config.data[:data][:options][:title][:display] = true unless args[:display] == false
16
+ true
17
+ end
18
+
19
+ def create(args = {})
20
+ @config.data[:type] = 'line'
21
+ @config.data[:data][:datasets] = []
22
+ @config.data[:data][:labels] = []
23
+ @config.data[:data][:options] = []
24
+ true
25
+ end
26
+
27
+ def add_dataset(args = {})
28
+ if args.keys.empty?
29
+ raise "need to specify dataset with { label: 'name', data: [1,2,3] }"
30
+ end
31
+ label = args[:label]
32
+ data = args[:data]
33
+ color = args[:color] || random_color
34
+ fill = args[:fill] || false
35
+ index = dataset_index(label)
36
+ if index
37
+ if data.kind_of?(Array)
38
+ data.each { |d| @config.data[:data][:datasets][index][:data] << d }
39
+ else
40
+ @config.data[:data][:datasets][index][:data] << data
41
+ end
42
+ else
43
+ dataset = {}
44
+ dataset[:label] = label
45
+ dataset[:borderColor] = color
46
+ dataset[:backgroundColor] = color
47
+ dataset[:fill] = fill
48
+ dataset[:data] = []
49
+ if data.kind_of?(Array)
50
+ data.each { |d| dataset[:data] << d }
51
+ else
52
+ dataset[:data] << data
53
+ end
54
+ @config.data[:data][:datasets] << dataset
55
+ end
56
+ true
57
+ end
58
+
59
+ def tension(args={})
60
+ if args.keys.empty?
61
+ false
62
+ else
63
+ if args[:dataset]
64
+ index = dataset_index(args[:dataset])
65
+ if index
66
+ @config.data[:data][:datasets][index][:lineTension] = args[:ammount]
67
+ else
68
+ raise "dataset doesn't seem to exist"
69
+ end
70
+ else
71
+ raise "need to specify a dataset"
72
+ end
73
+ end
74
+ end
75
+
76
+ def border(args={})
77
+ if args.keys.empty?
78
+ false
79
+ else
80
+ if args[:dataset]
81
+ index = dataset_index(args[:dataset])
82
+ if index
83
+ @config.data[:data][:datasets][index][:borderColor] = args[:color] if args[:color]
84
+ @config.data[:data][:datasets][index][:borderWidth] = args[:width] if args[:width]
85
+ @config.data[:data][:datasets][index][:borderCapStyle] = args[:cap] if args[:cap]
86
+ @config.data[:data][:datasets][index][:borderDash] = args[:dash] if args[:dash]
87
+ @config.data[:data][:datasets][index][:borderDashOffset] = args[:dash_offeset] if args[:dash_offset]
88
+ @config.data[:data][:datasets][index][:borderJoinStyle] = args[:joint] if args[:joint]
89
+ else
90
+ raise "dataset doesn't seem to exist"
91
+ end
92
+ else
93
+ raise "need to specify a dataset"
94
+ end
95
+ end
96
+ end
97
+
98
+ def point(args={})
99
+ if args.keys.empty?
100
+ false
101
+ else
102
+ if args[:dataset]
103
+ index = dataset_index(args[:dataset])
104
+ if index
105
+ @config.data[:data][:datasets][index][:pointBorderColor] = args[:color] if args[:color]
106
+ @config.data[:data][:datasets][index][:pointBorderBackgroundColor] = args[:border] if args[:border]
107
+ @config.data[:data][:datasets][index][:pointBorderWidth] = args[:width] if args[:width]
108
+ @config.data[:data][:datasets][index][:pointRadius] = args[:radius] if args[:radius]
109
+ @config.data[:data][:datasets][index][:pointHoverRadius] = args[:hover] if args[:hover]
110
+ @config.data[:data][:datasets][index][:pointHitRadius] = args[:hit] if args[:hit]
111
+ @config.data[:data][:datasets][index][:pointStyle] = args[:style] if args[:style]
112
+ else
113
+ raise "dataset doesn't seem to exist"
114
+ end
115
+ else
116
+ raise "need to specify a dataset"
117
+ end
118
+ end
119
+ end
120
+
121
+ def no_line(dataset=false)
122
+ unless dataset
123
+ false
124
+ else
125
+ if dataset
126
+ index = dataset_index(dataset)
127
+ if index
128
+ @config.data[:data][:datasets][index][:showLine] = false
129
+ else
130
+ raise "dataset doesn't seem to exist"
131
+ end
132
+ else
133
+ raise "need to specify a dataset"
134
+ end
135
+ end
136
+ end
137
+
138
+ def span_gaps(dataset=false)
139
+ unless dataset
140
+ false
141
+ else
142
+ if dataset
143
+ index = dataset_index(dataset)
144
+ if index
145
+ @config.data[:data][:datasets][index][:spanGaps] = true
146
+ else
147
+ raise "dataset doesn't seem to exist"
148
+ end
149
+ else
150
+ raise "need to specify a dataset"
151
+ end
152
+ end
153
+ end
154
+
155
+ def stepped(dataset = false)
156
+ unless dataset
157
+ false
158
+ else
159
+ if dataset
160
+ index = dataset_index(dataset)
161
+ if index
162
+ @config.data[:data][:datasets][index][:steppedLine] = true
163
+ else
164
+ raise "dataset doesn't seem to exist"
165
+ end
166
+ else
167
+ raise "need to specify a dataset"
168
+ end
169
+ end
170
+ end
171
+
172
+ private
173
+
174
+ def dataset_index(label = false)
175
+ if label
176
+ @config.data[:data][:datasets].each_with_index do |set, index|
177
+ if set[:label] == label
178
+ return index
179
+ end
180
+ end
181
+ end
182
+ false
183
+ end
184
+
185
+ end
186
+
187
+ end
@@ -0,0 +1,52 @@
1
+ module PiCharts
2
+
3
+ class Pie < Base
4
+
5
+ def label(label)
6
+ @config.data[:data][:label] = label
7
+ true
8
+ end
9
+
10
+ def create(args={})
11
+ @config.data[:type] = 'pie'
12
+ @config.data[:data][:datasets] = []
13
+ label = args[:label] || ""
14
+ data = args[:data] || []
15
+ color = args[:color] || []
16
+ data = { data: data, backgroundColor: color, label: label }
17
+ @config.data[:data][:datasets] << data
18
+ @config.data[:data][:labels] = []
19
+ true
20
+ end
21
+
22
+ def add_dataset(args={})
23
+ label = args[:label]
24
+ data = args[:data]
25
+ color = args[:color] || random_color
26
+ if @config.data[:data][:labels].include? label
27
+ index = @config.data[:data][:labels].index(label)
28
+ if args[:add]
29
+ @config.data[:data][:datasets].first[:data][index] += data
30
+ else
31
+ @config.data[:data][:datasets].first[:data][index] = data
32
+ end
33
+ else
34
+ @config.data[:data][:datasets].first[:data] << data
35
+ @config.data[:data][:datasets].first[:backgroundColor] << color
36
+ @config.data[:data][:labels] << label
37
+ end
38
+ true
39
+ end
40
+
41
+ def animate(animate=true)
42
+ if animate
43
+ @config.data[:options] = true
44
+ else
45
+ @config.data[:options] = false
46
+ end
47
+ end
48
+
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,21 @@
1
+ module PiCharts
2
+
3
+ class Utils
4
+
5
+ def cdn(args={})
6
+ version = args[:version] || "2.4.0"
7
+ min = false || args[:min]
8
+ if min
9
+ "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/Chart.js/#{version}/Chart.min.js\"></script>"
10
+ else
11
+ "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/Chart.js/#{version}/Chart.js\"></script>"
12
+ end
13
+ end
14
+
15
+ def random_color
16
+ "##{SecureRandom.hex(3)}"
17
+ end
18
+
19
+ end
20
+
21
+ end
@@ -0,0 +1,3 @@
1
+ module PiCharts
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'pi_charts/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "pi_charts"
8
+ spec.version = PiCharts::VERSION
9
+ spec.authors = ["Kent Gruber"]
10
+ spec.email = ["kgruber1@emich.edu"]
11
+
12
+ spec.summary = %q{A ruby gem to easily build beautiful charts using chartjs.}
13
+ spec.description = %q{A ruby gem to easily build beautiful charts using chartjs. If you like charts, ruby, and want beautiful javascript charts.}
14
+ spec.homepage = "https://github.com/picatz/Pi-Charts"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+
21
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
+ spec.bindir = "bin"
23
+ spec.require_paths = ["lib"]
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.14"
26
+ spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "rspec", "~> 3.0"
28
+ end
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pi_charts
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kent Gruber
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-02-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.14'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: A ruby gem to easily build beautiful charts using chartjs. If you like
56
+ charts, ruby, and want beautiful javascript charts.
57
+ email:
58
+ - kgruber1@emich.edu
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - ".gitignore"
64
+ - ".rspec"
65
+ - ".travis.yml"
66
+ - CODE_OF_CONDUCT.md
67
+ - Gemfile
68
+ - LICENSE.txt
69
+ - README.md
70
+ - Rakefile
71
+ - bin/console
72
+ - bin/setup
73
+ - examples/bar_chart.rb
74
+ - examples/bar_chart_hidden_legend.rb
75
+ - examples/bar_chart_stacked.rb
76
+ - examples/debug.rb
77
+ - examples/doughnut_chart.rb
78
+ - examples/doughnut_chart_hidden_legened.rb
79
+ - examples/line_chart.rb
80
+ - examples/line_chart_border.rb
81
+ - examples/line_chart_hidden_legend.rb
82
+ - examples/line_chart_no_line.rb
83
+ - examples/line_chart_tension.rb
84
+ - examples/pie_chart.rb
85
+ - examples/pie_chart_hidden_legend.rb
86
+ - examples/readme_serve_pie.rb
87
+ - examples/sinatra.rb
88
+ - examples/sinatra_line_chart.rb
89
+ - lib/pi_charts.rb
90
+ - lib/pi_charts/bar_chart.rb
91
+ - lib/pi_charts/base.rb
92
+ - lib/pi_charts/config.rb
93
+ - lib/pi_charts/doughnut_chart.rb
94
+ - lib/pi_charts/line_chart.rb
95
+ - lib/pi_charts/pie_chart.rb
96
+ - lib/pi_charts/utils.rb
97
+ - lib/pi_charts/version.rb
98
+ - pi_charts.gemspec
99
+ homepage: https://github.com/picatz/Pi-Charts
100
+ licenses:
101
+ - MIT
102
+ metadata: {}
103
+ post_install_message:
104
+ rdoc_options: []
105
+ require_paths:
106
+ - lib
107
+ required_ruby_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ requirements: []
118
+ rubyforge_project:
119
+ rubygems_version: 2.6.8
120
+ signing_key:
121
+ specification_version: 4
122
+ summary: A ruby gem to easily build beautiful charts using chartjs.
123
+ test_files: []