apexcharts 0.1.7 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +138 -71
  3. data/lib/apex_charts/charts.rb +17 -0
  4. data/lib/{apexcharts/charts/area.rb → apex_charts/charts/area_chart.rb} +1 -1
  5. data/lib/{apexcharts/charts/bar.rb → apex_charts/charts/bar_chart.rb} +1 -1
  6. data/lib/{apexcharts/charts/base.rb → apex_charts/charts/base_chart.rb} +6 -4
  7. data/lib/apex_charts/charts/box_plot_chart.rb +8 -0
  8. data/lib/{apexcharts/charts/bubble.rb → apex_charts/charts/bubble_chart.rb} +2 -2
  9. data/lib/{apexcharts/charts/candlestick.rb → apex_charts/charts/candlestick_chart.rb} +1 -1
  10. data/lib/{apexcharts/charts/cartesian.rb → apex_charts/charts/cartesian_chart.rb} +9 -9
  11. data/lib/{apexcharts/charts/column.rb → apex_charts/charts/column_chart.rb} +3 -1
  12. data/lib/{apexcharts/charts/donut.rb → apex_charts/charts/donut_chart.rb} +1 -1
  13. data/lib/{apexcharts → apex_charts}/charts/features/annotations.rb +7 -5
  14. data/lib/{apexcharts → apex_charts}/charts/features/mixable.rb +1 -1
  15. data/lib/{apexcharts/charts/heatmap.rb → apex_charts/charts/heatmap_chart.rb} +2 -2
  16. data/lib/{apexcharts/charts/line.rb → apex_charts/charts/line_chart.rb} +1 -1
  17. data/lib/{apexcharts/charts/mixed.rb → apex_charts/charts/mixed_charts.rb} +13 -7
  18. data/lib/{apexcharts/charts/pie.rb → apex_charts/charts/pie_chart.rb} +1 -1
  19. data/lib/apex_charts/charts/polar_chart.rb +9 -0
  20. data/lib/{apexcharts/charts/radar.rb → apex_charts/charts/radar_chart.rb} +2 -2
  21. data/lib/{apexcharts/charts/radial_bar.rb → apex_charts/charts/radial_bar_chart.rb} +1 -1
  22. data/lib/{apexcharts/charts/range_bar.rb → apex_charts/charts/range_bar_chart.rb} +1 -1
  23. data/lib/{apexcharts/charts/scatter.rb → apex_charts/charts/scatter_chart.rb} +1 -1
  24. data/lib/{apexcharts/charts/syncing.rb → apex_charts/charts/syncing_charts.rb} +2 -2
  25. data/lib/{apexcharts → apex_charts}/colors.rb +2 -1
  26. data/lib/apex_charts/config/default_options.rb +16 -0
  27. data/lib/apex_charts/config/schema.rb +20 -0
  28. data/lib/apex_charts/configuration.rb +27 -0
  29. data/lib/{apexcharts → apex_charts}/helper.rb +25 -24
  30. data/lib/apex_charts/options/default/annotations_options.rb +14 -0
  31. data/lib/apex_charts/options/default/chart_options.rb +33 -0
  32. data/lib/apex_charts/options/default/data_labels_options.rb +18 -0
  33. data/lib/apex_charts/options/default/fill_options.rb +14 -0
  34. data/lib/apex_charts/options/default/grid_options.rb +17 -0
  35. data/lib/apex_charts/options/default/helper_options.rb +22 -0
  36. data/lib/apex_charts/options/default/legend_options.rb +33 -0
  37. data/lib/apex_charts/options/default/markers_options.rb +26 -0
  38. data/lib/apex_charts/options/default/no_data_options.rb +14 -0
  39. data/lib/apex_charts/options/default/plot_options.rb +19 -0
  40. data/lib/apex_charts/options/default/root_options.rb +38 -0
  41. data/lib/apex_charts/options/default/states_options.rb +11 -0
  42. data/lib/apex_charts/options/default/stroke_options.rb +14 -0
  43. data/lib/apex_charts/options/default/theme_options.rb +11 -0
  44. data/lib/apex_charts/options/default/title_subtitle_options.rb +15 -0
  45. data/lib/apex_charts/options/default/tooltip_options.rb +25 -0
  46. data/lib/apex_charts/options/default/x_axis_options.rb +27 -0
  47. data/lib/apex_charts/options/default/y_axis_options.rb +28 -0
  48. data/lib/apex_charts/options/dry_schema/annotations_options.rb +22 -0
  49. data/lib/apex_charts/options/dry_schema/annotations_options/annotation_label.rb +24 -0
  50. data/lib/apex_charts/options/dry_schema/annotations_options/image_annotations.rb +15 -0
  51. data/lib/apex_charts/options/dry_schema/annotations_options/point_annotations.rb +33 -0
  52. data/lib/apex_charts/options/dry_schema/annotations_options/text_annotations.rb +26 -0
  53. data/lib/apex_charts/options/dry_schema/annotations_options/x_axis_annotations.rb +20 -0
  54. data/lib/apex_charts/options/dry_schema/annotations_options/y_axis_annotations.rb +21 -0
  55. data/lib/apex_charts/options/dry_schema/chart_options.rb +35 -0
  56. data/lib/apex_charts/options/dry_schema/data_labels_options.rb +37 -0
  57. data/lib/apex_charts/options/dry_schema/fill_options.rb +34 -0
  58. data/lib/apex_charts/options/dry_schema/general_schema/drop_shadow.rb +14 -0
  59. data/lib/apex_charts/options/dry_schema/general_schema/function.rb +12 -0
  60. data/lib/apex_charts/options/dry_schema/grid_options.rb +19 -0
  61. data/lib/apex_charts/options/dry_schema/helper_options.rb +22 -0
  62. data/lib/apex_charts/options/dry_schema/legend_options.rb +61 -0
  63. data/lib/apex_charts/options/dry_schema/markers_options.rb +34 -0
  64. data/lib/apex_charts/options/dry_schema/markers_options/discrete_point.rb +13 -0
  65. data/lib/apex_charts/options/dry_schema/no_data_options.rb +16 -0
  66. data/lib/apex_charts/options/dry_schema/plot_options.rb +231 -0
  67. data/lib/apex_charts/options/dry_schema/root_options.rb +42 -0
  68. data/lib/apex_charts/options/dry_schema/schema.rb +32 -0
  69. data/lib/apex_charts/options/dry_schema/states_options.rb +22 -0
  70. data/lib/apex_charts/options/dry_schema/states_options/filter.rb +10 -0
  71. data/lib/apex_charts/options/dry_schema/stroke_options.rb +21 -0
  72. data/lib/apex_charts/options/dry_schema/theme_options.rb +18 -0
  73. data/lib/apex_charts/options/dry_schema/title_subtitle_options.rb +22 -0
  74. data/lib/apex_charts/options/dry_schema/tooltip_options.rb +27 -0
  75. data/lib/apex_charts/options/dry_schema/x_axis_options.rb +30 -0
  76. data/lib/apex_charts/options/dry_schema/y_axis_options.rb +30 -0
  77. data/lib/{apexcharts → apex_charts}/options_builder.rb +63 -40
  78. data/lib/{apexcharts → apex_charts}/prefix_with_apex.rb +3 -1
  79. data/lib/{apexcharts → apex_charts}/prefixer.rb +2 -0
  80. data/lib/apex_charts/renderer.rb +113 -0
  81. data/lib/apex_charts/series.rb +7 -0
  82. data/lib/{apexcharts/series/bubble.rb → apex_charts/series/bubble_series.rb} +4 -2
  83. data/lib/{apexcharts/series/cartesian.rb → apex_charts/series/cartesian_series.rb} +4 -2
  84. data/lib/{apexcharts/series/polar.rb → apex_charts/series/polar_series.rb} +4 -2
  85. data/lib/{apexcharts → apex_charts}/support/rails.rb +0 -0
  86. data/lib/{apexcharts → apex_charts}/support/sinatra.rb +0 -0
  87. data/lib/{apexcharts → apex_charts}/theme.rb +2 -18
  88. data/lib/{apexcharts → apex_charts}/utils.rb +0 -0
  89. data/lib/{apexcharts → apex_charts}/utils/copy.rb +2 -0
  90. data/lib/{apexcharts → apex_charts}/utils/date_time.rb +7 -2
  91. data/lib/{apexcharts → apex_charts}/utils/hash.rb +2 -0
  92. data/lib/{apexcharts → apex_charts}/version.rb +2 -1
  93. data/lib/apexcharts.rb +3 -3
  94. data/vendor/assets/javascripts/apexcharts.js +11 -3
  95. metadata +103 -74
  96. data/lib/apexcharts/charts.rb +0 -13
  97. data/lib/apexcharts/charts/polar.rb +0 -7
  98. data/lib/apexcharts/config.rb +0 -25
  99. data/lib/apexcharts/config/default_options.rb +0 -12
  100. data/lib/apexcharts/options/annotations.rb +0 -10
  101. data/lib/apexcharts/options/axis.rb +0 -17
  102. data/lib/apexcharts/options/chart.rb +0 -26
  103. data/lib/apexcharts/options/data_labels.rb +0 -14
  104. data/lib/apexcharts/options/div_attributes.rb +0 -9
  105. data/lib/apexcharts/options/fill.rb +0 -12
  106. data/lib/apexcharts/options/grid.rb +0 -15
  107. data/lib/apexcharts/options/legend.rb +0 -27
  108. data/lib/apexcharts/options/markers.rb +0 -18
  109. data/lib/apexcharts/options/no_data.rb +0 -12
  110. data/lib/apexcharts/options/plot_options.rb +0 -12
  111. data/lib/apexcharts/options/root.rb +0 -44
  112. data/lib/apexcharts/options/states.rb +0 -9
  113. data/lib/apexcharts/options/stroke.rb +0 -12
  114. data/lib/apexcharts/options/subtitle.rb +0 -9
  115. data/lib/apexcharts/options/theme.rb +0 -8
  116. data/lib/apexcharts/options/title.rb +0 -13
  117. data/lib/apexcharts/options/tooltip.rb +0 -22
  118. data/lib/apexcharts/options/x_axis.rb +0 -12
  119. data/lib/apexcharts/options/y_axis.rb +0 -15
  120. data/lib/apexcharts/renderer.rb +0 -68
  121. data/lib/apexcharts/series.rb +0 -7
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'schema'
4
+ require_relative 'helper_options'
5
+ require_relative 'chart_options'
6
+ require_relative 'stroke_options'
7
+ require_relative 'states_options'
8
+
9
+ module ApexCharts::Options
10
+ module DrySchema
11
+ class RootOptions < Schema
12
+ define do
13
+ optional(:annotations)
14
+ optional(:chart)
15
+ optional(:colors)
16
+ optional(:dataLabels)
17
+ optional(:fill)
18
+ optional(:grid)
19
+ optional(:labels)
20
+ optional(:legend)
21
+ optional(:markers)
22
+ optional(:noData)
23
+ optional(:plotOptions)
24
+ optional(:responsive)
25
+ optional(:series)
26
+ optional(:states)
27
+ optional(:stroke)
28
+ optional(:subtitle)
29
+ optional(:theme)
30
+ optional(:title)
31
+ optional(:tooltip)
32
+ optional(:xaxis)
33
+ optional(:yaxis)
34
+
35
+ (HelperOptions.keys + ChartOptions.keys +
36
+ StrokeOptions.keys + StatesOptions.keys).each do |key|
37
+ optional(key)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,32 @@
1
+ require 'dry/schema'
2
+
3
+ Dry::Schema.config.validate_keys = true
4
+
5
+ module ApexCharts::Options
6
+ module DrySchema
7
+ class Schema < ::Dry::Schema::Params
8
+ class << self
9
+ def check(hash)
10
+ return hash if production?
11
+
12
+ schema = new[hash]
13
+ if schema.failure?
14
+ raise schema.errors.to_h.inspect
15
+ else
16
+ hash
17
+ end
18
+ end
19
+
20
+ def keys
21
+ definition.send(:key_map).map{|key| key.name.to_sym }
22
+ end
23
+
24
+ private
25
+
26
+ def production?
27
+ (ENV['APP_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV']) == "production"
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'states_options/filter'
4
+
5
+ module ApexCharts::Options
6
+ module DrySchema
7
+ class StatesOptions < Schema
8
+ define do
9
+ optional(:active).hash do
10
+ optional(:allowMultipleDataPointsSelection) { bool? }
11
+ optional(:filter).hash(Filter)
12
+ end
13
+ optional(:hover).hash do
14
+ optional(:filter).hash(Filter)
15
+ end
16
+ optional(:normal).hash do
17
+ optional(:filter).hash(Filter)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Options
4
+ module DrySchema
5
+ Filter = ::Dry::Schema.Params do
6
+ optional(:type) { str? }
7
+ optional(:value) { int? | float? }
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Options
4
+ module DrySchema
5
+ class StrokeOptions < Schema
6
+ define do
7
+ optional(:colors) { array? & each { str? } }
8
+ optional(:curve) {
9
+ included_in?(%w[smooth straight stepline]) |
10
+ (array? & each {
11
+ included_in? %w[smooth straight stepline]
12
+ })
13
+ }
14
+ optional(:dashArray) { int? | float? | (array? & each { int? | float? }) }
15
+ optional(:lineCap) { included_in? %w[butt square round] }
16
+ optional(:show) { bool? }
17
+ optional(:width) { int? | float? | (array? & each { int? | float? }) }
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Options
4
+ module DrySchema
5
+ class ThemeOptions < Schema
6
+ define do
7
+ optional(:mode).value(included_in?: %w[light dark])
8
+ optional(:monochrome).hash do
9
+ optional(:enabled) { bool? }
10
+ optional(:color) { str? }
11
+ optional(:shadeTo).value(included_in?: %w[light dark])
12
+ optional(:shadeIntensity) { int? | float? }
13
+ end
14
+ optional(:palette) { str? }
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Options
4
+ module DrySchema
5
+ class TitleSubtitleOptions < Schema
6
+ define do
7
+ optional(:align) { included_in? %w[left center right] }
8
+ optional(:floating) { bool? }
9
+ optional(:margin) { int? | float? }
10
+ optional(:offsetX) { int? | float? }
11
+ optional(:offsetY) { int? | float? }
12
+ optional(:style).hash do
13
+ optional(:color) { str? }
14
+ optional(:fontFamily) { str? }
15
+ optional(:fontSize) { str? }
16
+ optional(:fontWeight) { str? | int? | float? }
17
+ end
18
+ optional(:text) { str? }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Options
4
+ module DrySchema
5
+ class TooltipOptions < Schema
6
+ define do
7
+ optional(:custom)
8
+ optional(:enabled)
9
+ optional(:enabledOnSeries)
10
+ optional(:fillSeriesColor)
11
+ optional(:fixed)
12
+ optional(:followCursor)
13
+ optional(:intersect)
14
+ optional(:inverseOrder)
15
+ optional(:items)
16
+ optional(:marker)
17
+ optional(:onDatasetHover)
18
+ optional(:shared)
19
+ optional(:style)
20
+ optional(:theme)
21
+ optional(:x)
22
+ optional(:y)
23
+ optional(:z)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Options
4
+ module DrySchema
5
+ class XAxisOptions < Schema
6
+ define do
7
+ optional(:axisBorder)
8
+ optional(:axisTicks)
9
+ optional(:categories)
10
+ optional(:overwriteCategories)
11
+ optional(:crosshairs)
12
+ optional(:floating)
13
+ optional(:decimalsInFloat)
14
+ optional(:labels)
15
+ optional(:max)
16
+ optional(:min)
17
+ optional(:position)
18
+ optional(:range)
19
+ optional(:tickAmount)
20
+ optional(:tickPlacement)
21
+ optional(:title)
22
+ optional(:tooltip)
23
+ optional(:type)
24
+ optional(:offsetX)
25
+ optional(:offsetY)
26
+ optional(:sorted)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Options
4
+ module DrySchema
5
+ class YAxisOptions < Schema
6
+ define do
7
+ optional(:axisBorder)
8
+ optional(:axisTicks)
9
+ optional(:crosshairs)
10
+ optional(:decimalsInFloat)
11
+ optional(:floating)
12
+ optional(:forceNiceScale)
13
+ optional(:labels)
14
+ optional(:logarithmic)
15
+ optional(:max)
16
+ optional(:min)
17
+ optional(:opposite)
18
+ optional(:reversed)
19
+ optional(:seriesName)
20
+ optional(:show)
21
+ optional(:showAlways)
22
+ optional(:showForNullSeries)
23
+ optional(:tickAmount)
24
+ optional(:title)
25
+ optional(:tooltip)
26
+ optional(:type)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,26 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'smart_kv'
4
- require_relative 'options/root'
5
- require_relative 'options/annotations'
6
- require_relative 'options/data_labels'
7
- require_relative 'options/fill'
8
- require_relative 'options/grid'
9
- require_relative 'options/legend'
10
- require_relative 'options/markers'
11
- require_relative 'options/no_data'
12
- require_relative 'options/plot_options'
13
- require_relative 'options/states'
14
- require_relative 'options/subtitle'
15
- require_relative 'options/theme'
16
- require_relative 'options/tooltip'
17
- require_relative 'options/x_axis'
18
- require_relative 'options/y_axis'
3
+ %w(default dry_schema).each do |schema_dir|
4
+ require_relative "options/#{schema_dir}/root_options"
5
+ require_relative "options/#{schema_dir}/annotations_options"
6
+ require_relative "options/#{schema_dir}/data_labels_options"
7
+ require_relative "options/#{schema_dir}/fill_options"
8
+ require_relative "options/#{schema_dir}/grid_options"
9
+ require_relative "options/#{schema_dir}/legend_options"
10
+ require_relative "options/#{schema_dir}/markers_options"
11
+ require_relative "options/#{schema_dir}/no_data_options"
12
+ require_relative "options/#{schema_dir}/plot_options"
13
+ require_relative "options/#{schema_dir}/states_options"
14
+ require_relative "options/#{schema_dir}/title_subtitle_options"
15
+ require_relative "options/#{schema_dir}/theme_options"
16
+ require_relative "options/#{schema_dir}/tooltip_options"
17
+ require_relative "options/#{schema_dir}/x_axis_options"
18
+ require_relative "options/#{schema_dir}/y_axis_options"
19
+ end
19
20
 
20
21
  module ApexCharts
21
22
  class OptionsBuilder
22
- include Utils::Hash
23
- include Utils::DateTime
23
+ include ApexCharts::Utils::Hash
24
+ include ApexCharts::Utils::DateTime
24
25
 
25
26
  attr_reader :built
26
27
 
@@ -35,7 +36,7 @@ module ApexCharts
35
36
  end
36
37
 
37
38
  def build_options
38
- RootOptions.check @options
39
+ options_class(:Root).check @options
39
40
 
40
41
  build_chart
41
42
  build_div
@@ -46,6 +47,7 @@ module ApexCharts
46
47
  build_annotations
47
48
  build_colors
48
49
  build_data_labels
50
+ build_defer
49
51
  build_fill
50
52
  build_grid
51
53
  build_labels
@@ -77,14 +79,19 @@ module ApexCharts
77
79
  def build_annotations
78
80
  annotations = @options.delete :annotations
79
81
  @built[:annotations] = (
80
- AnnotationsOptions.check annotations.compact if annotations.is_a? Hash
82
+ if annotations.is_a? Hash
83
+ options_class(:Annotations).check annotations.compact
84
+ end
81
85
  )
82
86
  end
83
87
 
84
88
  def build_chart
85
89
  @built[:chart] =
86
90
  if target = @options.delete(:brushTarget)
87
- {brush: {enabled: true, target: target.to_s}, selection: {enabled: true}}
91
+ {
92
+ brush: {enabled: true, target: target.to_s},
93
+ selection: {enabled: true}
94
+ }
88
95
  else
89
96
  {}
90
97
  end
@@ -105,7 +112,7 @@ module ApexCharts
105
112
 
106
113
  return unless chart.is_a? Hash
107
114
 
108
- @built[:chart].merge! ChartOptions.check(chart.compact)
115
+ @built[:chart].merge! options_class(:Chart).check(chart.compact)
109
116
  end
110
117
 
111
118
  def build_colors
@@ -121,16 +128,22 @@ module ApexCharts
121
128
  @built[:dataLabels] = if [true, false].include? data_labels
122
129
  {enabled: data_labels}
123
130
  elsif data_labels.is_a? Hash
124
- DataLabelsOptions.check data_labels.compact
131
+ options_class(:DataLabels).check data_labels.compact
125
132
  end
126
133
  end
127
134
 
135
+ def build_defer
136
+ defer = @options.delete :defer
137
+ @built[:defer] = defer == true
138
+ end
139
+
140
+
128
141
  def build_fill
129
142
  fill = @options.delete :fill
130
143
  @built[:fill] = if fill.is_a? String
131
144
  {type: fill}
132
145
  elsif fill.is_a? Hash
133
- FillOptions.check fill.compact
146
+ options_class(:Fill).check fill.compact
134
147
  end
135
148
  end
136
149
 
@@ -139,7 +152,7 @@ module ApexCharts
139
152
  @built[:grid] = if [true, false].include? grid
140
153
  {show: grid}
141
154
  elsif grid.is_a? Hash
142
- GridOptions.check grid.compact
155
+ options_class(:Grid).check grid.compact
143
156
  end
144
157
  end
145
158
 
@@ -156,7 +169,7 @@ module ApexCharts
156
169
  elsif legend.is_a? String
157
170
  {show: true, position: legend}
158
171
  elsif legend.is_a? Hash
159
- LegendOptions.check legend.compact
172
+ options_class(:Legend).check legend.compact
160
173
  end
161
174
  end
162
175
 
@@ -165,7 +178,7 @@ module ApexCharts
165
178
  @built[:markers] = if markers.is_a? String
166
179
  {shape: markers}
167
180
  elsif markers.is_a? Hash
168
- MarkersOptions.check markers.compact
181
+ options_class(:Markers).check markers.compact
169
182
  end
170
183
  end
171
184
 
@@ -174,13 +187,16 @@ module ApexCharts
174
187
  @built[:noData] = if no_data.is_a? String
175
188
  {text: no_data}
176
189
  elsif no_data.is_a? Hash
177
- NoDataOptions.check no_data.compact
190
+ options_class(:NoData).check no_data.compact
178
191
  end
179
192
  end
180
193
 
181
194
  def build_plot_options
182
195
  plot_options = @options.delete :plotOptions
183
- @built[:plotOptions] = (PlotOptions.check plot_options.compact if plot_options.is_a? Hash)
196
+ return unless plot_options.is_a? Hash
197
+
198
+ @built[:plotOptions] =
199
+ options_class(:Plot).check plot_options.compact
184
200
  end
185
201
 
186
202
  def build_responsive
@@ -197,7 +213,7 @@ module ApexCharts
197
213
  }.compact
198
214
 
199
215
  states = @options.delete :states
200
- @built[:states].merge! StatesOptions.check(states.compact) if states.is_a? Hash
216
+ @built[:states].merge! options_class(:States).check(states.compact) if states.is_a? Hash
201
217
 
202
218
  @built[:states] = nil if @built[:states].empty?
203
219
  end
@@ -210,7 +226,7 @@ module ApexCharts
210
226
  if [true, false].include? stroke
211
227
  @built[:stroke].merge!(show: stroke)
212
228
  elsif stroke.is_a? Hash
213
- @built[:stroke].merge! StrokeOptions.check(stroke.compact)
229
+ @built[:stroke].merge! options_class(:Stroke).check(stroke.compact)
214
230
  end
215
231
 
216
232
  @built[:stroke] = nil if @built[:stroke].empty?
@@ -221,7 +237,7 @@ module ApexCharts
221
237
  @built[:subtitle] = if subtitle.is_a? String
222
238
  {text: subtitle}
223
239
  elsif subtitle.is_a? Hash
224
- SubtitleOptions.check subtitle.compact
240
+ options_class(:TitleSubtitle).check subtitle.compact
225
241
  end
226
242
  end
227
243
 
@@ -230,14 +246,14 @@ module ApexCharts
230
246
  @built[:theme] = if theme.is_a? String
231
247
  case theme
232
248
  when 'random'
233
- resolve_theme(Theme::Local.all_palettes.sample)
249
+ resolve_theme(Theme.all_palettes.sample)
234
250
  when 'monochrome'
235
251
  {monochrome: {enabled: true}}
236
252
  else
237
253
  resolve_theme(theme)
238
254
  end
239
255
  elsif theme.is_a? Hash
240
- ThemeOptions.check theme.compact
256
+ options_class(:Theme).check theme.compact
241
257
  end
242
258
  end
243
259
 
@@ -246,7 +262,7 @@ module ApexCharts
246
262
  @built[:title] = if title.is_a? String
247
263
  {text: title}
248
264
  elsif title.is_a? Hash
249
- TitleOptions.check title.compact
265
+ options_class(:TitleSubtitle).check title.compact
250
266
  end
251
267
  end
252
268
 
@@ -255,7 +271,7 @@ module ApexCharts
255
271
  @built[:tooltip] = if [true, false].include? tooltip
256
272
  {enabled: tooltip}
257
273
  elsif tooltip.is_a? Hash
258
- TooltipOptions.check tooltip.compact
274
+ options_class(:Tooltip).check tooltip.compact
259
275
  end
260
276
  end
261
277
 
@@ -272,7 +288,7 @@ module ApexCharts
272
288
  if xaxis.is_a? String
273
289
  @built[:xaxis][:title] = {text: xaxis}
274
290
  elsif xaxis.is_a? Hash
275
- XAxisOptions.check xaxis
291
+ options_class(:XAxis).check xaxis
276
292
  @built[:xaxis].merge! xaxis
277
293
  end
278
294
 
@@ -292,13 +308,15 @@ module ApexCharts
292
308
  if yaxis.is_a? String
293
309
  @built[:yaxis][0][:title] = {text: yaxis}
294
310
  elsif yaxis.is_a? Hash
295
- YAxisOptions.check yaxis
311
+ options_class(:YAxis).check yaxis
296
312
  @built[:yaxis][0].merge! yaxis
297
313
  end
298
314
 
299
315
  @built[:yaxis] = nil if @built[:yaxis].all?(&:empty?)
300
316
  end
301
317
 
318
+ private
319
+
302
320
  def enabled(options)
303
321
  boolean_to_hash(options) do |opts|
304
322
  {enabled: opts}
@@ -326,10 +344,15 @@ module ApexCharts
326
344
  def resolve_theme(theme)
327
345
  if Theme::PALETTES.include? theme
328
346
  {palette: theme}
329
- elsif Theme::Local.palette_names.include? theme
330
- @built[:colors] = Theme::Local.get_colors(theme)
347
+ elsif Theme.palette_names.include? theme
348
+ @built[:colors] = Theme.get_colors(theme)
331
349
  nil
332
350
  end
333
351
  end
352
+
353
+ def options_class(name)
354
+ schema = ApexCharts.config.schema
355
+ ApexCharts.const_get "Options::#{schema}::#{name}Options"
356
+ end
334
357
  end
335
358
  end