class AppKit::FilterFormBuilder
Public Instance Methods
filter(field)
click to toggle source
# File lib/app_kit/filter_form_builder.rb, line 71 def filter(field) label(field) + filter_field(field) end
filter_field(field)
click to toggle source
# File lib/app_kit/filter_form_builder.rb, line 47 def filter_field(field) case field.data_type when :date, :datetime @template.content_tag :div, class: 'range-filter date-range' do @template.search_field_tag(get_field_name(field,'from'), nil, placeholder: 'from') + @template.search_field_tag(get_field_name(field,'to'), nil, placeholder: 'to') end when :boolean value = filter_params[field.name]["value"] rescue nil options = @template.options_for_select([['Any', ''],['Yes', 'true'], ['No', 'false']], value) @template.select_tag get_field_name(field, 'value'), options when :integer if field.is_foreign_key? @template.collection_select get_field_name(field), nil, field.association.klass.all, :id, :to_s, prompt: 'Any' else predicate_filter(field) end else predicate_filter(field) end end
filter_params()
click to toggle source
# File lib/app_kit/filter_form_builder.rb, line 3 def filter_params @template.params[param_set.to_sym].try(:first) end
get_field_name(field, tag="value")
click to toggle source
# File lib/app_kit/filter_form_builder.rb, line 10 def get_field_name(field, tag="value") "#{param_set}[][#{field.name}][#{tag}]" end
label(field)
click to toggle source
# File lib/app_kit/filter_form_builder.rb, line 13 def label(field) css = "" if filter_params if filter_params[field.name]["value"].present? css << " highlight" end end @template.label param_set, field.name, field.display_name, class: css end
param_set()
click to toggle source
# File lib/app_kit/filter_form_builder.rb, line 7 def param_set "#{@object_name.underscore}_filter" end
predicate_filter(field)
click to toggle source
# File lib/app_kit/filter_form_builder.rb, line 76 def predicate_filter(field) @template.content_tag :div, class: 'predicate-filter' do @template.content_tag(:div, predicate_select(field), class: 'predicate-select') + @template.content_tag(:div, search_input(field), class: 'value') end end
predicate_select(field)
click to toggle source
# File lib/app_kit/filter_form_builder.rb, line 27 def predicate_select(field) select_options_array = case field.data_type when :integer, :decimal [ ['equals', 'eq'], ['greater than','gt'], ['less than', 'lt'], ['not equal', 'nq'] ] else [ ['contains', 'cont'], ['doesn\'t contain', 'ncont'] ] end @template.select_tag get_field_name(field, 'condition'), @template.options_for_select(select_options_array) end
search_input(field)
click to toggle source
# File lib/app_kit/filter_form_builder.rb, line 22 def search_input(field) value = filter_params[field.name]["value"] rescue nil @template.search_field_tag get_field_name(field), value end