class ApexCharts::Charts::CartesianChart

Public Class Methods

new(outer_self, data, options={}, &block) click to toggle source
# File lib/apex_charts/charts/cartesian_chart.rb, line 13
def initialize(outer_self, data, options={}, &block)
  @outer_self = outer_self
  options = deep_merge(
    camelize_keys(options),
    camelize_keys(more_options)
  )

  build_instance_variables if @outer_self

  instance_eval &block if block_given?

  options[:annotations] = @annotations if @annotations
  @series = build_series(data)
  @options = build_options(options)

  build_selection_range if brush?
end

Public Instance Methods

method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/apex_charts/charts/cartesian_chart.rb, line 39
def method_missing(method, *args, &block)
  if @outer_self.respond_to?(method, true)
    @outer_self.send method, *args, &block
  else
    super
  end
end
more_options() click to toggle source
# File lib/apex_charts/charts/cartesian_chart.rb, line 35
def more_options
  {}
end
respond_to_missing?(method, *args) click to toggle source
Calls superclass method
# File lib/apex_charts/charts/cartesian_chart.rb, line 47
def respond_to_missing?(method, *args)
  @outer_self.respond_to?(method, true) || super
end
series_type() click to toggle source
# File lib/apex_charts/charts/cartesian_chart.rb, line 31
def series_type
  ApexCharts::Series::CartesianSeries
end

Protected Instance Methods

brush?() click to toggle source
# File lib/apex_charts/charts/cartesian_chart.rb, line 59
def brush?
  @options[:chart][:brush]&.[](:enabled) &&
    !@options[:chart][:selection]&.[](:xaxis)
end
build_instance_variables() click to toggle source
# File lib/apex_charts/charts/cartesian_chart.rb, line 53
def build_instance_variables
  (@outer_self.instance_variables - instance_variables).each do |i|
    instance_variable_set(i, @outer_self.instance_variable_get(i))
  end
end
build_selection_range() click to toggle source
# File lib/apex_charts/charts/cartesian_chart.rb, line 64
def build_selection_range
  last_data = @series[:series].last[:data]
  first_x = last_data.first[:x]
  last_x = last_data.last[:x]
  @options[:chart][:selection][:xaxis] = {
    min: handle_time(twenty_percent_before_last_x(first_x, last_x)),
    max: handle_time(last_x)
  }
end
handle_time(input) click to toggle source
# File lib/apex_charts/charts/cartesian_chart.rb, line 78
def handle_time(input)
  ApexCharts::Utils::DateTime.convert(input)
end
twenty_percent_before_last_x(first, last) click to toggle source
# File lib/apex_charts/charts/cartesian_chart.rb, line 74
def twenty_percent_before_last_x(first, last)
  last - (0.2 * (last - first))
end