apexcharts 0.1.6 → 0.1.7

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +248 -52
  3. data/lib/apexcharts.rb +2 -1
  4. data/lib/apexcharts/charts.rb +11 -18
  5. data/lib/apexcharts/charts/base.rb +19 -18
  6. data/lib/apexcharts/charts/bubble.rb +2 -8
  7. data/lib/apexcharts/charts/cartesian.rb +30 -29
  8. data/lib/apexcharts/charts/donut.rb +0 -1
  9. data/lib/apexcharts/charts/features/annotations.rb +16 -17
  10. data/lib/apexcharts/charts/features/mixable.rb +1 -2
  11. data/lib/apexcharts/charts/heatmap.rb +2 -4
  12. data/lib/apexcharts/charts/mixed.rb +42 -32
  13. data/lib/apexcharts/charts/pie.rb +0 -1
  14. data/lib/apexcharts/charts/polar.rb +2 -9
  15. data/lib/apexcharts/charts/radar.rb +2 -4
  16. data/lib/apexcharts/charts/radial_bar.rb +0 -1
  17. data/lib/apexcharts/charts/syncing.rb +39 -25
  18. data/lib/apexcharts/colors.rb +4 -6
  19. data/lib/apexcharts/config.rb +25 -0
  20. data/lib/apexcharts/config/default_options.rb +12 -0
  21. data/lib/apexcharts/helper.rb +151 -87
  22. data/lib/apexcharts/options/annotations.rb +5 -5
  23. data/lib/apexcharts/options/axis.rb +12 -12
  24. data/lib/apexcharts/options/chart.rb +21 -21
  25. data/lib/apexcharts/options/data_labels.rb +9 -7
  26. data/lib/apexcharts/options/div_attributes.rb +4 -5
  27. data/lib/apexcharts/options/fill.rb +7 -7
  28. data/lib/apexcharts/options/grid.rb +10 -10
  29. data/lib/apexcharts/options/legend.rb +22 -19
  30. data/lib/apexcharts/options/markers.rb +13 -13
  31. data/lib/apexcharts/options/no_data.rb +7 -7
  32. data/lib/apexcharts/options/plot_options.rb +7 -7
  33. data/lib/apexcharts/options/root.rb +30 -30
  34. data/lib/apexcharts/options/states.rb +4 -4
  35. data/lib/apexcharts/options/stroke.rb +7 -7
  36. data/lib/apexcharts/options/subtitle.rb +3 -1
  37. data/lib/apexcharts/options/theme.rb +3 -3
  38. data/lib/apexcharts/options/title.rb +8 -8
  39. data/lib/apexcharts/options/tooltip.rb +17 -17
  40. data/lib/apexcharts/options/x_axis.rb +5 -5
  41. data/lib/apexcharts/options/y_axis.rb +8 -8
  42. data/lib/apexcharts/options_builder.rb +49 -60
  43. data/lib/apexcharts/prefix_with_apex.rb +5 -0
  44. data/lib/apexcharts/prefixer.rb +19 -0
  45. data/lib/apexcharts/renderer.rb +64 -17
  46. data/lib/apexcharts/series.rb +5 -3
  47. data/lib/apexcharts/series/bubble.rb +33 -22
  48. data/lib/apexcharts/series/cartesian.rb +63 -49
  49. data/lib/apexcharts/series/polar.rb +31 -17
  50. data/lib/apexcharts/support/rails.rb +1 -1
  51. data/lib/apexcharts/support/sinatra.rb +9 -0
  52. data/lib/apexcharts/theme.rb +5 -6
  53. data/lib/apexcharts/utils.rb +1 -0
  54. data/lib/apexcharts/utils/copy.rb +9 -0
  55. data/lib/apexcharts/utils/date_time.rb +50 -44
  56. data/lib/apexcharts/utils/hash.rb +2 -3
  57. data/lib/apexcharts/version.rb +1 -1
  58. data/vendor/assets/javascripts/apexcharts.js +2 -2
  59. metadata +27 -7
@@ -4,7 +4,7 @@ require 'set'
4
4
 
5
5
  module ApexCharts
6
6
  class Colors
7
- def initialize colors
7
+ def initialize(colors)
8
8
  @color_set = Set.new(clean(colors))
9
9
  end
10
10
 
@@ -14,15 +14,13 @@ module ApexCharts
14
14
 
15
15
  private
16
16
 
17
- def clean colors
17
+ def clean(colors)
18
18
  colors = colors.respond_to?(:to_set) ? colors.to_a.flatten : Array(colors)
19
19
  colors.map do |color|
20
- unless color.tap{|c| c.upcase! }[/^#[0-9A-F]{6}/]
21
- raise "unrecognized color #{color}"
22
- end
20
+ raise "unrecognized color #{color}" unless color.tap(&:upcase!)[/^#[0-9A-F]{6}/]
21
+
23
22
  color
24
23
  end
25
24
  end
26
25
  end
27
26
  end
28
-
@@ -0,0 +1,25 @@
1
+ require_relative 'config/default_options'
2
+
3
+ module ApexCharts
4
+ class << self
5
+ def helper_prefix
6
+ @@helper_prefix ||= ENV['APEXCHARTS_PREFIX']
7
+ end
8
+
9
+ def helper_prefix=(prefix)
10
+ @@helper_prefix = prefix
11
+ end
12
+
13
+ def configure
14
+ block_given? ? yield(config) : config
15
+ end
16
+
17
+ def config
18
+ @@config ||= Configuration.new
19
+ end
20
+ end
21
+
22
+ class Configuration
23
+ include DefaultOptions
24
+ end
25
+ end
@@ -0,0 +1,12 @@
1
+ module ApexCharts
2
+ module DefaultOptions
3
+ def default_options=(options)
4
+ @default_options = OptionsBuilder.new(nil, options)
5
+ .build_general_options
6
+ end
7
+
8
+ def default_options
9
+ @default_options ||= {}
10
+ end
11
+ end
12
+ end
@@ -1,103 +1,169 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'config'
4
+ require_relative 'utils'
3
5
  require_relative 'series'
4
6
  require_relative 'options_builder'
5
- require_relative 'utils'
6
7
  require_relative 'renderer'
7
8
  require_relative 'charts'
9
+ require_relative 'prefixer'
8
10
  require_relative 'theme'
9
11
 
10
12
  module ApexCharts
11
13
  module Helper
12
- def line_chart series, options={}, &block
13
- bindings = eval("self", block.binding) if block_given?
14
- draw_chart(LineChart.new(bindings, *prepare_series_and_options(series, options), &block))
15
- end
16
-
17
- def area_chart series, options={}, &block
18
- bindings = eval("self", block.binding) if block_given?
19
- draw_chart(AreaChart.new(bindings, *prepare_series_and_options(series, options), &block))
20
- end
21
-
22
- def column_chart series, options={}, &block
23
- bindings = eval("self", block.binding) if block_given?
24
- draw_chart(ColumnChart.new(bindings, *prepare_series_and_options(series, options), &block))
25
- end
26
-
27
- def bar_chart series, options={}, &block
28
- bindings = eval("self", block.binding) if block_given?
29
- draw_chart(BarChart.new(bindings, *prepare_series_and_options(series, options), &block))
30
- end
31
-
32
- def range_bar_chart series, options={}, &block
33
- bindings = eval("self", block.binding) if block_given?
34
- draw_chart(RangeBarChart.new(bindings, *prepare_series_and_options(series, options), &block))
35
- end
36
-
37
- def scatter_chart series, options={}, &block
38
- bindings = eval("self", block.binding) if block_given?
39
- draw_chart(ScatterChart.new(bindings, *prepare_series_and_options(series, options), &block))
40
- end
41
-
42
- def candlestick_chart series, options={}, &block
43
- bindings = eval("self", block.binding) if block_given?
44
- draw_chart(CandlestickChart.new(bindings, *prepare_series_and_options(series, options), &block))
45
- end
46
- alias_method :ohlc_chart, :candlestick_chart
47
-
48
- def heatmap_chart series, options={}
49
- draw_chart(HeatmapChart.new(*prepare_series_and_options(series, options)))
50
- end
51
-
52
- def bubble_chart series, options={}
53
- draw_chart(BubbleChart.new(*prepare_series_and_options(series, options)))
54
- end
55
-
56
- def radar_chart series, options={}
57
- draw_chart(RadarChart.new(*prepare_series_and_options(series, options)))
58
- end
59
-
60
- def mixed_charts options={}, &block
61
- bindings = eval("self", block.binding)
62
- draw_chart(MixedCharts.new(bindings, deep_copy(options), &block))
63
- end
64
- alias_method :combo_charts, :mixed_charts
65
-
66
- def syncing_charts options={}, &block
67
- bindings = eval("self", block.binding)
68
- draw_chart(SyncingCharts.new(bindings, deep_copy(options), &block))
69
- end
70
- alias_method :synchronized_charts, :syncing_charts
71
-
72
- def pie_chart series, options={}
73
- draw_chart(PieChart.new(*prepare_series_and_options(series, options)))
74
- end
75
-
76
- def donut_chart series, options={}
77
- draw_chart(DonutChart.new(*prepare_series_and_options(series, options)))
78
- end
79
-
80
- def radial_bar_chart series, options={}
81
- draw_chart(RadialBarChart.new(*prepare_series_and_options(series, options)))
82
- end
83
- alias_method :circle_chart, :radial_bar_chart
84
-
85
- def create_palette palette_name, colors
86
- ApexCharts::Theme::Local.create palette_name, colors
87
- end
88
-
89
- def destroy_palette palette_name
90
- ApexCharts::Theme::Local.destroy palette_name
14
+ extend Prefixer
15
+
16
+ with_prefix do
17
+ def line_chart(series, options={}, &block)
18
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
19
+ draw_chart(
20
+ LineChart.new(
21
+ outer_self, *prepare_series_and_options(series, options), &block
22
+ )
23
+ )
24
+ end
25
+
26
+ def area_chart(series, options={}, &block)
27
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
28
+ draw_chart(
29
+ AreaChart.new(
30
+ outer_self, *prepare_series_and_options(series, options), &block
31
+ )
32
+ )
33
+ end
34
+
35
+ def column_chart(series, options={}, &block)
36
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
37
+ draw_chart(
38
+ ColumnChart.new(
39
+ outer_self, *prepare_series_and_options(series, options), &block
40
+ )
41
+ )
42
+ end
43
+
44
+ def bar_chart(series, options={}, &block)
45
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
46
+ draw_chart(
47
+ BarChart.new(
48
+ outer_self, *prepare_series_and_options(series, options), &block
49
+ )
50
+ )
51
+ end
52
+
53
+ def range_bar_chart(series, options={}, &block)
54
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
55
+ draw_chart(
56
+ RangeBarChart.new(
57
+ outer_self, *prepare_series_and_options(series, options), &block
58
+ )
59
+ )
60
+ end
61
+
62
+ def scatter_chart(series, options={}, &block)
63
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
64
+ draw_chart(
65
+ ScatterChart.new(
66
+ outer_self, *prepare_series_and_options(series, options), &block
67
+ )
68
+ )
69
+ end
70
+
71
+ def candlestick_chart(series, options={}, &block)
72
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
73
+ draw_chart(
74
+ CandlestickChart.new(
75
+ outer_self, *prepare_series_and_options(series, options), &block
76
+ )
77
+ )
78
+ end
79
+ alias_method :ohlc_chart, :candlestick_chart
80
+
81
+ def heatmap_chart(series, options={})
82
+ draw_chart(
83
+ HeatmapChart.new(
84
+ *prepare_series_and_options(series, options)
85
+ )
86
+ )
87
+ end
88
+
89
+ def bubble_chart(series, options={})
90
+ draw_chart(
91
+ BubbleChart.new(
92
+ *prepare_series_and_options(series, options)
93
+ )
94
+ )
95
+ end
96
+
97
+ def radar_chart(series, options={})
98
+ draw_chart(
99
+ RadarChart.new(
100
+ *prepare_series_and_options(series, options)
101
+ )
102
+ )
103
+ end
104
+
105
+ def mixed_charts(options={}, &block)
106
+ outer_self = eval('self', block.binding, __FILE__, __LINE__)
107
+ draw_chart(
108
+ MixedCharts.new(
109
+ outer_self, deep_copy(options), &block
110
+ )
111
+ )
112
+ end
113
+ alias_method :combo_charts, :mixed_charts
114
+
115
+ def syncing_charts(options={}, &block)
116
+ outer_self = eval('self', block.binding, __FILE__, __LINE__)
117
+ draw_chart(
118
+ SyncingCharts.new(
119
+ outer_self, deep_copy(options), &block
120
+ )
121
+ )
122
+ end
123
+ alias_method :synchronized_charts, :syncing_charts
124
+
125
+ def pie_chart(series, options={})
126
+ draw_chart(
127
+ PieChart.new(
128
+ *prepare_series_and_options(series, options)
129
+ )
130
+ )
131
+ end
132
+
133
+ def donut_chart(series, options={})
134
+ draw_chart(
135
+ DonutChart.new(
136
+ *prepare_series_and_options(series, options)
137
+ )
138
+ )
139
+ end
140
+
141
+ def radial_bar_chart(series, options={})
142
+ draw_chart(
143
+ RadialBarChart.new(
144
+ *prepare_series_and_options(series, options)
145
+ )
146
+ )
147
+ end
148
+ alias_method :circle_chart, :radial_bar_chart
149
+ end
150
+
151
+ def create_palette(palette_name, colors)
152
+ Theme::Local.create palette_name, colors
153
+ end
154
+
155
+ def destroy_palette(palette_name)
156
+ Theme::Local.destroy palette_name
91
157
  end
92
158
 
93
159
  private
94
160
 
95
- def draw_chart chart
161
+ def draw_chart(chart)
96
162
  chart = chart.render
97
163
  chart.respond_to?(:html_safe) ? chart.html_safe : chart
98
164
  end
99
165
 
100
- def prepare_series_and_options series, options
166
+ def prepare_series_and_options(series, options)
101
167
  series = deep_copy(series)
102
168
  options = deep_copy(options)
103
169
  options[:id] ||= apexcharts_id
@@ -107,17 +173,15 @@ module ApexCharts
107
173
  def apexcharts_id
108
174
  @_apexcharts_id ||= 0
109
175
  @_apexcharts_id += 1
110
- "chart-#{@_apexcharts_id}"
176
+ "#{ApexCharts.helper_prefix}chart-#{@_apexcharts_id}"
111
177
  end
112
178
 
113
179
  def apexcharts_group
114
180
  @_apexcharts_group ||= 0
115
181
  @_apexcharts_group += 1
116
- "chart-group-#{@_apexcharts_group}"
182
+ "#{ApexCharts.helper_prefix}chart-group-#{@_apexcharts_group}"
117
183
  end
118
184
 
119
- def deep_copy(options)
120
- Marshal.load(Marshal.dump(options))
121
- end
185
+ include Utils::Copy
122
186
  end
123
187
  end
@@ -1,10 +1,10 @@
1
1
  module ApexCharts
2
2
  class AnnotationsOptions < ::SmartKv
3
3
  optional *%i[
4
- points
5
- position
6
- xaxis
7
- yaxis
8
- ]
4
+ points
5
+ position
6
+ xaxis
7
+ yaxis
8
+ ]
9
9
  end
10
10
  end
@@ -1,17 +1,17 @@
1
1
  module ApexCharts
2
2
  class AxisOptions < ::SmartKv
3
3
  optional *%i[
4
- axisBorder
5
- axisTicks
6
- crosshairs
7
- floating
8
- labels
9
- max
10
- min
11
- tickAmount
12
- title
13
- tooltip
14
- type
15
- ]
4
+ axisBorder
5
+ axisTicks
6
+ crosshairs
7
+ floating
8
+ labels
9
+ max
10
+ min
11
+ tickAmount
12
+ title
13
+ tooltip
14
+ type
15
+ ]
16
16
  end
17
17
  end
@@ -1,26 +1,26 @@
1
1
  module ApexCharts
2
2
  class ChartOptions < ::SmartKv
3
3
  optional *%i[
4
- animations
5
- background
6
- brush
7
- defaultLocale
8
- dropShadow
9
- events
10
- fontFamily
11
- foreColor
12
- height
13
- id
14
- locales
15
- parentHeightOffset
16
- selection
17
- sparkline
18
- stackType
19
- stacked
20
- toolbar
21
- type
22
- width
23
- zoom
24
- ]
4
+ animations
5
+ background
6
+ brush
7
+ defaultLocale
8
+ dropShadow
9
+ events
10
+ fontFamily
11
+ foreColor
12
+ height
13
+ id
14
+ locales
15
+ parentHeightOffset
16
+ selection
17
+ sparkline
18
+ stackType
19
+ stacked
20
+ toolbar
21
+ type
22
+ width
23
+ zoom
24
+ ]
25
25
  end
26
26
  end
@@ -1,12 +1,14 @@
1
1
  module ApexCharts
2
2
  class DataLabelsOptions < ::SmartKv
3
3
  optional *%i[
4
- dropShadow
5
- enabled
6
- offsetX
7
- offsetY
8
- style
9
- textAnchor
10
- ]
4
+ dropShadow
5
+ enabled
6
+ enabledOnSeries
7
+ formatter
8
+ offsetX
9
+ offsetY
10
+ style
11
+ textAnchor
12
+ ]
11
13
  end
12
14
  end