apexcharts 0.1.4 → 0.1.5

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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +231 -32
  3. data/lib/apexcharts.rb +3 -1
  4. data/lib/apexcharts/charts.rb +5 -0
  5. data/lib/apexcharts/charts/area.rb +3 -1
  6. data/lib/apexcharts/charts/bar.rb +3 -1
  7. data/lib/apexcharts/charts/base.rb +34 -0
  8. data/lib/apexcharts/charts/bubble.rb +7 -8
  9. data/lib/apexcharts/charts/candlestick.rb +9 -0
  10. data/lib/apexcharts/charts/cartesian.rb +15 -39
  11. data/lib/apexcharts/charts/column.rb +1 -1
  12. data/lib/apexcharts/charts/donut.rb +3 -1
  13. data/lib/apexcharts/charts/features/annotations.rb +1 -1
  14. data/lib/apexcharts/charts/features/mixable.rb +11 -0
  15. data/lib/apexcharts/charts/heatmap.rb +8 -3
  16. data/lib/apexcharts/charts/line.rb +3 -1
  17. data/lib/apexcharts/charts/mixed.rb +7 -25
  18. data/lib/apexcharts/charts/pie.rb +3 -1
  19. data/lib/apexcharts/charts/polar.rb +4 -33
  20. data/lib/apexcharts/charts/radar.rb +15 -0
  21. data/lib/apexcharts/charts/radial_bar.rb +3 -1
  22. data/lib/apexcharts/charts/scatter.rb +3 -1
  23. data/lib/apexcharts/charts/syncing.rb +3 -1
  24. data/lib/apexcharts/helper.rb +17 -6
  25. data/lib/apexcharts/options/annotations.rb +1 -1
  26. data/lib/apexcharts/options/axis.rb +4 -4
  27. data/lib/apexcharts/options/chart.rb +9 -7
  28. data/lib/apexcharts/options/data_labels.rb +5 -5
  29. data/lib/apexcharts/options/div_attributes.rb +1 -1
  30. data/lib/apexcharts/options/fill.rb +1 -1
  31. data/lib/apexcharts/options/grid.rb +3 -3
  32. data/lib/apexcharts/options/legend.rb +13 -13
  33. data/lib/apexcharts/options/markers.rb +7 -7
  34. data/lib/apexcharts/options/no_data.rb +4 -4
  35. data/lib/apexcharts/options/plot_options.rb +3 -2
  36. data/lib/apexcharts/options/root.rb +6 -6
  37. data/lib/apexcharts/options/states.rb +1 -1
  38. data/lib/apexcharts/options/stroke.rb +3 -3
  39. data/lib/apexcharts/options/subtitle.rb +1 -1
  40. data/lib/apexcharts/options/theme.rb +1 -1
  41. data/lib/apexcharts/options/title.rb +3 -3
  42. data/lib/apexcharts/options/tooltip.rb +5 -5
  43. data/lib/apexcharts/options/x_axis.rb +2 -2
  44. data/lib/apexcharts/options/y_axis.rb +5 -5
  45. data/lib/apexcharts/options_builder.rb +33 -32
  46. data/lib/apexcharts/renderer.rb +21 -0
  47. data/lib/apexcharts/series.rb +2 -0
  48. data/lib/apexcharts/series/bubble.rb +1 -1
  49. data/lib/apexcharts/series/cartesian.rb +14 -23
  50. data/lib/apexcharts/series/polar.rb +1 -1
  51. data/lib/apexcharts/support/rails.rb +3 -1
  52. data/lib/apexcharts/utils.rb +2 -0
  53. data/lib/apexcharts/utils/date_time.rb +1 -1
  54. data/lib/apexcharts/utils/hash.rb +7 -5
  55. data/lib/apexcharts/version.rb +4 -2
  56. metadata +52 -4
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json' unless defined? JSON
4
+
5
+ class ApexCharts::Renderer
6
+ def self.render_default(options)
7
+ attributes = options.delete(:div) { {} }
8
+ variable = attributes.delete(:var) { "chart#{attributes[:id]&.[](/\d+/)}" }
9
+ element_id = attributes.delete(:id)
10
+ css_class = attributes.delete(:class)
11
+ height = "#{options[:chart][:height].to_i}px"
12
+ style = "height: #{height}; #{attributes.delete(:style)}"
13
+ html =<<~HTML
14
+ <div id="#{element_id}" class="#{css_class}" style="#{style}"></div>
15
+ <script type="text/javascript">
16
+ var #{variable} = new ApexCharts(document.querySelector("##{element_id}"), #{options.to_json});
17
+ #{variable}.render();
18
+ </script>
19
+ HTML
20
+ end
21
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'series/cartesian'
2
4
  require_relative 'series/bubble'
3
5
  require_relative 'series/polar'
@@ -1,4 +1,4 @@
1
- module Apexcharts
1
+ module ApexCharts
2
2
  class BubbleSeries
3
3
  attr_reader :sanitized
4
4
 
@@ -1,4 +1,4 @@
1
- module Apexcharts
1
+ module ApexCharts
2
2
  class CartesianSeries
3
3
  attr_reader :sanitized
4
4
 
@@ -6,26 +6,20 @@ module Apexcharts
6
6
  data = deep_copy(data)
7
7
  @sanitized = case data
8
8
  when Array
9
- if array_of_pairs?(data)
10
- case first_data = data[0]
11
- when Array
12
- [
13
- {
14
- data: array_of_array_to_array_of_xy(data)
15
- }
16
- ]
17
-
18
- when Hash
19
- if first_data[:data]
20
- data.each{|h| h[:data] = array_of_array_to_array_of_xy(h[:data]) }
21
- data
22
- end
23
-
9
+ case first_data = data[0]
10
+ when Array
11
+ [
12
+ {
13
+ data: array_of_array_to_array_of_xy(data)
14
+ }
15
+ ]
16
+
17
+ when Hash
18
+ if first_data[:data]
19
+ data.each{|h| h[:data] = array_of_array_to_array_of_xy(h[:data]) }
20
+ data
24
21
  end
25
22
 
26
- else
27
- data.map(&:to_h)
28
-
29
23
  end
30
24
 
31
25
  when Hash
@@ -49,9 +43,7 @@ module Apexcharts
49
43
  ]
50
44
 
51
45
  end
52
-
53
46
  end
54
-
55
47
  end
56
48
 
57
49
  @sanitized = {series: @sanitized}
@@ -62,8 +54,7 @@ module Apexcharts
62
54
  end
63
55
 
64
56
  def array_of_pairs?(data)
65
- return false if data.empty?
66
- data.all?{|d| d.length == 2 }
57
+ !data.empty? && data.all?{|d| d.length == 2 }
67
58
  end
68
59
 
69
60
  def array_of_array_to_array_of_xy(data)
@@ -1,4 +1,4 @@
1
- module Apexcharts
1
+ module ApexCharts
2
2
  class PolarSeries
3
3
  attr_reader :sanitized
4
4
 
@@ -1,4 +1,6 @@
1
- module Apexcharts
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts
2
4
  class Engine < ::Rails::Engine
3
5
  initializer "helper" do |app|
4
6
  ActiveSupport.on_load(:action_view) do
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'utils/date_time'
2
4
  require_relative 'utils/hash'
@@ -1,6 +1,6 @@
1
1
  require 'date'
2
2
 
3
- module Apexcharts::Utils
3
+ module ApexCharts::Utils
4
4
  module DateTime
5
5
  def convert input
6
6
  case input
@@ -1,6 +1,8 @@
1
- module Apexcharts
1
+ module ApexCharts
2
2
  module Utils
3
3
  module Hash
4
+ module_function
5
+
4
6
  def deep_merge(first_hash, second_hash)
5
7
  first_hash.merge(second_hash) do |key, this_val, other_val|
6
8
  if this_val.is_a?(::Hash) && other_val.is_a?(::Hash)
@@ -10,21 +12,21 @@ module Apexcharts
10
12
  end
11
13
  end
12
14
  end
13
- module_function :deep_merge
14
15
 
15
16
  def camelize(key)
16
17
  key.to_s.gsub(/_(.)/) {|m| m[1].upcase }.to_sym
17
18
  end
18
- module_function :camelize
19
19
 
20
20
  def camelize_keys(value)
21
- if value.is_a? ::Hash
21
+ case value
22
+ when ::Hash
22
23
  ::Hash[value.map {|k, v| [camelize(k), camelize_keys(v)] }]
24
+ when Array
25
+ value.map {|e| camelize_keys(e) }
23
26
  else
24
27
  value
25
28
  end
26
29
  end
27
- module_function :camelize_keys
28
30
  end
29
31
  end
30
32
  end
@@ -1,3 +1,5 @@
1
- module Apexcharts
2
- VERSION = '0.1.4'
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts
4
+ VERSION = '0.1.5'
3
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apexcharts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Setyadi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-06 00:00:00.000000000 Z
11
+ date: 2019-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: smart_kv
@@ -80,7 +80,50 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description: Create interactive web charts with apexcharts.js in ruby.
83
+ - !ruby/object:Gem::Dependency
84
+ name: nokogiri
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov-console
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Create beautiful, interactive, and responsive web charts in ruby app
126
+ powered by apexcharts.js.
84
127
  email:
85
128
  - a.styd@yahoo.com
86
129
  executables: []
@@ -93,16 +136,20 @@ files:
93
136
  - lib/apexcharts/charts.rb
94
137
  - lib/apexcharts/charts/area.rb
95
138
  - lib/apexcharts/charts/bar.rb
139
+ - lib/apexcharts/charts/base.rb
96
140
  - lib/apexcharts/charts/bubble.rb
141
+ - lib/apexcharts/charts/candlestick.rb
97
142
  - lib/apexcharts/charts/cartesian.rb
98
143
  - lib/apexcharts/charts/column.rb
99
144
  - lib/apexcharts/charts/donut.rb
100
145
  - lib/apexcharts/charts/features/annotations.rb
146
+ - lib/apexcharts/charts/features/mixable.rb
101
147
  - lib/apexcharts/charts/heatmap.rb
102
148
  - lib/apexcharts/charts/line.rb
103
149
  - lib/apexcharts/charts/mixed.rb
104
150
  - lib/apexcharts/charts/pie.rb
105
151
  - lib/apexcharts/charts/polar.rb
152
+ - lib/apexcharts/charts/radar.rb
106
153
  - lib/apexcharts/charts/radial_bar.rb
107
154
  - lib/apexcharts/charts/scatter.rb
108
155
  - lib/apexcharts/charts/syncing.rb
@@ -128,6 +175,7 @@ files:
128
175
  - lib/apexcharts/options/x_axis.rb
129
176
  - lib/apexcharts/options/y_axis.rb
130
177
  - lib/apexcharts/options_builder.rb
178
+ - lib/apexcharts/renderer.rb
131
179
  - lib/apexcharts/series.rb
132
180
  - lib/apexcharts/series/bubble.rb
133
181
  - lib/apexcharts/series/cartesian.rb
@@ -161,5 +209,5 @@ rubyforge_project:
161
209
  rubygems_version: 2.7.6.2
162
210
  signing_key:
163
211
  specification_version: 4
164
- summary: Beautiful and interactive web charts for rubyist.
212
+ summary: Awesome charts for your ruby app
165
213
  test_files: []