apexcharts 0.1.7 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +138 -71
- data/lib/apex_charts/charts.rb +17 -0
- data/lib/{apexcharts/charts/area.rb → apex_charts/charts/area_chart.rb} +1 -1
- data/lib/{apexcharts/charts/bar.rb → apex_charts/charts/bar_chart.rb} +1 -1
- data/lib/{apexcharts/charts/base.rb → apex_charts/charts/base_chart.rb} +6 -4
- data/lib/apex_charts/charts/box_plot_chart.rb +8 -0
- data/lib/{apexcharts/charts/bubble.rb → apex_charts/charts/bubble_chart.rb} +2 -2
- data/lib/{apexcharts/charts/candlestick.rb → apex_charts/charts/candlestick_chart.rb} +1 -1
- data/lib/{apexcharts/charts/cartesian.rb → apex_charts/charts/cartesian_chart.rb} +9 -9
- data/lib/{apexcharts/charts/column.rb → apex_charts/charts/column_chart.rb} +3 -1
- data/lib/{apexcharts/charts/donut.rb → apex_charts/charts/donut_chart.rb} +1 -1
- data/lib/{apexcharts → apex_charts}/charts/features/annotations.rb +7 -5
- data/lib/{apexcharts → apex_charts}/charts/features/mixable.rb +1 -1
- data/lib/{apexcharts/charts/heatmap.rb → apex_charts/charts/heatmap_chart.rb} +2 -2
- data/lib/{apexcharts/charts/line.rb → apex_charts/charts/line_chart.rb} +1 -1
- data/lib/{apexcharts/charts/mixed.rb → apex_charts/charts/mixed_charts.rb} +13 -7
- data/lib/{apexcharts/charts/pie.rb → apex_charts/charts/pie_chart.rb} +1 -1
- data/lib/apex_charts/charts/polar_chart.rb +9 -0
- data/lib/{apexcharts/charts/radar.rb → apex_charts/charts/radar_chart.rb} +2 -2
- data/lib/{apexcharts/charts/radial_bar.rb → apex_charts/charts/radial_bar_chart.rb} +1 -1
- data/lib/{apexcharts/charts/range_bar.rb → apex_charts/charts/range_bar_chart.rb} +1 -1
- data/lib/{apexcharts/charts/scatter.rb → apex_charts/charts/scatter_chart.rb} +1 -1
- data/lib/{apexcharts/charts/syncing.rb → apex_charts/charts/syncing_charts.rb} +2 -2
- data/lib/{apexcharts → apex_charts}/colors.rb +2 -1
- data/lib/apex_charts/config/default_options.rb +16 -0
- data/lib/apex_charts/config/schema.rb +20 -0
- data/lib/apex_charts/configuration.rb +27 -0
- data/lib/{apexcharts → apex_charts}/helper.rb +25 -24
- data/lib/apex_charts/options/default/annotations_options.rb +14 -0
- data/lib/apex_charts/options/default/chart_options.rb +33 -0
- data/lib/apex_charts/options/default/data_labels_options.rb +18 -0
- data/lib/apex_charts/options/default/fill_options.rb +14 -0
- data/lib/apex_charts/options/default/grid_options.rb +17 -0
- data/lib/apex_charts/options/default/helper_options.rb +22 -0
- data/lib/apex_charts/options/default/legend_options.rb +33 -0
- data/lib/apex_charts/options/default/markers_options.rb +26 -0
- data/lib/apex_charts/options/default/no_data_options.rb +14 -0
- data/lib/apex_charts/options/default/plot_options.rb +19 -0
- data/lib/apex_charts/options/default/root_options.rb +38 -0
- data/lib/apex_charts/options/default/states_options.rb +11 -0
- data/lib/apex_charts/options/default/stroke_options.rb +14 -0
- data/lib/apex_charts/options/default/theme_options.rb +11 -0
- data/lib/apex_charts/options/default/title_subtitle_options.rb +15 -0
- data/lib/apex_charts/options/default/tooltip_options.rb +25 -0
- data/lib/apex_charts/options/default/x_axis_options.rb +27 -0
- data/lib/apex_charts/options/default/y_axis_options.rb +28 -0
- data/lib/apex_charts/options/dry_schema/annotations_options.rb +22 -0
- data/lib/apex_charts/options/dry_schema/annotations_options/annotation_label.rb +24 -0
- data/lib/apex_charts/options/dry_schema/annotations_options/image_annotations.rb +15 -0
- data/lib/apex_charts/options/dry_schema/annotations_options/point_annotations.rb +33 -0
- data/lib/apex_charts/options/dry_schema/annotations_options/text_annotations.rb +26 -0
- data/lib/apex_charts/options/dry_schema/annotations_options/x_axis_annotations.rb +20 -0
- data/lib/apex_charts/options/dry_schema/annotations_options/y_axis_annotations.rb +21 -0
- data/lib/apex_charts/options/dry_schema/chart_options.rb +35 -0
- data/lib/apex_charts/options/dry_schema/data_labels_options.rb +37 -0
- data/lib/apex_charts/options/dry_schema/fill_options.rb +34 -0
- data/lib/apex_charts/options/dry_schema/general_schema/drop_shadow.rb +14 -0
- data/lib/apex_charts/options/dry_schema/general_schema/function.rb +12 -0
- data/lib/apex_charts/options/dry_schema/grid_options.rb +19 -0
- data/lib/apex_charts/options/dry_schema/helper_options.rb +22 -0
- data/lib/apex_charts/options/dry_schema/legend_options.rb +61 -0
- data/lib/apex_charts/options/dry_schema/markers_options.rb +34 -0
- data/lib/apex_charts/options/dry_schema/markers_options/discrete_point.rb +13 -0
- data/lib/apex_charts/options/dry_schema/no_data_options.rb +16 -0
- data/lib/apex_charts/options/dry_schema/plot_options.rb +231 -0
- data/lib/apex_charts/options/dry_schema/root_options.rb +42 -0
- data/lib/apex_charts/options/dry_schema/schema.rb +32 -0
- data/lib/apex_charts/options/dry_schema/states_options.rb +22 -0
- data/lib/apex_charts/options/dry_schema/states_options/filter.rb +10 -0
- data/lib/apex_charts/options/dry_schema/stroke_options.rb +21 -0
- data/lib/apex_charts/options/dry_schema/theme_options.rb +18 -0
- data/lib/apex_charts/options/dry_schema/title_subtitle_options.rb +22 -0
- data/lib/apex_charts/options/dry_schema/tooltip_options.rb +27 -0
- data/lib/apex_charts/options/dry_schema/x_axis_options.rb +30 -0
- data/lib/apex_charts/options/dry_schema/y_axis_options.rb +30 -0
- data/lib/{apexcharts → apex_charts}/options_builder.rb +63 -40
- data/lib/{apexcharts → apex_charts}/prefix_with_apex.rb +3 -1
- data/lib/{apexcharts → apex_charts}/prefixer.rb +2 -0
- data/lib/apex_charts/renderer.rb +113 -0
- data/lib/apex_charts/series.rb +7 -0
- data/lib/{apexcharts/series/bubble.rb → apex_charts/series/bubble_series.rb} +4 -2
- data/lib/{apexcharts/series/cartesian.rb → apex_charts/series/cartesian_series.rb} +4 -2
- data/lib/{apexcharts/series/polar.rb → apex_charts/series/polar_series.rb} +4 -2
- data/lib/{apexcharts → apex_charts}/support/rails.rb +0 -0
- data/lib/{apexcharts → apex_charts}/support/sinatra.rb +0 -0
- data/lib/{apexcharts → apex_charts}/theme.rb +2 -18
- data/lib/{apexcharts → apex_charts}/utils.rb +0 -0
- data/lib/{apexcharts → apex_charts}/utils/copy.rb +2 -0
- data/lib/{apexcharts → apex_charts}/utils/date_time.rb +7 -2
- data/lib/{apexcharts → apex_charts}/utils/hash.rb +2 -0
- data/lib/{apexcharts → apex_charts}/version.rb +2 -1
- data/lib/apexcharts.rb +3 -3
- data/vendor/assets/javascripts/apexcharts.js +11 -3
- metadata +103 -74
- data/lib/apexcharts/charts.rb +0 -13
- data/lib/apexcharts/charts/polar.rb +0 -7
- data/lib/apexcharts/config.rb +0 -25
- data/lib/apexcharts/config/default_options.rb +0 -12
- data/lib/apexcharts/options/annotations.rb +0 -10
- data/lib/apexcharts/options/axis.rb +0 -17
- data/lib/apexcharts/options/chart.rb +0 -26
- data/lib/apexcharts/options/data_labels.rb +0 -14
- data/lib/apexcharts/options/div_attributes.rb +0 -9
- data/lib/apexcharts/options/fill.rb +0 -12
- data/lib/apexcharts/options/grid.rb +0 -15
- data/lib/apexcharts/options/legend.rb +0 -27
- data/lib/apexcharts/options/markers.rb +0 -18
- data/lib/apexcharts/options/no_data.rb +0 -12
- data/lib/apexcharts/options/plot_options.rb +0 -12
- data/lib/apexcharts/options/root.rb +0 -44
- data/lib/apexcharts/options/states.rb +0 -9
- data/lib/apexcharts/options/stroke.rb +0 -12
- data/lib/apexcharts/options/subtitle.rb +0 -9
- data/lib/apexcharts/options/theme.rb +0 -8
- data/lib/apexcharts/options/title.rb +0 -13
- data/lib/apexcharts/options/tooltip.rb +0 -22
- data/lib/apexcharts/options/x_axis.rb +0 -12
- data/lib/apexcharts/options/y_axis.rb +0 -15
- data/lib/apexcharts/renderer.rb +0 -68
- 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,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
|
-
|
4
|
-
require_relative
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
require_relative
|
11
|
-
require_relative
|
12
|
-
require_relative
|
13
|
-
require_relative
|
14
|
-
require_relative
|
15
|
-
require_relative
|
16
|
-
require_relative
|
17
|
-
require_relative
|
18
|
-
require_relative
|
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
|
-
|
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
|
-
|
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
|
-
{
|
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!
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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!
|
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!
|
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
|
-
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
330
|
-
@built[: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
|