apexcharts 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
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