Class: LazyHighCharts::HighChart

Inherits:
Object
  • Object
show all
Includes:
LayoutHelper
Defined in:
lib/lazy_high_charts/high_chart.rb

Constant Summary collapse

SERIES_OPTIONS =
%w(data index legendIndex name stack type xAxis yAxis)

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from LayoutHelper

#high_chart, #high_chart_globals, #high_graph, #high_graph_stock, #high_stock

Constructor Details

#initialize(canvas = nil, html_opts = {}) ⇒ HighChart

Returns a new instance of HighChart.



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/lazy_high_charts/high_chart.rb', line 12

def initialize(canvas = nil, html_opts = {})

  self.tap do |high_chart|
    high_chart.series_data ||= []
    high_chart.options ||= {}
    high_chart.defaults_options
    high_chart.html_options ||= html_opts
    high_chart.canvas = (canvas ? canvas : random_canvas_id)
    yield high_chart if block_given?
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, opts = {}) ⇒ Object

Pass other methods through to the javascript high_chart object.

For instance: high_chart.grid(:color => "#699")



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/lazy_high_charts/high_chart.rb', line 40

def method_missing(meth, opts = {})
  if meth.to_s == 'to_ary'
    super
  end

  if meth.to_s.end_with? '!'
    deep_merge_options meth[0..-2].to_sym, opts
  else
    merge_options meth, opts
  end
end

Instance Attribute Details

#html_optionsObject

Returns the value of attribute html_options.



8
9
10
# File 'lib/lazy_high_charts/high_chart.rb', line 8

def html_options
  @html_options
end

#optionsObject

Returns the value of attribute options.



8
9
10
# File 'lib/lazy_high_charts/high_chart.rb', line 8

def options
  @options
end

#placeholderObject Also known as: canvas

Returns the value of attribute placeholder.



8
9
10
# File 'lib/lazy_high_charts/high_chart.rb', line 8

def placeholder
  @placeholder
end

#series_dataObject

Returns the value of attribute series_data.



8
9
10
# File 'lib/lazy_high_charts/high_chart.rb', line 8

def series_data
  @series_data
end

Instance Method Details

#defaults_optionsObject

title: legend: xAxis: yAxis: tooltip: credits: :plotOptions



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/lazy_high_charts/high_chart.rb', line 25

def defaults_options
  self.title({:text => nil})
  self.legend({:layout => "vertical", :style => {}})
  self.xAxis({})
  self.yAxis({:title => {:text => nil}, :labels => {}})
  self.tooltip({:enabled => true})
  self.credits({:enabled => false})
  self.plotOptions({:areaspline => {}})
  self.chart({:defaultSeriesType => "line", :renderTo => nil})
  self.subtitle({})
end

#full_optionsHash

Pre-processes and returns full set of options relevant to the chart. Identical to what happens in the high_charts view helper.

Returns:

  • (Hash)

    options JSON options hash



67
68
69
# File 'lib/lazy_high_charts/high_chart.rb', line 67

def full_options
  options_collection_as_string self
end

#series(opts = {}) ⇒ Object

Add a simple series to the graph:

data = [[0,5], [1,5], [2,5]]
@high_chart.series :name=>'Updated', :data=>data
@high_chart.series :name=>'Updated', :data=>[5, 1, 6, 1, 5, 4, 9]


57
58
59
60
61
# File 'lib/lazy_high_charts/high_chart.rb', line 57

def series(opts = {})
  if not opts.empty?
    @series_data << OptionsKeyFilter.filter(opts.merge(:name => opts[:name], :data => opts[:data]))
  end
end

#to_jsonObject



71
72
73
74
75
# File 'lib/lazy_high_charts/high_chart.rb', line 71

def to_json
  data = self.options.clone
  data[:series] = self.series_data.clone
  data
end