Module: Cullender::Controllers::FilterLogic
- Included in:
- RulesController
- Defined in:
- lib/cullender/controllers/filter_logic.rb
Instance Method Summary collapse
- #add_and_filter(key, params, field) ⇒ Object
- #add_operator(field) ⇒ Object
- #add_or_filter(key, params, field, should_raise = false) ⇒ Object
- #apply_filter_actions(name, filter_params, params) ⇒ Object
- #clean_field(field) ⇒ Object
- #remove_and_filter(key, params, field) ⇒ Object
Instance Method Details
#add_and_filter(key, params, field) ⇒ Object
21 22 23 24 25 26 27 28 |
# File 'lib/cullender/controllers/filter_logic.rb', line 21 def add_and_filter(key, params, field) clean_field(field) unless field.is_a? String if params.present? && params.has_key?(key) params[key].deep_merge!(add_operator(field)) else params[key] = add_operator(field) end end |
#add_operator(field) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/cullender/controllers/filter_logic.rb', line 51 def add_operator(field) if field.is_a?(Hash) hash = {} field.each do |key, value| if ["o", "v"].include?(key) hash = field break else hash.merge!({key => add_operator(value)}) unless ["o", "v"].include?(key) end end elsif hash = {field => {"o" => nil}} end hash end |
#add_or_filter(key, params, field, should_raise = false) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/cullender/controllers/filter_logic.rb', line 4 def add_or_filter(key, params, field, should_raise = false) if params.present? && params.has_key?(key) if should_raise params[key] = {1 => params[key], 2 => add_operator(field)} else idx = params[key].keys.last.to_i + 1 params[key].deep_merge!({idx => add_operator(field)}) end else if should_raise params[key] = add_operator(field) else params[key] = add_operator(field) end end end |
#apply_filter_actions(name, filter_params, params) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/cullender/controllers/filter_logic.rb', line 68 def apply_filter_actions(name, filter_params, params) # debugger updated = false if params.has_key?("or") && (params["or"].has_key?("commit") || params["or"].has_key?("raise")) nfilter = params.delete("or") should_raise = nfilter.has_key?("raise") add_or_filter(name, filter_params, should_raise ? nfilter["raise_field"] : nfilter["field"], should_raise) if (nfilter["field"].present? || nfilter["raise_field"].present?) updated = true elsif params.has_key?("and") && params["and"].has_key?("commit") nfilter = params.delete("and") add_and_filter(name, filter_params, nfilter["field"]) if nfilter["field"].present? updated = true elsif params.has_key?("remove") nfilter = params.delete("remove") remove_and_filter(name, filter_params, nfilter) updated = true end updated end |
#clean_field(field) ⇒ Object
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/cullender/controllers/filter_logic.rb', line 30 def clean_field(field) field.each do |key, value| if value.is_a?(Hash) clean_field(value) else field.delete(key) if value.blank? end end end |
#remove_and_filter(key, params, field) ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/cullender/controllers/filter_logic.rb', line 41 def remove_and_filter(key, params, field) if params.present? && params.has_key?(key) if field.is_a? String params[key].delete(field) else params[key].deep_delete(field) end end end |