Class: ActiveList::Definition::AttributeColumn

Inherits:
DataColumn show all
Defined in:
lib/active_list/definition/attribute_column.rb

Direct Known Subclasses

StatusColumn

Constant Summary

Constants inherited from DataColumn

DataColumn::LABELS_COLUMNS

Instance Attribute Summary collapse

Attributes inherited from AbstractColumn

#condition, #id, #name, #options, #table

Instance Method Summary collapse

Methods inherited from DataColumn

#currency_for, #datatype, #exportable?, #exporting_datum_code, #header_code, #limit, #numeric?, #record_expr, #state_machine?

Methods inherited from AbstractColumn

#check_options!, #exportable?, #header_code, #hidden?, #short_id, #unique_id

Constructor Details

#initialize(table, name, options = {}) ⇒ AttributeColumn

Returns a new instance of AttributeColumn.



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/active_list/definition/attribute_column.rb', line 6

def initialize(table, name, options = {})
  super(table, name, options)
  @label_method = (options[:label_method] || @name).to_sym
  @value_method = if options[:value_method].present?
                    options[:value_method].to_sym
                  else
                    @label_method.to_s.gsub('human_', '').to_sym
                  end
  @sort_column = get_sort_column
  @computation_method = options[:on_select]
  @column = @table.model.columns_hash[@label_method.to_s]
end

Instance Attribute Details

#columnObject (readonly)

Returns the value of attribute column.



4
5
6
# File 'lib/active_list/definition/attribute_column.rb', line 4

def column
  @column
end

#computation_methodObject (readonly)

Returns the value of attribute computation_method.



4
5
6
# File 'lib/active_list/definition/attribute_column.rb', line 4

def computation_method
  @computation_method
end

#label_methodObject (readonly)

Returns the value of attribute label_method.



4
5
6
# File 'lib/active_list/definition/attribute_column.rb', line 4

def label_method
  @label_method
end

#sort_columnObject (readonly)

Returns the value of attribute sort_column.



4
5
6
# File 'lib/active_list/definition/attribute_column.rb', line 4

def sort_column
  @sort_column
end

#value_methodObject (readonly)

Returns the value of attribute value_method.



4
5
6
# File 'lib/active_list/definition/attribute_column.rb', line 4

def value_method
  @value_method
end

Instance Method Details

#class_nameObject

Returns the class name of the used model



67
68
69
# File 'lib/active_list/definition/attribute_column.rb', line 67

def class_name
  "RECORD.class.name.tableize".c
end

#computable?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/active_list/definition/attribute_column.rb', line 75

def computable?
  !computation_method.nil?
end

#datum_code(record = 'record_of_the_death', child = false) ⇒ Object

Code for rows



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/active_list/definition/attribute_column.rb', line 20

def datum_code(record = 'record_of_the_death', child = false)
  code = ''
  code = if child
           if @options[:children].is_a?(FalseClass)
             'nil'
           else
             "#{record}.#{table.options[:children]}.#{@options[:children] || @label_method}"
           end
         else
           "#{record}.#{@label_method}"
         end
  code.c
end

#datum_value(record = 'record of the death', child = false) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/active_list/definition/attribute_column.rb', line 34

def datum_value(record = 'record of the death', child = false)
  code = ''
  code = if child
           if @options[:childer].is_a?(FalseClass)
             'nil'
           else
             "#{record}.#{table.options[:children]}.#{@options[:children] || @value_method}"
           end
         else
           "#{record}.#{@value_method}"
         end
  code.c
end

#enumerize?Boolean

Returns:

  • (Boolean)


79
80
81
82
# File 'lib/active_list/definition/attribute_column.rb', line 79

def enumerize?
  table.model.respond_to?(:enumerized_attributes) &&
    !table.model.enumerized_attributes[@label_method].nil?
end

#get_sort_columnObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/active_list/definition/attribute_column.rb', line 48

def get_sort_column
  selects = @table.options[:select] || {}
  selects_label = selects.find { |sql_name, name| name.to_s == @label_method.to_s }&.last
  selects_name = selects.find { |sql_name, name| name.to_s == @name.to_s }&.last
  if (selects_label || selects_name) && options[:sort].blank?
    sort_column = (selects_label || selects_name)
  else
    sort_column = options[:sort]
    sort_column ||= if @table.model.columns_hash[@label_method.to_s]
                       @label_method
                     elsif @table.model.columns_hash[@name.to_s]
                       @name
                     end
    sort_column &&= "#{@table.model.table_name}.#{sort_column}"
  end
  sort_column
end

#sort_expressionObject



84
85
86
# File 'lib/active_list/definition/attribute_column.rb', line 84

def sort_expression
  @sort_column
end

#sortable?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/active_list/definition/attribute_column.rb', line 71

def sortable?
  !sort_column.nil?
end