lib/engine2/action/array.rb in engine2-1.0.6 vs lib/engine2/action/array.rb in engine2-1.0.7

- old
+ new

@@ -9,11 +9,20 @@ (DefaultFilters ||= {}).merge!( exact: lambda{|entries, name, value, type_info, hash| entries.select{|e|e[name] == value} }, string: lambda{|entries, name, value, type_info, hash| - entries.select{|e|e[name].to_s[value]} + if type_info[:type] == :list_select + if type_info[:multiselect] + entries.select{|e|value.include?(e[name].to_s)} + else + entries.select{|e|e[name].to_s == value} + end + else + entries.select{|e|e[name].to_s[value]} + end + }, boolean: lambda{|*args| DefaultFilters[:exact].(*args)}, integer: lambda{|entries, name, value, type_info, hash| if value.is_a? Hash from, to = value[:from], value[:to] @@ -32,10 +41,14 @@ def data_source handler [] end + def page_frame handler, entries + entries + end + def invoke handler params = handler.params # if params[:initial] || params[:refresh] entries = data_source(handler) @@ -52,10 +65,10 @@ if search = params[:search] entries = list_search(entries, handler, search) end - {entries: entries.drop(page).take(per_page), count: entries.size} + {entries: page_frame(handler, entries[page, per_page]), count: entries.size} end def list_search entries, handler, search hash = JSON.parse(search, symbolize_names: true) rescue handler.halt_forbidden model = assets[:model] \ No newline at end of file