class ActiveList::Definition::Table
Attributes
columns[R]
id[R]
model[R]
name[R]
options[R]
parameters[R]
Public Class Methods
new(name, model = nil, options = {})
click to toggle source
# File lib/active_list/definition/table.rb, line 6 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
Public Instance Methods
action(name, options = {})
click to toggle source
Add a new method in Table
which permit to define action columns
# File lib/active_list/definition/table.rb, line 102 def action(name, options = {}) add :action, name, options end
action_columns()
click to toggle source
# File lib/active_list/definition/table.rb, line 71 def action_columns @columns.select { |c| c.is_a? ActionColumn } end
check_box(name, options = {})
click to toggle source
children()
click to toggle source
# File lib/active_list/definition/table.rb, line 37 def children @columns.map(&:child) end
column(name, options = {})
click to toggle source
Add a new method in Table
which permit to define data columns
# 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] && @model.reflect_on_association(options[:through]) options[:label_method] ||= name add :association, name, options else add :attribute, name, options end end
data_columns()
click to toggle source
# File lib/active_list/definition/table.rb, line 67 def data_columns @columns.select { |c| c.is_a? DataColumn } end
empty(name, options = {})
click to toggle source
Add a new method in Table
which permit to define empty columns
# File lib/active_list/definition/table.rb, line 107 def empty(name, options = {}) add :empty, name, options end
exportable_columns()
click to toggle source
# File lib/active_list/definition/table.rb, line 33 def exportable_columns @columns.select(&:exportable?) end
global_action_columns()
click to toggle source
# File lib/active_list/definition/table.rb, line 53 def global_action_columns action_columns.select(&:global?) end
has_many_records_action?()
click to toggle source
# File lib/active_list/definition/table.rb, line 45 def has_many_records_action? many_records_action_columns.any? end
load_default_columns()
click to toggle source
# File lib/active_list/definition/table.rb, line 140 def load_default_columns for column in model_columns reflections = @model.reflect_on_all_associations(:belongs_to).select { |r| 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 } column(%i[label name code number].detect { |l| columns.include?(l.to_s) }, through: reflection.name, url: true) else column(column.name.to_sym) end end true end
many_records_action_columns()
click to toggle source
# File lib/active_list/definition/table.rb, line 49 def many_records_action_columns action_columns.select(&:use_many?) end
model_columns()
click to toggle source
# File lib/active_list/definition/table.rb, line 25 def model_columns @model.columns_hash.values end
new_column_id()
click to toggle source
# File lib/active_list/definition/table.rb, line 18 def new_column_id @current_column_id ||= 0 id = @current_column_id.to_s # (36).to_sym @current_column_id += 1 id end
paginate?()
click to toggle source
# File lib/active_list/definition/table.rb, line 41 def paginate? @paginate end
reflections()
click to toggle source
Compute includes Hash
# File lib/active_list/definition/table.rb, line 80 def reflections hash = [] columns.each do |column| next unless column.respond_to?(:reflection) unless hash.detect { |r| r.name == column.reflection.name } hash << column.reflection end end hash end
selectable?()
click to toggle source
# File lib/active_list/definition/table.rb, line 57 def selectable? @options[:selectable] || action_columns.select(&:use_many?).any? || data_columns.any?(&:computable?) end
sortable_columns()
click to toggle source
# File lib/active_list/definition/table.rb, line 29 def sortable_columns @columns.select(&:sortable?) end
status(*args)
click to toggle source
# 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_columns()
click to toggle source
Retrieves all columns in database
# File lib/active_list/definition/table.rb, line 62 def table_columns cols = model_columns.map(&:name) @columns.select { |c| c.is_a?(DataColumn) && cols.include?(c.name.to_s) } end
text_field(name, options = {})
click to toggle source
Add a new method in Table
which permit to define text_field
columns
# File lib/active_list/definition/table.rb, line 92 def text_field(name, options = {}) add :text_field, name, options end
Private Instance Methods
add(type, name, options = {})
click to toggle source
Checks and add column
# File lib/active_list/definition/table.rb, line 157 def add(type, name, options = {}) klass = begin "ActiveList::Definition::#{type.to_s.camelcase}Column".constantize rescue nil end if klass && klass < AbstractColumn unless name.is_a?(Symbol) raise ArgumentError, "Name of a column must be a Symbol (got #{name.inspect})." end if @columns.detect { |c| c.name == name } raise ArgumentError, "Column name must be unique. #{name.inspect} is already used in #{self.name}" end @columns << klass.new(self, name, options) else raise ArgumentError, "Invalid column type: #{type.inspect}" end end