class DynamicScaffold::ListBuilder
Attributes
Public Class Methods
new(config)
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 5 def initialize(config) @config = config @items = [] @sorter = nil @order = [] @title = nil @filter = nil @row_class_block = nil @add_button = true @edit_buttons = true @destroy_buttons = true end
Public Instance Methods
build_sql(scope_params)
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 79 def build_sql(scope_params) sql = @config.model.all sql = sql.where scope_params ret = @config.controller.instance_exec(sql, &@filter) unless @filter.nil? sql = ret unless ret.nil? unless sql.is_a? ::ActiveRecord::Relation raise( Error::InvalidOperation, 'You must return ActiveRecord::Relation from filter block' ) end sql end
filter(&block)
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 93 def filter(&block) @filter = block if block_given? @filter end
item(*args, &block)
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 33 def item(*args, &block) item = List::Item.new(@config, *args, block) @items << item item end
items()
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 39 def items if @items.empty? @config.model.column_names.each do |column| @items << List::Item.new(@config, column, nil) end end @items end
order(*args)
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 56 def order(*args) @order = args unless args.empty? @order end
page_param_name()
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 24 def page_param_name pagination ? pagination.param_name : nil end
pagination(options = nil)
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 18 def pagination(options = nil) @pagination = List::Pagination.new(options) unless options.nil? @pagination end
row_class(record = nil, &block)
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 98 def row_class(record = nil, &block) if block_given? @row_class_block = block elsif record.present? && @row_class_block @config.controller.view_context.instance_exec(record, &@row_class_block) end end
sorter(params = nil)
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 28 def sorter(params = nil) @sorter = params if params @sorter end
sorter_attribute()
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 48 def sorter_attribute @sorter.keys.first end
sorter_direction()
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 52 def sorter_direction @sorter.values.first end
title(*args, &block)
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 61 def title(*args, &block) if args[0].is_a?(Symbol) || args[0].is_a?(String) || block_given? @title = { column_name: args[0], block: block } else record = args[0] return @config.controller.view_context.instance_exec(record, &@title[:block]) if @title[:block] record.public_send(@title[:column_name]) end end
title?()
click to toggle source
# File lib/dynamic_scaffold/list_builder.rb, line 75 def title? @title.present? end