module Engine2::ActionListSupport
Attributes
default_order_field[R]
filters[R]
orders[R]
Public Instance Methods
default_order(order)
click to toggle source
# File lib/engine2/action.rb, line 748 def default_order order @default_order_field = order end
field_tabs(hash)
click to toggle source
Calls superclass method
# File lib/engine2/action.rb, line 666 def field_tabs hash super search_template 'scaffold/search_tabs' end
filter(name, &blk)
click to toggle source
# File lib/engine2/action.rb, line 776 def filter name, &blk (@filters ||= {})[name] = blk end
filter_case_insensitive(name)
click to toggle source
# File lib/engine2/action.rb, line 780 def filter_case_insensitive name model = assets[:model] raise E2Error.new("Field '#{name}' needs to be a string") unless model.find_type_info(name)[:otype] == :string filter name do |handler, query, hash| value = hash[name] value ? query.where(model.table_name.q(name).ilike("%#{value}%")) : query end end
order(name, &blk)
click to toggle source
# File lib/engine2/action.rb, line 789 def order name, &blk (@orders ||= {})[name] = blk end
post_process()
click to toggle source
def find_renderer type_info
renderer = DefaultSearchRenderers[type_info[:type]] || DefaultSearchRenderers[type_info[:otype]] raise E2Error.new("No search renderer found for field '#{type_info[:name]}'") unless renderer renderer.(self, type_info)
end
Calls superclass method
# File lib/engine2/action.rb, line 698 def post_process model = assets[:model] if fields = @meta[:search_field_list] fields = fields - static.meta[:search_field_list] if dynamic? decorate(fields) fields.each do |name| type_info = model.find_type_info(name) # render = fields[name][:render] # if not render # fields[name][:render] = find_renderer(type_info) # else # fields[name][:render].merge!(find_renderer(type_info)){|key, v1, v2|v1} # end fields(name)[:render] ||= begin # set before :field_list renderer = DefaultSearchRenderers[type_info[:type]] || DefaultSearchRenderers[type_info[:otype]] raise E2Error.new("No search renderer found for field '#{type_info[:name]}'") unless renderer renderer.(self, type_info) end proc = SearchRendererPostProcessors[type_info[:type]] || ListRendererPostProcessors[type_info[:type]] # ? proc.(self, name, type_info) if proc end end if fields = @meta[:field_list] fields = fields - static.meta[:field_list] if dynamic? decorate(fields) fields.each do |name| type_info = model.find_type_info(name) proc = ListRendererPostProcessors[type_info[:type]] proc.(self, name, type_info) if proc end end super end
post_run()
click to toggle source
Calls superclass method
# File lib/engine2/action.rb, line 678 def post_run super unless panel[:class] panel_class case @meta[:field_list].size when 1..3; '' when 4..6; 'modal-large' else; 'modal-huge' end end @meta[:primary_fields] = assets[:model].primary_keys end
pre_run()
click to toggle source
Calls superclass method
# File lib/engine2/action.rb, line 640 def pre_run super config.merge!(per_page: 10, use_count: false, selectable: true) # search_active: false, panel_template 'scaffold/list' panel_title "#{assets[:model].model_icon.icon} #{LOCS[assets[:model].model_route]}" loc! LOCS[:list_locs] menu :menu do properties break: 2, group_class: "btn-group-sm" option :search_toggle, icon: "search", show: "action.meta.search_field_list", active: "action.ui_state.search_active", button_loc: false # divider option :refresh, icon: "refresh", button_loc: false option :default_order, icon: "signal", button_loc: false divider option :debug_info, icon: "list-alt" do option :show_meta, icon: "eye-open" end if Handler::development? end menu :item_menu do properties break: 1, group_class: "btn-group-sm" end @meta[:state] = [:query, :ui_state] end
search_live(*flds)
click to toggle source
# File lib/engine2/action.rb, line 752 def search_live *flds if flds.empty? flds = @meta[:search_field_list] @meta[:disable_search_button] = true end fields! *flds, search_live: true end
search_template(template)
click to toggle source
# File lib/engine2/action.rb, line 739 def search_template template panel[:search_template] = template end
searchable(*flds)
click to toggle source
# File lib/engine2/action.rb, line 760 def searchable *flds @meta.delete(:tab_list) @meta.delete(:tabs) search_template 'scaffold/search' @meta[:search_field_list] = *flds end
searchable_tabs(tabs)
click to toggle source
# File lib/engine2/action.rb, line 767 def searchable_tabs tabs searchable *tabs.map{|name, fields|fields}.flatten field_tabs tabs end
sortable(*flds)
click to toggle source
# File lib/engine2/action.rb, line 743 def sortable *flds flds = @meta[:field_list] if flds.empty? fields! *flds, sort: true end
template()
click to toggle source
# File lib/engine2/action.rb, line 772 def template SearchTemplates end