class MyChartkick::XY
Public Class Methods
new(data, x_key, y_key)
click to toggle source
# File lib/my_chartkick/data_set.rb, line 69 def initialize data, x_key, y_key all_x = Set.new y = data.group_by &y_key @data_set = y.map do |key, objs| x = objs.group_by &x_key x.keys.each{|x_k| all_x << x_k} [key, x] end.map do |key, objs| all_x.each do |x| objs[x] = [] unless objs[x] end {name: key, data: count(objs)} end.sort_by do |hash| hash[:name] end end
Public Instance Methods
limit!(opt)
click to toggle source
# File lib/my_chartkick/data_set.rb, line 104 def limit! opt data_set.each do |subset| opt.each do |limit, n| subset[:data] = limit_hash subset[:data], limit, n end end end
sort!(opt)
click to toggle source
# File lib/my_chartkick/data_set.rb, line 97 def sort! opt raise ArgumentError, 'chart with :y can not be sorted by :count' if [opt[:asc], opt[:desc]].include? :count data_set.each do |subset| subset[:data] = sort subset[:data], opt end end
supply_keys!(keys)
click to toggle source
# File lib/my_chartkick/data_set.rb, line 89 def supply_keys! keys data_set.each do |subset| keys.each do |k| subset[:data][k] = 0 unless subset[:data][k] end end end