apexcharts 0.1.11 → 0.2.0
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.
- checksums.yaml +4 -4
- data/README.md +64 -21
- data/lib/apex_charts/charts/box_plot_chart.rb +1 -0
- data/lib/apex_charts/configuration.rb +0 -2
- data/lib/apex_charts/options_builder.rb +128 -125
- data/lib/apex_charts/renderer.rb +10 -5
- data/lib/apex_charts/series/bubble_series.rb +2 -3
- data/lib/apex_charts/series/cartesian_series.rb +8 -2
- data/lib/apex_charts/version.rb +2 -2
- data/vendor/assets/javascripts/apexcharts.js +5 -5
- metadata +3 -79
- data/lib/apex_charts/config/schema.rb +0 -20
- data/lib/apex_charts/options/default/annotations_options.rb +0 -14
- data/lib/apex_charts/options/default/chart_options.rb +0 -33
- data/lib/apex_charts/options/default/data_labels_options.rb +0 -18
- data/lib/apex_charts/options/default/fill_options.rb +0 -14
- data/lib/apex_charts/options/default/grid_options.rb +0 -17
- data/lib/apex_charts/options/default/helper_options.rb +0 -22
- data/lib/apex_charts/options/default/legend_options.rb +0 -33
- data/lib/apex_charts/options/default/markers_options.rb +0 -26
- data/lib/apex_charts/options/default/no_data_options.rb +0 -14
- data/lib/apex_charts/options/default/plot_options.rb +0 -19
- data/lib/apex_charts/options/default/root_options.rb +0 -38
- data/lib/apex_charts/options/default/states_options.rb +0 -11
- data/lib/apex_charts/options/default/stroke_options.rb +0 -14
- data/lib/apex_charts/options/default/theme_options.rb +0 -11
- data/lib/apex_charts/options/default/title_subtitle_options.rb +0 -15
- data/lib/apex_charts/options/default/tooltip_options.rb +0 -25
- data/lib/apex_charts/options/default/x_axis_options.rb +0 -27
- data/lib/apex_charts/options/default/y_axis_options.rb +0 -28
- data/lib/apex_charts/options/dry_schema/annotations_options/annotation_label.rb +0 -24
- data/lib/apex_charts/options/dry_schema/annotations_options/image_annotations.rb +0 -15
- data/lib/apex_charts/options/dry_schema/annotations_options/point_annotations.rb +0 -33
- data/lib/apex_charts/options/dry_schema/annotations_options/text_annotations.rb +0 -26
- data/lib/apex_charts/options/dry_schema/annotations_options/x_axis_annotations.rb +0 -20
- data/lib/apex_charts/options/dry_schema/annotations_options/y_axis_annotations.rb +0 -21
- data/lib/apex_charts/options/dry_schema/annotations_options.rb +0 -22
- data/lib/apex_charts/options/dry_schema/chart_options.rb +0 -35
- data/lib/apex_charts/options/dry_schema/data_labels_options.rb +0 -37
- data/lib/apex_charts/options/dry_schema/fill_options.rb +0 -34
- data/lib/apex_charts/options/dry_schema/general_schema/drop_shadow.rb +0 -14
- data/lib/apex_charts/options/dry_schema/general_schema/function.rb +0 -12
- data/lib/apex_charts/options/dry_schema/grid_options.rb +0 -19
- data/lib/apex_charts/options/dry_schema/helper_options.rb +0 -22
- data/lib/apex_charts/options/dry_schema/legend_options.rb +0 -61
- data/lib/apex_charts/options/dry_schema/markers_options/discrete_point.rb +0 -13
- data/lib/apex_charts/options/dry_schema/markers_options.rb +0 -34
- data/lib/apex_charts/options/dry_schema/no_data_options.rb +0 -16
- data/lib/apex_charts/options/dry_schema/plot_options.rb +0 -231
- data/lib/apex_charts/options/dry_schema/root_options.rb +0 -42
- data/lib/apex_charts/options/dry_schema/schema.rb +0 -32
- data/lib/apex_charts/options/dry_schema/states_options/filter.rb +0 -10
- data/lib/apex_charts/options/dry_schema/states_options.rb +0 -22
- data/lib/apex_charts/options/dry_schema/stroke_options.rb +0 -21
- data/lib/apex_charts/options/dry_schema/theme_options.rb +0 -18
- data/lib/apex_charts/options/dry_schema/title_subtitle_options.rb +0 -22
- data/lib/apex_charts/options/dry_schema/tooltip_options.rb +0 -27
- data/lib/apex_charts/options/dry_schema/x_axis_options.rb +0 -30
- data/lib/apex_charts/options/dry_schema/y_axis_options.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e97e5e996cb05991f345e7cf9c6591aab1405925b2b92643f518687017923170
|
4
|
+
data.tar.gz: 5a64c5b2a09074483ab53abcbcaed281efe8241ae83978d04e48e0486c1bf5b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 438e96dcecf8766666b1b1d48bfa7f0a134ee3ee70d14a6309850ef9e47ea28633bf68101b3c11a90f92cabdece41da05e3e599b3523a2de3295470133c980e1
|
7
|
+
data.tar.gz: 1677bef319ca1190860641f188e0914f29400709f96d9afc42a3f4cb833671865227c61ae9d22cfec7c2ae14af88cfa78f47a0328e91f4c60809d1bbdcf7db46
|
data/README.md
CHANGED
@@ -25,6 +25,10 @@
|
|
25
25
|
<a href='http://clayallsopp.github.io/readme-score/?url=styd/apexcharts.rb'>
|
26
26
|
<img src='http://readme-score-api.herokuapp.com/score.svg?url=styd/apexcharts.rb' alt='README Score' />
|
27
27
|
</a>
|
28
|
+
<br />
|
29
|
+
<a href='https://ko-fi.com/setyadi' target='_blank'>
|
30
|
+
<img height='36' style='border:0px;height:36px;' src='https://cdn.ko-fi.com/cdn/kofi4.png?v=2' border='0' alt='Buy Me a Coffee at ko-fi.com' />
|
31
|
+
</a>
|
28
32
|
</p>
|
29
33
|
|
30
34
|
|
@@ -46,7 +50,7 @@ Organization/Company | Use Cas
|
|
46
50
|
<img src="/images/users/ventrata.png" width="180" height="40" /> | Ticket sales for clients (visitor attractions and tour operators)
|
47
51
|
|
48
52
|
> If your organization/company uses ApexCharts.RB in production, please comment on
|
49
|
-
> [this
|
53
|
+
> [this discussion](https://github.com/styd/apexcharts.rb/discussions/34).
|
50
54
|
|
51
55
|
|
52
56
|
## README Versions
|
@@ -54,8 +58,8 @@ Organization/Company | Use Cas
|
|
54
58
|
This README might not be for the version you use.
|
55
59
|
Choose the right README:
|
56
60
|
|
57
|
-
> [v0.
|
58
|
-
> [v0.1.5] | [v0.1.4] | [v0.1.3] | [v0.1.2] | [v0.1.1]
|
61
|
+
> [v0.2.0] | [v0.1.11] | [v0.1.10] | [v0.1.9] | [v0.1.8] | [v0.1.7] |
|
62
|
+
> [v0.1.6] | [v0.1.5] | [v0.1.4] | [v0.1.3] | [v0.1.2] | [v0.1.1]
|
59
63
|
|
60
64
|
## Table of Contents
|
61
65
|
|
@@ -78,6 +82,7 @@ Choose the right README:
|
|
78
82
|
- [Syncing Charts](#syncing-charts)
|
79
83
|
- [Brush Chart](#brush-chart)
|
80
84
|
- [Annotations](#annotations)
|
85
|
+
- [Multiple Y-Axes](#multiple-y-axes)
|
81
86
|
- [Heatmap Chart](#heatmap-chart)
|
82
87
|
- [Radar Chart](#radar-chart)
|
83
88
|
- [Bubble Chart](#bubble-chart)
|
@@ -97,7 +102,7 @@ Choose the right README:
|
|
97
102
|
- [Global Options](#global-options)
|
98
103
|
- [Formatter Function](#formatter-function)
|
99
104
|
- [Defer Chart Rendering](#defer-chart-rendering)
|
100
|
-
- [
|
105
|
+
- [Render with a script whose type is module](#render-with-a-script-whose-type-is-module)
|
101
106
|
- [Reusable Custom Palette](#reusable-custom-palette)
|
102
107
|
- [Use Alongside Other Charting Libraries](#use-alongside-other-charting-libraries)
|
103
108
|
- [Alongside Chartkick](#alongside-chartkick)
|
@@ -111,7 +116,7 @@ Choose the right README:
|
|
111
116
|
- [Plain HTML+ERB (Without Framework)](#plain-htmlerb-without-framework)
|
112
117
|
- [Contributing](#contributing)
|
113
118
|
- [License](#license)
|
114
|
-
- [
|
119
|
+
- [Articles](#articles)
|
115
120
|
|
116
121
|
|
117
122
|
## Usage
|
@@ -387,6 +392,52 @@ All cartesian charts can have annotations, for example:
|
|
387
392
|

|
388
393
|
|
389
394
|
|
395
|
+
#### Multiple Y-Axes
|
396
|
+
|
397
|
+
There's no fancy shortcut for multiple Y axes yet, but it is allowed. Here is an example
|
398
|
+
for that.
|
399
|
+
|
400
|
+
```erb
|
401
|
+
<% series = [
|
402
|
+
{
|
403
|
+
name: 'Income',
|
404
|
+
type: 'column',
|
405
|
+
data: [1.4, 2, 2.5, 1.5, 2.5, 2.8, 3.8, 4.6]
|
406
|
+
},
|
407
|
+
{
|
408
|
+
name: 'Cashflow',
|
409
|
+
type: 'column',
|
410
|
+
data: [1.1, 3, 3.1, 4, 4.1, 4.9, 6.5, 8.5]
|
411
|
+
},
|
412
|
+
{
|
413
|
+
name: 'Revenue',
|
414
|
+
data: [20, 29, 37, 36, 44, 45, 50, 58]
|
415
|
+
}
|
416
|
+
]
|
417
|
+
|
418
|
+
xaxis = {
|
419
|
+
title: {text: 'Year'},
|
420
|
+
categories: [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016]
|
421
|
+
}
|
422
|
+
|
423
|
+
yaxis = [
|
424
|
+
{title: {text: "Income"}},
|
425
|
+
{
|
426
|
+
title: {text: "Operating Cashflow"},
|
427
|
+
opposite: true,
|
428
|
+
seriesName: 'Cashflow'
|
429
|
+
},
|
430
|
+
{
|
431
|
+
title: {text: "Revenue"},
|
432
|
+
opposite: true,
|
433
|
+
seriesName: 'Revenue'
|
434
|
+
}
|
435
|
+
]
|
436
|
+
%>
|
437
|
+
<%= line_chart(series, xaxis: xaxis, yaxis: yaxis) %>
|
438
|
+
```
|
439
|
+

|
440
|
+
|
390
441
|
### Heatmap Chart
|
391
442
|
|
392
443
|
```erb
|
@@ -697,29 +748,22 @@ Or, without the _functionable-json_ gem, use function as object as follows:
|
|
697
748
|
|
698
749
|
### Defer Chart Rendering
|
699
750
|
|
700
|
-
It's possible to defer chart rendering by passing the argument `defer: true` as
|
751
|
+
It's possible to defer chart rendering by passing the argument `defer: true` as option.
|
701
752
|
|
702
753
|
```erb
|
703
754
|
<%= line_chart series, defer: true %>
|
704
755
|
```
|
705
756
|
|
757
|
+
### Render with a script whose type is module
|
706
758
|
|
707
|
-
|
759
|
+
The charts are rendered by inserting a <script> block in the HTML.
|
760
|
+
In order to generate this <script> with `type="module"` use the
|
761
|
+
option `module: true`.
|
708
762
|
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
```ruby
|
713
|
-
ApexCharts.config.schema = :dry_schema
|
763
|
+
```erb
|
764
|
+
<%= line_chart series, module: true %>
|
714
765
|
```
|
715
766
|
|
716
|
-
or
|
717
|
-
|
718
|
-
```ruby
|
719
|
-
ApexCharts.configure do |config|
|
720
|
-
config.schema = :dry_schema
|
721
|
-
end
|
722
|
-
```
|
723
767
|
|
724
768
|
## Reusable Custom Palette
|
725
769
|
|
@@ -942,10 +986,9 @@ The gem is available as open source under the terms of the
|
|
942
986
|
|
943
987
|
|
944
988
|
[ApexCharts.JS]: https://github.com/apexcharts/apexcharts.js
|
945
|
-
[dry-schema]: https://github.com/dry-rb/dry-schema
|
946
989
|
|
947
990
|
|
948
|
-
[
|
991
|
+
[v0.2.0]: https://github.com/styd/apexcharts.rb/blob/v0.2.0/README.md
|
949
992
|
[v0.1.11]: https://github.com/styd/apexcharts.rb/blob/v0.1.11/README.md
|
950
993
|
[v0.1.10]: https://github.com/styd/apexcharts.rb/blob/v0.1.10/README.md
|
951
994
|
[v0.1.9]: https://github.com/styd/apexcharts.rb/blob/v0.1.9/README.md
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'config/default_options'
|
4
|
-
require_relative 'config/schema'
|
5
4
|
|
6
5
|
module ApexCharts
|
7
6
|
class << self
|
@@ -22,6 +21,5 @@ module ApexCharts
|
|
22
21
|
|
23
22
|
class Configuration
|
24
23
|
include ApexCharts::Config::DefaultOptions
|
25
|
-
include ApexCharts::Config::Schema
|
26
24
|
end
|
27
25
|
end
|
@@ -1,29 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
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
|
20
|
-
|
21
3
|
module ApexCharts
|
22
4
|
class OptionsBuilder
|
23
5
|
include ApexCharts::Utils::Hash
|
24
6
|
include ApexCharts::Utils::DateTime
|
25
7
|
|
26
|
-
|
8
|
+
attr_accessor :built
|
27
9
|
|
28
10
|
def initialize(sample, options)
|
29
11
|
@options = camelize_keys(options)
|
@@ -36,8 +18,6 @@ module ApexCharts
|
|
36
18
|
end
|
37
19
|
|
38
20
|
def build_options
|
39
|
-
options_class(:Root).check @options
|
40
|
-
|
41
21
|
build_chart
|
42
22
|
build_div
|
43
23
|
build_general_options
|
@@ -53,6 +33,7 @@ module ApexCharts
|
|
53
33
|
build_labels
|
54
34
|
build_legend
|
55
35
|
build_markers
|
36
|
+
build_module
|
56
37
|
build_no_data
|
57
38
|
build_plot_options
|
58
39
|
build_responsive
|
@@ -68,7 +49,7 @@ module ApexCharts
|
|
68
49
|
end
|
69
50
|
|
70
51
|
def build_div
|
71
|
-
|
52
|
+
built[:div] = {
|
72
53
|
id: @options.delete(:id),
|
73
54
|
var: @options.delete(:var),
|
74
55
|
class: @options.delete(:class),
|
@@ -78,15 +59,13 @@ module ApexCharts
|
|
78
59
|
|
79
60
|
def build_annotations
|
80
61
|
annotations = @options.delete :annotations
|
81
|
-
|
82
|
-
if annotations.is_a? Hash
|
83
|
-
options_class(:Annotations).check annotations.compact
|
84
|
-
end
|
62
|
+
built[:annotations] = (
|
63
|
+
annotations.compact if annotations.is_a? Hash
|
85
64
|
)
|
86
65
|
end
|
87
66
|
|
88
67
|
def build_chart
|
89
|
-
|
68
|
+
built[:chart] =
|
90
69
|
if target = @options.delete(:brushTarget)
|
91
70
|
{
|
92
71
|
brush: {enabled: true, target: target.to_s},
|
@@ -96,7 +75,7 @@ module ApexCharts
|
|
96
75
|
{}
|
97
76
|
end
|
98
77
|
|
99
|
-
|
78
|
+
built[:chart].merge!({
|
100
79
|
id: @options[:chartId] || @options[:id],
|
101
80
|
group: @options.delete(:group),
|
102
81
|
height: @options.delete(:height) { target ? 180 : 400 },
|
@@ -112,207 +91,230 @@ module ApexCharts
|
|
112
91
|
|
113
92
|
return unless chart.is_a? Hash
|
114
93
|
|
115
|
-
|
94
|
+
built[:chart].merge! chart.compact
|
116
95
|
end
|
117
96
|
|
118
97
|
def build_colors
|
119
98
|
colors = @options.delete :colors
|
120
99
|
colors &&= Array(colors)
|
121
|
-
|
100
|
+
built[:colors] = colors
|
122
101
|
end
|
123
102
|
|
124
103
|
def build_data_labels
|
125
104
|
data_labels = @options.delete :dataLabels
|
126
105
|
return if data_labels.nil?
|
127
106
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
107
|
+
built[:dataLabels] = if [true, false].include? data_labels
|
108
|
+
{enabled: data_labels}
|
109
|
+
elsif data_labels.is_a? Hash
|
110
|
+
data_labels.compact
|
111
|
+
end
|
133
112
|
end
|
134
113
|
|
135
114
|
def build_defer
|
136
115
|
defer = @options.delete :defer
|
137
|
-
|
116
|
+
built[:defer] = defer == true
|
138
117
|
end
|
139
118
|
|
119
|
+
def build_module
|
120
|
+
omodule = @options.delete :module
|
121
|
+
built[:module] = omodule == true
|
122
|
+
end
|
140
123
|
|
141
124
|
def build_fill
|
142
125
|
fill = @options.delete :fill
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
126
|
+
built[:fill] = case fill
|
127
|
+
when String
|
128
|
+
{type: fill}
|
129
|
+
when Hash
|
130
|
+
fill.compact
|
131
|
+
end
|
148
132
|
end
|
149
133
|
|
150
134
|
def build_grid
|
151
135
|
grid = @options.delete :grid
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
136
|
+
built[:grid] = if [true, false].include? grid
|
137
|
+
{show: grid}
|
138
|
+
elsif grid.is_a? Hash
|
139
|
+
grid.compact
|
140
|
+
end
|
157
141
|
end
|
158
142
|
|
159
143
|
def build_labels
|
160
144
|
labels = @options.delete :labels
|
161
145
|
labels &&= Array(labels)
|
162
|
-
|
146
|
+
built[:labels] = labels
|
163
147
|
end
|
164
148
|
|
165
149
|
def build_legend
|
166
150
|
legend = @options.delete :legend
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
151
|
+
built[:legend] = if [true, false].include? legend
|
152
|
+
{show: legend}
|
153
|
+
elsif legend.is_a? String
|
154
|
+
{show: true, position: legend}
|
155
|
+
elsif legend.is_a? Hash
|
156
|
+
legend.compact
|
157
|
+
end
|
174
158
|
end
|
175
159
|
|
176
160
|
def build_markers
|
177
161
|
markers = @options.delete :markers
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
162
|
+
built[:markers] = case markers
|
163
|
+
when String
|
164
|
+
{shape: markers}
|
165
|
+
when Hash
|
166
|
+
markers.compact
|
167
|
+
end
|
183
168
|
end
|
184
169
|
|
185
170
|
def build_no_data
|
186
171
|
no_data = @options.delete :noData
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
172
|
+
built[:noData] = case no_data
|
173
|
+
when String
|
174
|
+
{text: no_data}
|
175
|
+
when Hash
|
176
|
+
no_data.compact
|
177
|
+
end
|
192
178
|
end
|
193
179
|
|
194
180
|
def build_plot_options
|
195
181
|
plot_options = @options.delete :plotOptions
|
196
182
|
return unless plot_options.is_a? Hash
|
197
183
|
|
198
|
-
|
199
|
-
|
184
|
+
built[:plotOptions] =
|
185
|
+
plot_options.compact
|
200
186
|
end
|
201
187
|
|
202
188
|
def build_responsive
|
203
189
|
responsive = @options.delete :responsive
|
204
190
|
responsive &&= responsive.is_a?(Hash) ? [responsive] : Array(responsive)
|
205
|
-
|
191
|
+
built[:responsive] = responsive
|
206
192
|
end
|
207
193
|
|
208
194
|
def build_states
|
209
|
-
|
195
|
+
built[:states] = {
|
210
196
|
normal: filter_type_hash(@options.delete(:normal)),
|
211
197
|
hover: filter_type_hash(@options.delete(:hover)),
|
212
198
|
active: filter_type_hash(@options.delete(:active))
|
213
199
|
}.compact
|
214
200
|
|
215
201
|
states = @options.delete :states
|
216
|
-
|
202
|
+
built[:states].merge! states.compact if states.is_a? Hash
|
217
203
|
|
218
|
-
|
204
|
+
built[:states] = nil if built[:states].empty?
|
219
205
|
end
|
220
206
|
|
221
207
|
def build_stroke
|
222
208
|
curve = @options.delete :curve
|
223
|
-
|
209
|
+
built[:stroke] = {curve: curve}.compact
|
224
210
|
|
225
211
|
stroke = @options.delete :stroke
|
226
212
|
if [true, false].include? stroke
|
227
|
-
|
213
|
+
built[:stroke].merge!(show: stroke)
|
228
214
|
elsif stroke.is_a? Hash
|
229
|
-
|
215
|
+
built[:stroke].merge! stroke.compact
|
230
216
|
end
|
231
217
|
|
232
|
-
|
218
|
+
built[:stroke] = nil if built[:stroke].empty?
|
233
219
|
end
|
234
220
|
|
235
221
|
def build_subtitle
|
236
222
|
subtitle = @options.delete(:subtitle)
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
223
|
+
built[:subtitle] = case subtitle
|
224
|
+
when String
|
225
|
+
{text: subtitle}
|
226
|
+
when Hash
|
227
|
+
subtitle.compact
|
228
|
+
end
|
242
229
|
end
|
243
230
|
|
244
231
|
def build_theme
|
245
232
|
theme = @options.delete(:theme)
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
233
|
+
built[:theme] = case theme
|
234
|
+
when String
|
235
|
+
case theme
|
236
|
+
when 'random'
|
237
|
+
resolve_theme(Theme.all_palettes.sample)
|
238
|
+
when 'monochrome'
|
239
|
+
{monochrome: {enabled: true}}
|
240
|
+
else
|
241
|
+
resolve_theme(theme)
|
242
|
+
end
|
243
|
+
when Hash
|
244
|
+
theme.compact
|
245
|
+
end
|
258
246
|
end
|
259
247
|
|
260
248
|
def build_title
|
261
249
|
title = @options.delete(:title)
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
250
|
+
built[:title] = case title
|
251
|
+
when String
|
252
|
+
{text: title}
|
253
|
+
when Hash
|
254
|
+
title.compact
|
255
|
+
end
|
267
256
|
end
|
268
257
|
|
269
258
|
def build_tooltip
|
270
259
|
tooltip = @options.delete :tooltip
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
260
|
+
built[:tooltip] = if [true, false].include? tooltip
|
261
|
+
{enabled: tooltip}
|
262
|
+
elsif tooltip.is_a? Hash
|
263
|
+
tooltip.compact
|
264
|
+
end
|
276
265
|
end
|
277
266
|
|
278
267
|
def build_xaxis
|
279
268
|
xaxis = @options.delete :xaxis
|
280
|
-
|
269
|
+
built[:xaxis] = {
|
281
270
|
type: @options.delete(:xtype) { @xtype },
|
282
271
|
title: {
|
283
272
|
text: @options.delete(:xtitle)
|
284
273
|
}.compact
|
285
274
|
}.compact
|
286
|
-
|
275
|
+
built[:xaxis].delete(:title) if built[:xaxis][:title].empty?
|
287
276
|
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
277
|
+
case xaxis
|
278
|
+
when String
|
279
|
+
built[:xaxis][:title] = {text: xaxis}
|
280
|
+
when Hash
|
281
|
+
built[:xaxis].merge! xaxis
|
293
282
|
end
|
294
283
|
|
295
|
-
|
284
|
+
built[:xaxis] = nil if built[:xaxis].empty?
|
296
285
|
end
|
297
286
|
|
298
287
|
def build_yaxis
|
299
288
|
yaxis = @options.delete :yaxis
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
289
|
+
|
290
|
+
case yaxis
|
291
|
+
when Array
|
292
|
+
built[:yaxis] = yaxis
|
293
|
+
when Hash
|
294
|
+
built[:yaxis] = {
|
295
|
+
type: @options.delete(:ytype) { @ytype },
|
296
|
+
title: {
|
297
|
+
text: @options.delete(:ytitle)
|
298
|
+
}.compact
|
304
299
|
}.compact
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
300
|
+
built[:yaxis].delete(:title) if built[:yaxis][:title].empty?
|
301
|
+
built[:yaxis].merge! yaxis
|
302
|
+
when String
|
303
|
+
built[:yaxis] = {
|
304
|
+
type: @options.delete(:ytype) { @ytype },
|
305
|
+
title: {
|
306
|
+
text: yaxis
|
307
|
+
}
|
308
|
+
}.compact
|
309
|
+
when NilClass
|
310
|
+
built[:yaxis] = if ytitle = @options.delete(:ytitle)
|
311
|
+
{title: {text: ytitle}}
|
312
|
+
else
|
313
|
+
{}
|
314
|
+
end
|
313
315
|
end
|
314
316
|
|
315
|
-
|
317
|
+
built[:yaxis] = nil if built[:yaxis].all?(&:empty?)
|
316
318
|
end
|
317
319
|
|
318
320
|
private
|
@@ -334,9 +336,10 @@ module ApexCharts
|
|
334
336
|
end
|
335
337
|
|
336
338
|
def filter_type_hash(state)
|
337
|
-
|
339
|
+
case state
|
340
|
+
when String
|
338
341
|
{filter: {type: state}}
|
339
|
-
|
342
|
+
when Hash
|
340
343
|
state.compact
|
341
344
|
end
|
342
345
|
end
|
@@ -345,7 +348,7 @@ module ApexCharts
|
|
345
348
|
if Theme::PALETTES.include? theme
|
346
349
|
{palette: theme}
|
347
350
|
elsif Theme.palette_names.include? theme
|
348
|
-
|
351
|
+
built[:colors] = Theme.get_colors(theme)
|
349
352
|
nil
|
350
353
|
end
|
351
354
|
end
|
data/lib/apex_charts/renderer.rb
CHANGED
@@ -54,9 +54,9 @@ module ApexCharts
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def substitute_function_object(json)
|
57
|
-
json.gsub(
|
58
|
-
body = "\"#{
|
59
|
-
"function(#{
|
57
|
+
json.gsub(/{"function":{"args":"(?<args>.*?)","body":"(?<body>.*?)"}}/) do
|
58
|
+
body = "\"#{$LAST_MATCH_INFO&.[](:body)}\"".undump
|
59
|
+
"function(#{$LAST_MATCH_INFO&.[](:args)}){#{body}}"
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -64,6 +64,10 @@ module ApexCharts
|
|
64
64
|
@defer ||= options.delete(:defer)
|
65
65
|
end
|
66
66
|
|
67
|
+
def module?
|
68
|
+
@module ||= options.delete(:module)
|
69
|
+
end
|
70
|
+
|
67
71
|
def attributes
|
68
72
|
@attributes ||= options.delete(:div) { {} }
|
69
73
|
end
|
@@ -97,8 +101,9 @@ module ApexCharts
|
|
97
101
|
end
|
98
102
|
|
99
103
|
def script(js)
|
104
|
+
type = module? ? 'module' : 'text/javascript'
|
100
105
|
<<~SCRIPT
|
101
|
-
<script type="
|
106
|
+
<script type="#{type}" apexcharts-rb="#{RELEASE}" >
|
102
107
|
#{js}
|
103
108
|
</script>
|
104
109
|
SCRIPT
|
@@ -106,7 +111,7 @@ module ApexCharts
|
|
106
111
|
|
107
112
|
def indent(content, times=2)
|
108
113
|
content.lines.map.with_index do |line, index|
|
109
|
-
(index
|
114
|
+
(index.zero? ? '' : ' ' * times) + line
|
110
115
|
end.join
|
111
116
|
end
|
112
117
|
end
|