Sha256: 7eda8328e3072aff78c661b4c814a6f2b0591bba2c1b500a510f3c720678f439

Contents?: true

Size: 998 Bytes

Versions: 2

Compression:

Stored size: 998 Bytes

Contents

# frozen_string_literal: true

module EasyDataTables
  # 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|
        case col[:column_type]
        when 'combined'
          CombinedColumn.new(col)
        when 'custom'
          CustomColumn.new(col)
        else
          Column.new(col.merge(grouping: @grouping))
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
easy_data_tables-0.3.1 app/models/easy_data_tables/data_table.rb
easy_data_tables-0.3.0 app/models/easy_data_tables/data_table.rb