Class: Rorschart::MultipleSeries

Inherits:
RorschartData show all
Defined in:
lib/rorschart/data/multiple_series.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from RorschartData

#sort_by_date!

Constructor Details

#initialize(raw_series) ⇒ MultipleSeries

Returns a new instance of MultipleSeries.



6
7
8
9
10
11
12
# File 'lib/rorschart/data/multiple_series.rb', line 6

def initialize(raw_series)
  @to_sql = raw_series.map { |serie| serie.to_sql rescue nil }.delete_if { |serie| serie.nil? }
  @raw_series = raw_series
  @rorschart_series = raw_series.collect { |serie|
    RorschartData.new(serie)
  }
end

Instance Attribute Details

#raw_seriesObject

Returns the value of attribute raw_series.



4
5
6
# File 'lib/rorschart/data/multiple_series.rb', line 4

def raw_series
  @raw_series
end

#rorschart_seriesObject

Returns the value of attribute rorschart_series.



4
5
6
# File 'lib/rorschart/data/multiple_series.rb', line 4

def rorschart_series
  @rorschart_series
end

#to_sqlObject

Returns the value of attribute to_sql.



4
5
6
# File 'lib/rorschart/data/multiple_series.rb', line 4

def to_sql
  @to_sql
end

Instance Method Details

#colsObject



14
15
16
17
18
19
20
# File 'lib/rorschart/data/multiple_series.rb', line 14

def cols
  cols_with_dup = @rorschart_series.inject([]) { |cols, series| 
    cols + (series.cols || [])
  }
   
  cols_with_dup.uniq
end

#rowsObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rorschart/data/multiple_series.rb', line 22

def rows
  # create union of all series first columns, to represent all abscisse values available
  union_x = union_of_first_columns()

  # Preparation: store all series rows in a hash indexed by first column
  series_indexed = []
  @rorschart_series.each { |serie|
    series_indexed << index_series_by_first_col(serie) if !serie.cols.nil?
  }

  # The Merge:
  # For abscisse value, grab for each serie the corresponding row - or nil
  union_series = []
  union_x.each { |x|
    row = [x]
    series_indexed.each { |serie_hash|
      row << serie_hash[x]
    }
    union_series << row.flatten
  }

  # Return union of all series
  union_series
end