apexcharts 0.1.5 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +456 -38
  3. data/lib/apex_charts/charts.rb +16 -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/apex_charts/charts/base_chart.rb +37 -0
  7. data/lib/apex_charts/charts/bubble_chart.rb +13 -0
  8. data/lib/{apexcharts/charts/candlestick.rb → apex_charts/charts/candlestick_chart.rb} +1 -1
  9. data/lib/apex_charts/charts/cartesian_chart.rb +82 -0
  10. data/lib/{apexcharts/charts/column.rb → apex_charts/charts/column_chart.rb} +3 -1
  11. data/lib/{apexcharts/charts/donut.rb → apex_charts/charts/donut_chart.rb} +1 -2
  12. data/lib/{apexcharts → apex_charts}/charts/features/annotations.rb +22 -21
  13. data/lib/{apexcharts → apex_charts}/charts/features/mixable.rb +2 -3
  14. data/lib/{apexcharts/charts/heatmap.rb → apex_charts/charts/heatmap_chart.rb} +3 -5
  15. data/lib/{apexcharts/charts/line.rb → apex_charts/charts/line_chart.rb} +1 -1
  16. data/lib/apex_charts/charts/mixed_charts.rb +101 -0
  17. data/lib/{apexcharts/charts/pie.rb → apex_charts/charts/pie_chart.rb} +1 -2
  18. data/lib/apex_charts/charts/polar_chart.rb +9 -0
  19. data/lib/{apexcharts/charts/radar.rb → apex_charts/charts/radar_chart.rb} +3 -5
  20. data/lib/{apexcharts/charts/radial_bar.rb → apex_charts/charts/radial_bar_chart.rb} +1 -2
  21. data/lib/apex_charts/charts/range_bar_chart.rb +9 -0
  22. data/lib/{apexcharts/charts/scatter.rb → apex_charts/charts/scatter_chart.rb} +1 -1
  23. data/lib/apex_charts/charts/syncing_charts.rb +84 -0
  24. data/lib/apex_charts/colors.rb +27 -0
  25. data/lib/apex_charts/config/default_options.rb +16 -0
  26. data/lib/apex_charts/configuration.rb +25 -0
  27. data/lib/apex_charts/helper.rb +190 -0
  28. data/lib/apex_charts/options/annotations_options.rb +15 -0
  29. data/lib/apex_charts/options/chart_options.rb +32 -0
  30. data/lib/apex_charts/options/data_labels_options.rb +18 -0
  31. data/lib/apex_charts/options/div_attributes.rb +11 -0
  32. data/lib/apex_charts/options/fill_options.rb +14 -0
  33. data/lib/apex_charts/options/grid_options.rb +17 -0
  34. data/lib/apex_charts/options/legend_options.rb +32 -0
  35. data/lib/apex_charts/options/markers_options.rb +24 -0
  36. data/lib/apex_charts/options/no_data_options.rb +14 -0
  37. data/lib/apex_charts/options/plot_options.rb +16 -0
  38. data/lib/apex_charts/options/root_options.rb +47 -0
  39. data/lib/apex_charts/options/states_options.rb +11 -0
  40. data/lib/apex_charts/options/stroke_options.rb +14 -0
  41. data/lib/apex_charts/options/theme_options.rb +11 -0
  42. data/lib/apex_charts/options/title_subtitle_options.rb +15 -0
  43. data/lib/apex_charts/options/tooltip_options.rb +25 -0
  44. data/lib/apex_charts/options/x_axis_options.rb +26 -0
  45. data/lib/apex_charts/options/y_axis_options.rb +28 -0
  46. data/lib/{apexcharts → apex_charts}/options_builder.rb +95 -90
  47. data/lib/apex_charts/prefix_with_apex.rb +7 -0
  48. data/lib/apex_charts/prefixer.rb +21 -0
  49. data/lib/apex_charts/renderer.rb +113 -0
  50. data/lib/apex_charts/series.rb +7 -0
  51. data/lib/apex_charts/series/bubble_series.rb +50 -0
  52. data/lib/apex_charts/series/cartesian_series.rb +81 -0
  53. data/lib/apex_charts/series/polar_series.rb +48 -0
  54. data/lib/{apexcharts → apex_charts}/support/rails.rb +1 -1
  55. data/lib/apex_charts/support/sinatra.rb +9 -0
  56. data/lib/apex_charts/theme.rb +60 -0
  57. data/lib/{apexcharts → apex_charts}/utils.rb +1 -0
  58. data/lib/apex_charts/utils/copy.rb +11 -0
  59. data/lib/apex_charts/utils/date_time.rb +70 -0
  60. data/lib/{apexcharts → apex_charts}/utils/hash.rb +4 -3
  61. data/lib/{apexcharts → apex_charts}/version.rb +2 -1
  62. data/lib/apexcharts.rb +3 -2
  63. data/vendor/assets/javascripts/apexcharts.js +11 -3
  64. metadata +85 -65
  65. data/lib/apexcharts/charts.rb +0 -19
  66. data/lib/apexcharts/charts/base.rb +0 -34
  67. data/lib/apexcharts/charts/bubble.rb +0 -19
  68. data/lib/apexcharts/charts/cartesian.rb +0 -81
  69. data/lib/apexcharts/charts/mixed.rb +0 -85
  70. data/lib/apexcharts/charts/polar.rb +0 -14
  71. data/lib/apexcharts/charts/syncing.rb +0 -70
  72. data/lib/apexcharts/helper.rb +0 -109
  73. data/lib/apexcharts/options/annotations.rb +0 -10
  74. data/lib/apexcharts/options/axis.rb +0 -17
  75. data/lib/apexcharts/options/chart.rb +0 -26
  76. data/lib/apexcharts/options/data_labels.rb +0 -12
  77. data/lib/apexcharts/options/div_attributes.rb +0 -10
  78. data/lib/apexcharts/options/fill.rb +0 -12
  79. data/lib/apexcharts/options/grid.rb +0 -15
  80. data/lib/apexcharts/options/legend.rb +0 -24
  81. data/lib/apexcharts/options/markers.rb +0 -18
  82. data/lib/apexcharts/options/no_data.rb +0 -12
  83. data/lib/apexcharts/options/plot_options.rb +0 -12
  84. data/lib/apexcharts/options/root.rb +0 -42
  85. data/lib/apexcharts/options/states.rb +0 -9
  86. data/lib/apexcharts/options/stroke.rb +0 -12
  87. data/lib/apexcharts/options/subtitle.rb +0 -7
  88. data/lib/apexcharts/options/theme.rb +0 -8
  89. data/lib/apexcharts/options/title.rb +0 -13
  90. data/lib/apexcharts/options/tooltip.rb +0 -22
  91. data/lib/apexcharts/options/x_axis.rb +0 -12
  92. data/lib/apexcharts/options/y_axis.rb +0 -15
  93. data/lib/apexcharts/renderer.rb +0 -21
  94. data/lib/apexcharts/series.rb +0 -5
  95. data/lib/apexcharts/series/bubble.rb +0 -37
  96. data/lib/apexcharts/series/cartesian.rb +0 -65
  97. data/lib/apexcharts/series/polar.rb +0 -32
  98. data/lib/apexcharts/utils/date_time.rb +0 -59
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Charts
4
+ class PolarChart < BaseChart
5
+ def series_type
6
+ ApexCharts::Series::PolarSeries
7
+ end
8
+ end
9
+ end
@@ -1,15 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module ApexCharts
3
+ module ApexCharts::Charts
4
4
  class RadarChart < BaseChart
5
5
  def chart_type
6
6
  'radar'
7
7
  end
8
8
 
9
- private
10
-
11
- def sanitize_data(data)
12
- ApexCharts::CartesianSeries.new(data).sanitized
9
+ def series_type
10
+ ApexCharts::Series::CartesianSeries
13
11
  end
14
12
  end
15
13
  end
@@ -1,10 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module ApexCharts
3
+ module ApexCharts::Charts
4
4
  class RadialBarChart < PolarChart
5
5
  def chart_type
6
6
  'radialBar'
7
7
  end
8
8
  end
9
9
  end
10
-
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Charts
4
+ class RangeBarChart < BarChart
5
+ def chart_type
6
+ 'rangeBar'
7
+ end
8
+ end
9
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module ApexCharts
3
+ module ApexCharts::Charts
4
4
  class ScatterChart < CartesianChart
5
5
  def chart_type
6
6
  'scatter'
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Charts
4
+ class SyncingCharts
5
+ def initialize(outer_self, options={}, &block)
6
+ @outer_self = outer_self
7
+ @html = ''
8
+ build_instance_variables
9
+ @options = options
10
+ @options[:group] ||= apexcharts_group
11
+
12
+ instance_eval &block
13
+
14
+ @options[:annotations] = @annotations if @annotations
15
+ end
16
+
17
+ def line_chart(data, options={}, &block)
18
+ options[:id] = apexcharts_id
19
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
20
+ @html +=
21
+ LineChart.new(outer_self, data, @options.merge(options), &block).render
22
+ end
23
+
24
+ def area_chart(data, options={}, &block)
25
+ options[:id] = apexcharts_id
26
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
27
+ @html +=
28
+ AreaChart.new(outer_self, data, @options.merge(options), &block).render
29
+ end
30
+
31
+ def bar_chart(data, options={}, &block)
32
+ options[:id] = apexcharts_id
33
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
34
+ @html +=
35
+ BarChart.new(outer_self, data, @options.merge(options), &block).render
36
+ end
37
+
38
+ def column_chart(data, options={}, &block)
39
+ options[:id] = apexcharts_id
40
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
41
+ @html +=
42
+ ColumnChart.new(outer_self, data, @options.merge(options), &block).render
43
+ end
44
+
45
+ def scatter_chart(data, options={}, &block)
46
+ options[:id] = apexcharts_id
47
+ outer_self = eval('self', block.binding, __FILE__, __LINE__) if block_given?
48
+ @html +=
49
+ ScatterChart.new(outer_self, data, @options.merge(options), &block).render
50
+ end
51
+
52
+ def mixed_charts(options={}, &block)
53
+ options[:id] = apexcharts_id
54
+ outer_self = eval('self', block.binding, __FILE__, __LINE__)
55
+ @html +=
56
+ MixedCharts.new(outer_self, @options.merge(options), &block).render
57
+ end
58
+ alias_method :combo_charts, :mixed_charts
59
+
60
+ def render
61
+ @html
62
+ end
63
+
64
+ def method_missing(method, *args, &block)
65
+ if @outer_self.respond_to?(method, true)
66
+ @outer_self.send method, *args, &block
67
+ else
68
+ super
69
+ end
70
+ end
71
+
72
+ def respond_to_missing?(method, *args)
73
+ @outer_self.respond_to? method, *args || super
74
+ end
75
+
76
+ private
77
+
78
+ def build_instance_variables
79
+ (@outer_self.instance_variables - instance_variables).each do |i|
80
+ instance_variable_set(i, @outer_self.instance_variable_get(i))
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'set'
4
+
5
+ module ApexCharts
6
+ class Colors
7
+ def initialize(colors)
8
+ @color_set = Set.new(clean(colors))
9
+ end
10
+
11
+ def values
12
+ @color_set.to_a
13
+ end
14
+
15
+ private
16
+
17
+ def clean(colors)
18
+ colors = colors.respond_to?(:to_set) ? colors.to_a.flatten : Array(colors)
19
+ colors.map do |color|
20
+ color = color.upcase
21
+ raise "unrecognized color #{color}" unless color[/^#[0-9A-F]{6}/]
22
+
23
+ color
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts
4
+ module Config
5
+ module DefaultOptions
6
+ def default_options=(options)
7
+ @default_options =
8
+ ApexCharts::OptionsBuilder.new(nil, options).build_general_options
9
+ end
10
+
11
+ def default_options
12
+ @default_options ||= {}
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'config/default_options'
4
+
5
+ module ApexCharts
6
+ class << self
7
+ attr_writer :helper_prefix
8
+
9
+ def helper_prefix
10
+ @helper_prefix ||= ENV['APEXCHARTS_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 ApexCharts::Config::DefaultOptions
24
+ end
25
+ end
@@ -0,0 +1,190 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'configuration'
4
+ require_relative 'utils'
5
+ require_relative 'series'
6
+ require_relative 'options_builder'
7
+ require_relative 'renderer'
8
+ require_relative 'charts'
9
+ require_relative 'prefixer'
10
+ require_relative 'theme'
11
+
12
+ module ApexCharts
13
+ module Helper
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
+ ApexCharts::Charts::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
+ ApexCharts::Charts::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
+ ApexCharts::Charts::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
+ ApexCharts::Charts::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
+ ApexCharts::Charts::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
+ ApexCharts::Charts::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
+ ApexCharts::Charts::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
+ ApexCharts::Charts::HeatmapChart.new(
84
+ *prepare_series_and_options(series, options)
85
+ )
86
+ )
87
+ end
88
+
89
+ def bubble_chart(series, options={})
90
+ draw_chart(
91
+ ApexCharts::Charts::BubbleChart.new(
92
+ *prepare_series_and_options(series, options)
93
+ )
94
+ )
95
+ end
96
+
97
+ def radar_chart(series, options={})
98
+ draw_chart(
99
+ ApexCharts::Charts::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
+ ApexCharts::Charts::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
+ ApexCharts::Charts::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
+ ApexCharts::Charts::PieChart.new(
128
+ *prepare_series_and_options(series, options)
129
+ )
130
+ )
131
+ end
132
+
133
+ def donut_chart(series, options={})
134
+ draw_chart(
135
+ ApexCharts::Charts::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
+ ApexCharts::Charts::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
+ warn "`create_palette' and `destroy_palette` are deprecated " +
153
+ "and will be removed in the next release."
154
+
155
+ Theme::Local.create palette_name, colors
156
+ end
157
+
158
+ def destroy_palette(palette_name)
159
+ Theme::Local.destroy palette_name
160
+ end
161
+
162
+ private
163
+
164
+ def draw_chart(chart)
165
+ chart = chart.render
166
+ chart.respond_to?(:html_safe) ? chart.html_safe : chart
167
+ end
168
+
169
+ def prepare_series_and_options(series, options)
170
+ series = deep_copy(series)
171
+ options = deep_copy(options)
172
+ options[:id] ||= apexcharts_id
173
+ [series, options]
174
+ end
175
+
176
+ def apexcharts_id
177
+ @_apexcharts_id ||= 0
178
+ @_apexcharts_id += 1
179
+ "#{ApexCharts.helper_prefix}chart-#{@_apexcharts_id}"
180
+ end
181
+
182
+ def apexcharts_group
183
+ @_apexcharts_group ||= 0
184
+ @_apexcharts_group += 1
185
+ "#{ApexCharts.helper_prefix}chart-group-#{@_apexcharts_group}"
186
+ end
187
+
188
+ include Utils::Copy
189
+ end
190
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Options
4
+ class AnnotationsOptions < ::SmartKv
5
+ optional *%i[
6
+ images
7
+ points
8
+ position
9
+ shapes
10
+ texts
11
+ xaxis
12
+ yaxis
13
+ ]
14
+ end
15
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApexCharts::Options
4
+ class ChartOptions < ::SmartKv
5
+ optional *%i[
6
+ animations
7
+ background
8
+ brush
9
+ defaultLocale
10
+ dropShadow
11
+ events
12
+ fontFamily
13
+ foreColor
14
+ group
15
+ height
16
+ id
17
+ locales
18
+ offsetX
19
+ offsetY
20
+ parentHeightOffset
21
+ redrawOnParentResize
22
+ selection
23
+ sparkline
24
+ stackType
25
+ stacked
26
+ toolbar
27
+ type
28
+ width
29
+ zoom
30
+ ]
31
+ end
32
+ end