Class: WillFilter::Containers::FilterList

Inherits:
FilterContainer show all
Defined in:
lib/will_filter/containers/filter_list.rb

Instance Attribute Summary

Attributes inherited from FilterContainer

#condition, #filter, #index, #operator, #values

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from FilterContainer

#date, #initialize, #is_floating_point?, #is_numeric?, #reset_values, #sanitized_value, #serialize_to_params, #time, #value

Constructor Details

This class inherits a constructor from WillFilter::FilterContainer

Class Method Details

.operatorsObject



36
37
38
# File 'lib/will_filter/containers/filter_list.rb', line 36

def self.operators
  [:is_filtered_by]
end

Instance Method Details

#linked_filterObject



48
49
50
51
52
53
54
55
56
57
# File 'lib/will_filter/containers/filter_list.rb', line 48

def linked_filter
  @linked_filter ||= begin
    if condition.key == :id
      model_class_name = filter.model_class_name
    else
      model_class_name = condition.key.to_s[0..-4].camelcase
    end
    WillFilter::Filter.new(model_class_name)
  end
end

#optionsObject



59
60
61
# File 'lib/will_filter/containers/filter_list.rb', line 59

def options
  linked_filter.saved_filters(false)
end

#sql_conditionObject



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/will_filter/containers/filter_list.rb', line 63

def sql_condition
  return nil unless operator == :is_filtered_by
  sub_filter = WillFilter::Filter.find_by_id(value) || linked_filter.user_filters.first
  return [''] unless sub_filter

  sub_conds = sub_filter.sql_conditions

  if sub_conds[0].blank?
    sub_conds[0] = " #{condition.full_key} IN (SELECT #{sub_filter.table_name}.id FROM #{sub_filter.table_name}) "
  else
    sub_conds[0] = " #{condition.full_key} IN (SELECT #{sub_filter.table_name}.id FROM #{sub_filter.table_name} WHERE #{sub_conds[0]}) "
  end  

  sub_conds
end

#template_nameObject



44
45
46
# File 'lib/will_filter/containers/filter_list.rb', line 44

def template_name
  'list'
end

#validateObject



40
41
42
# File 'lib/will_filter/containers/filter_list.rb', line 40

def validate
  return "Value must be provided" if value.blank?
end