Class: Datagrid::Columns::Column
- Inherits:
-
Object
- Object
- Datagrid::Columns::Column
- Defined in:
- lib/datagrid/columns/column.rb
Defined Under Namespace
Classes: ResponseFormat
Instance Attribute Summary collapse
-
#data_block ⇒ Object
Returns the value of attribute data_block.
-
#grid_class ⇒ Object
Returns the value of attribute grid_class.
-
#html_block ⇒ Object
Returns the value of attribute html_block.
-
#name ⇒ Object
Returns the value of attribute name.
-
#options ⇒ Object
Returns the value of attribute options.
Instance Method Summary collapse
- #block ⇒ Object
- #data? ⇒ Boolean
- #data_value(model, grid) ⇒ Object
- #generic_value(model, grid) ⇒ Object
- #header ⇒ Object
- #html? ⇒ Boolean
- #html_value(context, asset, grid) ⇒ Object
-
#initialize(grid_class, name, options = {}, &block) ⇒ Column
constructor
A new instance of Column.
- #inspect ⇒ Object
- #label ⇒ Object
- #mandatory? ⇒ Boolean
- #order ⇒ Object
- #order_by_value(model, grid) ⇒ Object
- #order_by_value? ⇒ Boolean
- #order_desc ⇒ Object
- #supports_order? ⇒ Boolean
- #to_s ⇒ Object
- #value_from_html_block(context, asset, grid) ⇒ Object
Constructor Details
#initialize(grid_class, name, options = {}, &block) ⇒ Column
Returns a new instance of Column.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/datagrid/columns/column.rb', line 30 def initialize(grid_class, name, = {}, &block) self.grid_class = grid_class self.name = name.to_sym self. = if [:html] == true self.html_block = block else self.data_block = block if [:html].is_a? Proc self.html_block = [:html] end end end |
Instance Attribute Details
#data_block ⇒ Object
Returns the value of attribute data_block.
28 29 30 |
# File 'lib/datagrid/columns/column.rb', line 28 def data_block @data_block end |
#grid_class ⇒ Object
Returns the value of attribute grid_class.
28 29 30 |
# File 'lib/datagrid/columns/column.rb', line 28 def grid_class @grid_class end |
#html_block ⇒ Object
Returns the value of attribute html_block.
28 29 30 |
# File 'lib/datagrid/columns/column.rb', line 28 def html_block @html_block end |
#name ⇒ Object
Returns the value of attribute name.
28 29 30 |
# File 'lib/datagrid/columns/column.rb', line 28 def name @name end |
#options ⇒ Object
Returns the value of attribute options.
28 29 30 |
# File 'lib/datagrid/columns/column.rb', line 28 def end |
Instance Method Details
#block ⇒ Object
133 134 135 136 |
# File 'lib/datagrid/columns/column.rb', line 133 def block Datagrid::Utils.warn_once("Datagrid::Columns::Column#block is deprecated. Use #html_block or #data_block instead") data_block end |
#data? ⇒ Boolean
93 94 95 |
# File 'lib/datagrid/columns/column.rb', line 93 def data? self.data_block != nil end |
#data_value(model, grid) ⇒ Object
45 46 47 48 |
# File 'lib/datagrid/columns/column.rb', line 45 def data_value(model, grid) result = generic_value(model,grid) result.is_a?(ResponseFormat) ? result.data_value : result end |
#generic_value(model, grid) ⇒ Object
138 139 140 141 142 143 144 |
# File 'lib/datagrid/columns/column.rb', line 138 def generic_value(model, grid) if self.data_block.arity >= 1 Datagrid::Utils.apply_args(model, grid, &data_block) else model.instance_eval(&self.data_block) end end |
#header ⇒ Object
55 56 57 58 |
# File 'lib/datagrid/columns/column.rb', line 55 def header self.[:header] || I18n.translate(self.name, :scope => "datagrid.#{self.grid_class.param_name}.columns", :default => self.name.to_s.humanize ) end |
#html? ⇒ Boolean
89 90 91 |
# File 'lib/datagrid/columns/column.rb', line 89 def html? [:html] != false end |
#html_value(context, asset, grid) ⇒ Object
109 110 111 112 113 114 115 116 |
# File 'lib/datagrid/columns/column.rb', line 109 def html_value(context, asset, grid) if html? && html_block value_from_html_block(context, asset, grid) else result = generic_value(asset,grid) result.is_a?(ResponseFormat) ? result.html_value(context) : result end end |
#inspect ⇒ Object
101 102 103 |
# File 'lib/datagrid/columns/column.rb', line 101 def inspect "#<Datagird::Columns::Column #{grid_class}##{name} #{options.inspect}>" end |
#label ⇒ Object
51 52 53 |
# File 'lib/datagrid/columns/column.rb', line 51 def label self.[:label] end |
#mandatory? ⇒ Boolean
97 98 99 |
# File 'lib/datagrid/columns/column.rb', line 97 def mandatory? !! [:mandatory] end |
#order ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/datagrid/columns/column.rb', line 60 def order if .has_key?(:order) && [:order] != true self.[:order] else grid_class.driver.default_order(grid_class.scope, name) end end |
#order_by_value(model, grid) ⇒ Object
72 73 74 75 76 77 78 |
# File 'lib/datagrid/columns/column.rb', line 72 def order_by_value(model, grid) if [:order_by_value] == true data_value(model, grid) else Datagrid::Utils.apply_args(model, grid, &[:order_by_value]) end end |
#order_by_value? ⇒ Boolean
80 81 82 |
# File 'lib/datagrid/columns/column.rb', line 80 def order_by_value? !! [:order_by_value] end |
#order_desc ⇒ Object
84 85 86 87 |
# File 'lib/datagrid/columns/column.rb', line 84 def order_desc return nil unless order self.[:order_desc] end |
#supports_order? ⇒ Boolean
68 69 70 |
# File 'lib/datagrid/columns/column.rb', line 68 def supports_order? order || order_by_value? end |
#to_s ⇒ Object
105 106 107 |
# File 'lib/datagrid/columns/column.rb', line 105 def to_s header end |
#value_from_html_block(context, asset, grid) ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/datagrid/columns/column.rb', line 118 def value_from_html_block(context, asset, grid) args = [] remaining_arity = html_block.arity if data? args << data_value(asset,grid) remaining_arity -= 1 end args << asset if remaining_arity > 0 args << grid if remaining_arity > 1 return context.instance_exec(*args, &html_block) end |