available_filters[field][:type] if available_filters.has_key?(field)
end
+ def allowed_values_for(field)
+ available_filters[field][:values] if available_filters.has_key?(field)
+ end
+
def operator_for(field)
has_filter?(field) ? filters[field][:operator] : nil
end
sql = ''
case operator
when "="
+ value &= allowed_values_for(field).collect {|val| val[1]} if value.present? && allowed_values_for(field).present?
if value.any?
case type_for(field)
when :date, :date_past
sql = "1=0"
end
when "!"
+ value &= allowed_values_for(field).collect {|val| val[1]} if value.present? && allowed_values_for(field).present?
if value.any?
sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))"
else
'!~This is part of a subject' => { :op => '!~', :values => ['This is part of a subject'] }},
'tracker_id' => {
'3' => { :op => '=', :values => ['3'] },
- '=3' => { :op => '=', :values => ['3'] }},
+ '=3' => { :op => '=', :values => ['3'] },
+ '*' => { :op => '=', :values => ['*'] },
+ '!*' => { :op => '!', :values => ['*'] }},
'start_date' => {
'2011-10-12' => { :op => '=', :values => ['2011-10-12'] },
'=2011-10-12' => { :op => '=', :values => ['2011-10-12'] },