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