module Spyro::ActionViewExtension::D3Helper
Public Instance Methods
d3bar(data, opts = {})
click to toggle source
# File lib/spyro/helpers/action_view_extension.rb, line 451 def d3bar data, opts = {} default_values = opts[:range].to_a.map { |i| {label: i, value: 0} } if opts[:range] data.map do |key, values| values = (values.map { |key, value| {label: key, value: value} } + (default_values || [])).uniq { |a| a[:label] }.sort { |a, b| a[:label] <=> b[:label] } {key: key, values: values} end.to_json end
d3line(data, opts = {})
click to toggle source
# File lib/spyro/helpers/action_view_extension.rb, line 460 def d3line data, opts = {} opts = {:field => :created_at, :interval => 3.hours}.merge opts data.map do |key, values| values = values.order(opts[:field]).pluck(opts[:field]) break {} if values.empty? start, res, count = values.first, [[(values.first - opts[:interval]).to_i * 1000, 0]], 0 values.each do |vote| if vote.between?(start, start + opts[:interval]) count += 1 else res.push [start.to_i * 1000, count] start, count = start + opts[:interval], 0 end end res.push [start.to_i * 1000, count], [(start + opts[:interval]).to_i * 1000, 0] {key: key, values: res} end.to_json end
d3pie(data)
click to toggle source
# File lib/spyro/helpers/action_view_extension.rb, line 447 def d3pie data data.map { |label, value| {label: label, value: value} }.to_json end