Sha256: 8db683fa6d5a22232035bad0f59f6d601fc10ce69c84f4127e19d5d3e941e4ef

Contents?: true

Size: 844 Bytes

Versions: 1

Compression:

Stored size: 844 Bytes

Contents

# frozen_string_literal: true

# creates the datatable and it's columns
class DataTable
  attr_reader :columns, :rows, :labels

  def initialize(columns, rows, grouping)
    @grouping = grouping
    @rows = rows + ['TOTAL']
    @columns = treat_columns(columns)
    @labels = @columns.map(&:label)
  end

  private

  def treat_columns(columns)
    convert_columns(columns)
    columns.map! do |col|
      if col.is_a?(CombinedColumn)
        col.columns = columns.find_all { |col2| col.columns.include?(col2.label) }.sort do |column|
          col.columns.index(column.label)
        end
      end
      col
    end
  end

  def convert_columns(columns)
    columns.map! do |col|
      if col[:column_type] == 'combined'
        CombinedColumn.new(col)
      else
        Column.new(col.merge(grouping: @grouping))
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
easy_data_tables-0.1.1 app/models/data_table.rb