class Datagrid::Columns::Column
Attributes
@attribute [r] grid_class
@return [Class] grid class where column is defined
@attribute [r] name
@return [Symbol] column name
@attribute [r] column_options
@return [Hash<Symbol, Object>] column options
@attribute [r] grid_class
@return [Class] grid class where column is defined
@attribute [r] name
@return [Symbol] column name
@attribute [r] column_options
@return [Hash<Symbol, Object>] column options
@attribute [r] grid_class
@return [Class] grid class where column is defined
@attribute [r] name
@return [Symbol] column name
@attribute [r] column_options
@return [Hash<Symbol, Object>] column options
@attribute [r] grid_class
@return [Class] grid class where column is defined
@attribute [r] name
@return [Symbol] column name
@attribute [r] column_options
@return [Hash<Symbol, Object>] column options
@attribute [r] grid_class
@return [Class] grid class where column is defined
@attribute [r] name
@return [Symbol] column name
@attribute [r] column_options
@return [Hash<Symbol, Object>] column options
@attribute [r] grid_class
@return [Class] grid class where column is defined
@attribute [r] name
@return [Symbol] column name
@attribute [r] column_options
@return [Hash<Symbol, Object>] column options
Public Class Methods
Source
# File lib/datagrid/columns/column.rb, line 51 def initialize(grid_class, name, query, column_options = {}, &block) @grid_class = grid_class @name = name.to_sym @query = query @options = Datagrid::Utils.callable(grid_class.default_column_options, self).merge(column_options) if options[:class] Datagrid::Utils.warn_once( "column[class] option is deprecated. Use {tag_options: {class: ...}} instead.", ) self.options[:tag_options] = { **self.options.fetch(:tag_options, {}), class: options[:class], } end if options[:html] == true @html_block = block else @data_block = block @html_block = options[:html] if options[:html].is_a? Proc end end
@!visibility private
Public Instance Methods
Source
# File lib/datagrid/columns/column.rb, line 190 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
@!visibility private
Source
# File lib/datagrid/columns/column.rb, line 136 def data? data_block != nil end
@return [Boolean] weather a column should be displayed in data
Source
# File lib/datagrid/columns/column.rb, line 76 def data_value(model, grid) # backward compatibility method grid.data_value(name, model) end
@deprecated Use {Datagrid::Columns#data_value} instead
Source
# File lib/datagrid/columns/column.rb, line 165 def enabled?(grid) ::Datagrid::Utils.process_availability(grid, options[:if], options[:unless]) end
@param [Datagrid::Base] grid object @return [Boolean] weather a column is available via ‘if` and `unless` options
Source
# File lib/datagrid/columns/column.rb, line 185 def generic_value(model, grid) grid.generic_value(self, model) end
@!visibility private
Source
# File lib/datagrid/columns/column.rb, line 87 def header if (header = options[:header]) Datagrid::Utils.callable(header) else Datagrid::Utils.translate_from_namespace(:columns, grid_class, name) end end
@return [String] column header
Source
# File lib/datagrid/columns/column.rb, line 131 def html? options[:html] != false end
@return [Boolean] weather a column should be displayed in HTML
Source
# File lib/datagrid/columns/column.rb, line 151 def html_class Datagrid::Utils.warn_once( "Column#html_class is deprecated. Use Column#tag_options instead.", ) options[:class] end
@deprecated Use {#tag_options} instead.
Source
# File lib/datagrid/columns/column.rb, line 180 def html_value(context, asset, grid) grid.html_value(name, context, asset) end
@!visibility private
Source
# File lib/datagrid/columns/column.rb, line 170 def inspect "#<#{self.class} #{grid_class}##{name} #{options.inspect}>" end
@return [String] column console inspection
Source
# File lib/datagrid/columns/column.rb, line 82 def label options[:label] end
@deprecated Use {#header} instead
Source
# File lib/datagrid/columns/column.rb, line 141 def mandatory? !!options[:mandatory] end
@return [Boolean] weather a column is explicitly marked mandatory
Source
# File lib/datagrid/columns/column.rb, line 159 def mandatory_explicitly_set? options.key?(:mandatory) end
@return [Boolean] weather a ‘mandatory` option is explicitly set
Source
# File lib/datagrid/columns/column.rb, line 96 def order return nil if options[:order] == false if options.key?(:order) && options[:order] != true options[:order] else driver.default_order(grid_class.scope, name) end end
@return [Object] column order expression
Source
# File lib/datagrid/columns/column.rb, line 111 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
@!visibility private
Source
# File lib/datagrid/columns/column.rb, line 120 def order_by_value? !!options[:order_by_value] end
@return [Boolean] weather a column should be ordered by value
Source
# File lib/datagrid/columns/column.rb, line 124 def order_desc return nil unless order options[:order_desc] end
Source
# File lib/datagrid/columns/column.rb, line 207 def preload preload = options[:preload] if preload == true && driver.can_preload?(grid_class.scope, name) name else preload end end
@return [Object] ‘preload` option value
Source
# File lib/datagrid/columns/column.rb, line 106 def supports_order? !!order || order_by_value? end
@return [Boolean] weather column support order
Source
# File lib/datagrid/columns/column.rb, line 146 def tag_options options[:tag_options] || {} end
@return [Hash<Symbol, Object>] ‘tag_options` option value
Source
# File lib/datagrid/columns/column.rb, line 175 def to_s header end
@return [String] column header