class ApexCharts::Series::CartesianSeries

Attributes

sanitized[R]

Public Class Methods

new(data) click to toggle source
# File lib/apex_charts/series/cartesian_series.rb, line 11
def initialize(data)
  @sanitized = {series: build_series(deep_copy(data))}
end

Public Instance Methods

sample() click to toggle source
# File lib/apex_charts/series/cartesian_series.rb, line 15
def sample
  return if empty?

  sanitized[:series][0][:data][0][:x]
end

Private Instance Methods

array_of_array_to_array_of_xy(data) click to toggle source
# File lib/apex_charts/series/cartesian_series.rb, line 77
def array_of_array_to_array_of_xy(data)
  data.map {|d| {x: d.first, y: d.last} }
end
array_of_pairs?(data) click to toggle source
# File lib/apex_charts/series/cartesian_series.rb, line 73
def array_of_pairs?(data)
  !data.empty? && data.all? {|d| d.length == 2 }
end
build_series(data) click to toggle source
# File lib/apex_charts/series/cartesian_series.rb, line 27
def build_series(data)
  return data if data.empty?

  case data
  when Array
    build_series_from_array(data)
  when Hash
    build_series_from_hash(data)
  end
end
build_series_from_array(data) click to toggle source
# File lib/apex_charts/series/cartesian_series.rb, line 38
def build_series_from_array(data)
  case first_data = data[0]
  when Array
    [{data: array_of_array_to_array_of_xy(data)}]

  when Hash
    if first_data[:data]
      data.each {|h| h[:data] = array_of_array_to_array_of_xy(h[:data]) }
      data
    end
  end
end
build_series_from_hash(data) click to toggle source
# File lib/apex_charts/series/cartesian_series.rb, line 51
def build_series_from_hash(data)
  if data_value = data[:data]
    if array_of_pairs?(data_value)
      data[:data] = array_of_array_to_array_of_xy(data_value)
      [data]
    end

  elsif data[:x] && data[:y]
    [{data: [data]}]

  else
    [
      {
        data: data.map do |key, value|
          {x: key, y: value}
        end
      }
    ]

  end
end
empty?() click to toggle source
# File lib/apex_charts/series/cartesian_series.rb, line 23
def empty?
  sanitized[:series].empty? || sanitized[:series][0][:data].empty?
end