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