class MyChartkick::DataSet

Attributes

data_set[R]

Public Class Methods

create(data, opt={}) click to toggle source
# File lib/my_chartkick/data_set.rb, line 7
def create data, opt={}
  raise ArgumentError, ':x requried, :y optional' unless opt[:x]
  ds = opt[:y] ? XY.new(data, opt[:x], opt[:y]) : X.new(data, opt[:x])
  ds.supply_keys! opt[:keys] if opt[:keys]
  ds.sort! opt if opt[:asc] or opt[:desc]
  ds.limit! limit_conditions(opt) if opt[:first] or opt[:last]
  ds.data_set
end
limit_conditions(opt) click to toggle source
# File lib/my_chartkick/data_set.rb, line 16
def limit_conditions opt
  opt.select{|k ,v| [:first, :last].include? k}
end

Public Instance Methods

count(key_objs) click to toggle source
# File lib/my_chartkick/data_set.rb, line 23
def count key_objs
  Hash[key_objs.map{|key, objs| [key, objs.count]}]
end
limit_hash(hash, limit, n) click to toggle source
# File lib/my_chartkick/data_set.rb, line 40
def limit_hash hash, limit, n
  Hash[hash.to_a.send(limit, n)]
end
sort(hash, opt={}) click to toggle source
# File lib/my_chartkick/data_set.rb, line 27
def sort hash, opt={}
  by = if opt[:asc] == :key
         -> kv1, kv2 { kv1[0] <=> kv2[0] }
       elsif opt[:asc] == :count
         -> kv1, kv2 { kv1[1] <=> kv2[1] }
       elsif opt[:desc] == :key
         -> kv1, kv2 { kv2[0] <=> kv1[0] }
       elsif opt[:desc] == :count
         -> kv1, kv2 { kv2[1] <=> kv1[1] }
       end
  Hash[hash.sort &by]
end