class Datagrid::Columns::Column

Attributes

data_block[RW]
grid_class[RW]
html_block[RW]
name[RW]
options[RW]
query[RW]

Public Class Methods

new(grid_class, name, query, options = {}, &block) click to toggle source
# File lib/datagrid/columns/column.rb, line 36
def initialize(grid_class, name, query, options = {}, &block)
  self.grid_class = grid_class
  self.name = name.to_sym
  self.options = options
  if options[:html] == true
    self.html_block = block
  else
    self.data_block = block

    if options[:html].is_a? Proc
      self.html_block = options[:html]
    end
  end
  self.query = query
end

Public Instance Methods

append_preload(relation) click to toggle source
# File lib/datagrid/columns/column.rb, line 136
def append_preload(relation)
  return relation unless preload
  if preload.respond_to?(:call)
    return relation unless preload
    if preload.arity == 1
      preload.call(relation)
    else
      relation.instance_exec(&preload)
    end
  else
    driver.default_preload(relation, preload)
  end
end
data?() click to toggle source
# File lib/datagrid/columns/column.rb, line 103
def data?
  self.data_block != nil
end
data_value(model, grid) click to toggle source
# File lib/datagrid/columns/column.rb, line 52
def data_value(model, grid)
  # backward compatibility method
  grid.data_value(name, model)
end
driver() click to toggle source
# File lib/datagrid/columns/column.rb, line 161
def driver
  grid_class.driver
end
enabled?(grid) click to toggle source
# File lib/datagrid/columns/column.rb, line 115
def enabled?(grid)
  ::Datagrid::Utils.process_availability(grid, options[:if], options[:unless])
end
generic_value(model, grid) click to toggle source
# File lib/datagrid/columns/column.rb, line 132
def generic_value(model, grid)
  grid.generic_value(self, model)
end
header() click to toggle source
# File lib/datagrid/columns/column.rb, line 62
def header
  if header = options[:header]
    Datagrid::Utils.callable(header)
  else
    Datagrid::Utils.translate_from_namespace(:columns, grid_class, name)
  end
end
html?() click to toggle source
# File lib/datagrid/columns/column.rb, line 99
def html?
  options[:html] != false
end
html_value(context, asset, grid) click to toggle source
# File lib/datagrid/columns/column.rb, line 127
def html_value(context, asset, grid)
  grid.html_value(name, context, asset)
end
inspect() click to toggle source
# File lib/datagrid/columns/column.rb, line 119
def inspect
  "#<#{self.class} #{grid_class}##{name} #{options.inspect}>"
end
label() click to toggle source
# File lib/datagrid/columns/column.rb, line 58
def label
  self.options[:label]
end
mandatory?() click to toggle source
# File lib/datagrid/columns/column.rb, line 107
def mandatory?
  !! options[:mandatory]
end
mandatory_explicitly_set?() click to toggle source
# File lib/datagrid/columns/column.rb, line 111
def mandatory_explicitly_set?
  options.key?(:mandatory)
end
order() click to toggle source
# File lib/datagrid/columns/column.rb, line 70
def order
  if options.has_key?(:order) && options[:order] != true
    self.options[:order]
  else
    driver.default_order(grid_class.scope, name)
  end
end
order_by_value(model, grid) click to toggle source
# File lib/datagrid/columns/column.rb, line 82
def order_by_value(model, grid)
  if options[:order_by_value] == true
    grid.data_value(self, model)
  else
    Datagrid::Utils.apply_args(model, grid, &options[:order_by_value])
  end
end
order_by_value?() click to toggle source
# File lib/datagrid/columns/column.rb, line 90
def order_by_value?
  !! options[:order_by_value]
end
order_desc() click to toggle source
# File lib/datagrid/columns/column.rb, line 94
def order_desc
  return nil unless order
  self.options[:order_desc]
end
preload() click to toggle source
# File lib/datagrid/columns/column.rb, line 150
def preload
  preload = options[:preload]

  if preload == true && driver.can_preload?(grid_class.scope, name)
    name
  else
    preload
  end

end
supports_order?() click to toggle source
# File lib/datagrid/columns/column.rb, line 78
def supports_order?
  order || order_by_value?
end
to_s() click to toggle source
# File lib/datagrid/columns/column.rb, line 123
def to_s
  header
end