Sha256: 39ea0352ce0724ba9a48d6a6adec1237919f87c5e098b0c9dbde76d4ee38aef0

Contents?: true

Size: 972 Bytes

Versions: 4

Compression:

Stored size: 972 Bytes

Contents

class Datagrid::Columns::Column

  attr_accessor :grid, :options, :block, :name

  def initialize(grid, name, options = {}, &block)
    self.grid = grid
    self.name = name
    self.options = options
    self.block = block
  end

  def value(object)
    value_for(object)
  end

  def value_for(object)
    if self.block.arity == 1
      self.block.call(object)
    else
      object.instance_eval(&self.block)
    end
  end

  def format
    self.options[:format]
  end

  def label
    self.options[:label]
  end

  def header
    self.options[:header] || 
      I18n.translate(self.name, :scope => "reports.#{self.grid}.columns", :default => self.name.to_s.humanize )
  end

  def order
    if options.has_key?(:order)
      self.options[:order]
    else
      grid.scope.column_names.include?(name.to_s) ? [grid.scope.table_name, name].join(".") : nil
    end
  end

  def desc_order
    self.options[:desc_order]  || (order ? order.to_s + " DESC" : nil)
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
datagrid-0.2.0 lib/datagrid/columns/column.rb
datagrid-0.1.2 lib/datagrid/columns/column.rb
datagrid-0.1.1 lib/datagrid/columns/column.rb
datagrid-0.1.0 lib/datagrid/columns/column.rb