class Integral::ChartRenderer::Base
Base
class which all Charts should inherit from
Public Class Methods
new(dataset, options = {})
click to toggle source
@param [Hash] dataset @param [Hash] options
# File lib/integral/chart_renderer/base.rb, line 17 def initialize(dataset, options = {}) @dataset = dataset @options = options end
render(dataset, options = {})
click to toggle source
Render chart markup
# File lib/integral/chart_renderer/base.rb, line 10 def self.render(dataset, options = {}) renderer = new(dataset, options) renderer.render end
Public Instance Methods
render()
click to toggle source
Render chart markup
# File lib/integral/chart_renderer/base.rb, line 23 def render data = process_data return respond_with_chart(data) if data_available?(data) respond_with_no_data_available end
Private Instance Methods
controller()
click to toggle source
Controller used to render partials
# File lib/integral/chart_renderer/base.rb, line 44 def controller ApplicationController end
data_available?(data)
click to toggle source
@return [Boolean] whether or not any data is present
# File lib/integral/chart_renderer/base.rb, line 61 def data_available?(data) return false if data.empty? if data.first.is_a?(Array) data = data.map(&:uniq).uniq return true if data.length > 1 data = data.first end data = data.uniq !(data.length == 1 && data.first.zero?) end
process_data()
click to toggle source
Process data values from provided dataset to be converted into graph markup
# File lib/integral/chart_renderer/base.rb, line 39 def process_data raise NotImplementedError end
render_partial(path, locals = {})
click to toggle source
Renders a given partial
@param [String] path partial path to render @param [Hash] locals optional hash of variables to pass to partial
@return [String] Markup which frontend uses to build a graph
# File lib/integral/chart_renderer/base.rb, line 54 def render_partial(path, locals = {}) controller.render(partial: "integral/backend/shared/graphs/#{path}", locals: locals, layout: false) end
respond_with_chart(_data)
click to toggle source
@return [String] Markup which frontend uses to build a graph
# File lib/integral/chart_renderer/base.rb, line 34 def respond_with_chart(_data) raise NotImplementedError end
respond_with_no_data_available()
click to toggle source
@return [String] Markup which informs users of no available data to build graph
# File lib/integral/chart_renderer/base.rb, line 77 def respond_with_no_data_available render_partial('no_data_available') end