Class: ActiveList::Definition::Table

Inherits:
Object
  • Object
show all
Defined in:
lib/active_list/definition/table.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, model = nil, options = {}) ⇒ Table

Returns a new instance of Table.



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

def initialize(name, model = nil, options = {})
  @name    = name
  @model   = model || name.to_s.classify.constantize
  @options = options
  @paginate = !(@options[:pagination]==:none || @options[:paginate].is_a?(FalseClass))
  @options[:renderer] ||= :simple_renderer
  @options[:per_page] = 20 if @options[:per_page].to_i <= 0
  @options[:page] = 1 if @options[:page].to_i <= 0
  @columns = []
  @id = ActiveList.new_uid
end

Instance Attribute Details

#columnsObject (readonly)

Returns the value of attribute columns.



6
7
8
# File 'lib/active_list/definition/table.rb', line 6

def columns
  @columns
end

#idObject (readonly)

Returns the value of attribute id.



6
7
8
# File 'lib/active_list/definition/table.rb', line 6

def id
  @id
end

#modelObject (readonly)

Returns the value of attribute model.



6
7
8
# File 'lib/active_list/definition/table.rb', line 6

def model
  @model
end

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/active_list/definition/table.rb', line 6

def name
  @name
end

#optionsObject (readonly)

Returns the value of attribute options.



6
7
8
# File 'lib/active_list/definition/table.rb', line 6

def options
  @options
end

#parametersObject (readonly)

Returns the value of attribute parameters.



6
7
8
# File 'lib/active_list/definition/table.rb', line 6

def parameters
  @parameters
end

Instance Method Details

#action(name, options = {}) ⇒ Object

Add a new method in Table which permit to define action columns



106
107
108
# File 'lib/active_list/definition/table.rb', line 106

def action(name, options = {})
  add :action, name, options
end

#action_columnsObject



73
74
75
# File 'lib/active_list/definition/table.rb', line 73

def action_columns
  @columns.select{|c| c.is_a? ActionColumn}
end

#check_box(name, options = {}) ⇒ Object

Add a new method in Table which permit to define check_box columns



101
102
103
# File 'lib/active_list/definition/table.rb', line 101

def check_box(name, options = {})
  add :check_box, name, options
end

#childrenObject



39
40
41
# File 'lib/active_list/definition/table.rb', line 39

def children
  @columns.map(&:child)
end

#column(name, options = {}) ⇒ Object

Add a new method in Table which permit to define data columns



122
123
124
125
126
127
128
129
130
131
132
# File 'lib/active_list/definition/table.rb', line 122

def column(name, options = {})
  if @model.reflect_on_association(name)
    options[:through] ||= name
    add :association, name, options
  elsif options[:through] and @model.reflect_on_association(options[:through])
    options[:label_method] ||= name
    add :association, name, options
  else
    add :attribute, name, options
  end
end

#data_columnsObject



69
70
71
# File 'lib/active_list/definition/table.rb', line 69

def data_columns
  @columns.select{|c| c.is_a? DataColumn}
end

#exportable_columnsObject



35
36
37
# File 'lib/active_list/definition/table.rb', line 35

def exportable_columns
  @columns.select{|c| c.exportable?}
end

#global_action_columnsObject



55
56
57
# File 'lib/active_list/definition/table.rb', line 55

def global_action_columns
  action_columns.select(&:global?)
end

#has_many_records_action?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/active_list/definition/table.rb', line 47

def has_many_records_action?
  many_records_action_columns.any?
end

#hidden_columnsObject



77
78
79
# File 'lib/active_list/definition/table.rb', line 77

def hidden_columns
  self.data_columns.select(&:hidden?)
end

#load_default_columnsObject



141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/active_list/definition/table.rb', line 141

def load_default_columns
  for column in self.model_columns
    reflections = @model.reflections.values.select{|r| r.macro == :belongs_to and r.foreign_key.to_s == column.name.to_s}
    if reflections.size == 1
      reflection = reflections.first
      columns = reflection.class_name.constantize.columns.collect{ |c| c.name.to_s }
      self.column([:label, :name, :code, :number].detect{ |l| columns.include?(l.to_s) }, :through => reflection.name, :url => true)
    else
      self.column(column.name.to_sym)
    end
  end
  return true
end

#many_records_action_columnsObject



51
52
53
# File 'lib/active_list/definition/table.rb', line 51

def many_records_action_columns
  action_columns.select(&:use_many?)
end

#model_columnsObject



27
28
29
# File 'lib/active_list/definition/table.rb', line 27

def model_columns
  @model.columns_hash.values
end

#new_column_idObject



20
21
22
23
24
25
# File 'lib/active_list/definition/table.rb', line 20

def new_column_id
  @current_column_id ||= 0
  id = @current_column_id.to_s(36).to_sym
  @current_column_id += 1
  return id
end

#paginate?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/active_list/definition/table.rb', line 43

def paginate?
  @paginate
end

#reflectionsObject

Compute includes Hash



82
83
84
85
86
87
88
89
90
91
92
# File 'lib/active_list/definition/table.rb', line 82

def reflections
  hash = []
  self.columns.each do |column|
    if column.respond_to?(:reflection)
      unless hash.detect{|r| r.name == column.reflection.name }
        hash << column.reflection
      end
    end
  end
  return hash
end

#selectable?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/active_list/definition/table.rb', line 59

def selectable?
  action_columns.select(&:use_many?).any?
end

#sortable_columnsObject



31
32
33
# File 'lib/active_list/definition/table.rb', line 31

def sortable_columns
  @columns.select{|c| c.sortable?}
end

#status(*args) ⇒ Object



134
135
136
137
138
# File 'lib/active_list/definition/table.rb', line 134

def status(*args)
  options = args.extract_options!
  name = args.shift || :status
  add :status, name, options
end

#table_columnsObject

Retrieves all columns in database



64
65
66
67
# File 'lib/active_list/definition/table.rb', line 64

def table_columns
  cols = self.model_columns.map(&:name)
  @columns.select{|c| c.is_a? DataColumn and cols.include? c.name.to_s}
end

#text_field(name, options = {}) ⇒ Object

Add a new method in Table which permit to define text_field columns



96
97
98
# File 'lib/active_list/definition/table.rb', line 96

def text_field(name, options = {})
  add :text_field, name, options
end