Class: ApexCharts::Renderer

Inherits:
Object
  • Object
show all
Defined in:
lib/apexcharts/renderer.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Renderer

Returns a new instance of Renderer.



28
29
30
# File 'lib/apexcharts/renderer.rb', line 28

def initialize(options)
  @options = options
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



26
27
28
# File 'lib/apexcharts/renderer.rb', line 26

def options
  @options
end

Class Method Details

.render_default(options) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/apexcharts/renderer.rb', line 8

def render_default(options)
  renderer = new options

  html = if renderer.id_number == '1' && !ApexCharts.config.default_options.empty?
           renderer.window_apex
         else
           ''
         end
  html + <<~HTML
    <div id="#{renderer.element_id}" class="#{renderer.css_class}" style="#{renderer.style}"></div>
    <script type="text/javascript">
      var #{renderer.variable} = new ApexCharts(document.querySelector("##{renderer.element_id}"), #{renderer.options.to_json});
      #{renderer.variable}.render();
    </script>
  HTML
end

Instance Method Details

#attributesObject



32
33
34
# File 'lib/apexcharts/renderer.rb', line 32

def attributes
  @attributes ||= options.delete(:div) { {} }
end

#css_classObject



48
49
50
# File 'lib/apexcharts/renderer.rb', line 48

def css_class
  attributes.delete(:class)
end

#element_idObject



36
37
38
# File 'lib/apexcharts/renderer.rb', line 36

def element_id
  @element_id ||= attributes.delete(:id)
end

#heightObject



52
53
54
# File 'lib/apexcharts/renderer.rb', line 52

def height
  "#{options[:chart][:height].to_i}px"
end

#id_numberObject



40
41
42
# File 'lib/apexcharts/renderer.rb', line 40

def id_number
  @id_number ||= element_id&.[](/\d+/)
end

#styleObject



56
57
58
# File 'lib/apexcharts/renderer.rb', line 56

def style
  "height: #{height}; #{attributes.delete(:style)}"
end

#variableObject



44
45
46
# File 'lib/apexcharts/renderer.rb', line 44

def variable
  @variable ||= attributes.delete(:var) { "chart#{id_number}" }
end

#window_apexObject



60
61
62
63
64
65
66
# File 'lib/apexcharts/renderer.rb', line 60

def window_apex
  <<~HTML
    <script type="text/javascript">
      window.Apex = #{ApexCharts.config.default_options.to_json}
    </script>
  HTML
end