Files
nairobi/app/models/ahoy/data_source.rb
Javi Martín db97f9d08c Add and apply rubocop rules for empty lines
We were very inconsistent regarding these rules.

Personally I prefer no empty lines around blocks, clases, etc... as
recommended by the Ruby style guide [1], and they're the default values
in rubocop, so those are the settings I'm applying.

The exception is the `private` access modifier, since we were leaving
empty lines around it most of the time. That's the default rubocop rule
as well. Personally I don't have a strong preference about this one.


[1] https://rubystyle.guide/#empty-lines-around-bodies
2019-10-24 17:11:47 +02:00

47 lines
1.1 KiB
Ruby

# This class combines multiple collections with shared keys into a
# hash of collections compatible with C3.js charts
#----------------------------------------------------------------------
module Ahoy
class DataSource
# Adds a collection with the datasource
# Name is the name of the collection and will be showed in the
# chart
def add(name, collection)
collections.push data: collection, name: name
collection.each_key { |key| add_key key }
end
def build
data = { x: [] }
shared_keys.each do |k|
# Add the key with a valid date format
data[:x].push k.strftime("%Y-%m-%d")
# Add the value for each column, or 0 if not present
collections.each do |col|
data[col[:name]] ||= []
count = col[:data][k] || 0
data[col[:name]].push count
end
end
data
end
private
def collections
@collections ||= []
end
def shared_keys
@shared_keys ||= []
end
def add_key(key)
shared_keys.push(key) unless shared_keys.include? key
end
end
end