class RailsServersideDatatables::Column
Constants
- CONFIGURATION_KEYS
Attributes
column_filtering[RW]
decorator[RW]
display_name[RW]
filtering[RW]
sorting[RW]
Public Class Methods
new( name, definition, config = {}, &block )
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 13 def initialize( name, definition, config = {}, &block ) @name = name @definition = ExprTreeNode.create_by_type definition @structured = config.reject { |c| CONFIGURATION_KEYS.include? c }.to_a.map { |s| [s.first, ExprTreeNode.create_by_type(s.last ) ] }.to_h @decorator = block @display_name = config.fetch( :display_name, name.to_s.capitalize ) @column_filtering = config.fetch( :column_filtering, true ) @sorting = config.fetch( :sorting, true ) @filtering = config.fetch( :filtering, true ) end
Public Instance Methods
column_filter( filter )
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 54 def column_filter( filter ) return Nothing.new unless column_filtering create_filter( filter ) end
configuration()
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 64 def configuration { filtering: filtering, sorting: sorting, column_filtering: true, display_name: display_name, name: @name } end
filter( filter )
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 59 def filter( filter ) return Nothing.new unless filtering create_filter( filter ) end
order( direction = :ASC )
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 49 def order( direction = :ASC ) return Nothing.new unless sorting OrderBy.new( @order_definition || main_column_name, direction ) end
order_definition=( definition )
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 30 def order_definition=( definition ) @order_definition = definition end
select()
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 44 def select @structured.to_a.map { |c| ExpressionAlias.new( c.last, helper_column_name(c.first) ) } + [ ExpressionAlias.new( @definition, main_column_name ) ] end
structured( record )
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 34 def structured( record ) @structured.to_a.map do |s| [s.first, record.read_attribute(helper_column_name s.first)] end.to_h end
value( record )
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 40 def value( record ) decorated record.read_attribute( main_column_name ), structured( record ) end
Private Instance Methods
create_filter( filter )
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 73 def create_filter( filter ) FilterByText.new( @definition, filter ) end
decorated( main, structured )
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 77 def decorated( main, structured ) @decorator.nil? ? CGI.escapeHTML( main.to_s ) : @decorator.call( main, structured ) end
helper_column_name( structured_label )
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 85 def helper_column_name( structured_label ) "#{@name.to_s}_raw_#{structured_label.to_s}".to_sym end
main_column_name()
click to toggle source
# File lib/rails_serverside_datatables/column.rb, line 81 def main_column_name "#{@name.to_s}_main".to_sym end