class Rorschart::PivotSeries

Attributes

to_sql[RW]

Public Class Methods

new(raw_serie, options = {}) click to toggle source
# File lib/rorschart/data/pivot_series.rb, line 6
def initialize(raw_serie, options = {})
  @to_sql = raw_serie.to_sql rescue nil
  rorschart_serie = RorschartData.new(raw_serie)

  # Initialiaze a default row with nil values
  row_nil = init_cols_with_nil(rorschart_serie)

  rows_by_x = {}
  rorschart_serie.rows.each { |r|
    rows_by_x[r[0]] = row_nil.dup if rows_by_x[r[0]].nil?
    rows_by_x[r[0]][r[1]] = r[2]
  }

  # Flatten rows hash into array matrix
  @rows = rows_by_x.collect { |row|
      [row[0], row[1].values].flatten
  }

  #cols
  type = rorschart_serie.cols[2][:type] rescue nil
  @cols = []
  @cols << rorschart_serie.cols[0] rescue nil
  row_nil.keys.each { |r|
    @cols << { :type => type, :label => r }
  }

  if (options[:add_total_column])
    @cols.insert(1, {:type=>"number", :label=>"Total"})
    @rows.each { |row|
      total_value = row[1..-1].inject(0) { |sum,x| sum + x rescue sum + 0}

      row.insert(1, total_value)
    }
  end

  sort_by_date!
end

Private Instance Methods

init_cols_with_nil(rorschart_serie) click to toggle source
# File lib/rorschart/data/pivot_series.rb, line 46
def init_cols_with_nil(rorschart_serie)
  col_nil = {}
  rorschart_serie.rows.collect{|r| r[1]}.uniq.each{ |c|
    col_nil[c] = nil
  }
  return col_nil
end