diff --git a/app/helpers/dmsf_queries_helper.rb b/app/helpers/dmsf_queries_helper.rb index 54602ef9..a5e72126 100644 --- a/app/helpers/dmsf_queries_helper.rb +++ b/app/helpers/dmsf_queries_helper.rb @@ -189,14 +189,13 @@ module DmsfQueriesHelper end def filter_any? - # :v - standard filters - # :op - custom fields filters - [:v, :op].each do |p| - if params[p] - params[p].each do |filter| - return true if (filter.size > 1) && filter[1].all?{ |v| v.present? } - end + # :v - value, :op - operator + size = params[:op]&.keys&.size + if size + if (size == 1) && params[:op].has_key?('title') && params[:op]['title'] == '~' && params[:v]['title'].join.empty? + return false end + return true end false end diff --git a/app/models/dmsf_query.rb b/app/models/dmsf_query.rb index 336c27bc..f5927be4 100644 --- a/app/models/dmsf_query.rb +++ b/app/models/dmsf_query.rb @@ -112,7 +112,7 @@ class DmsfQuery < Query filters_clauses = [] filters.each_key do |field| v = values_for(field).clone - next unless v and !v.empty? + next unless v && !v.empty? operator = operator_for(field) case field when 'author' @@ -120,7 +120,7 @@ class DmsfQuery < Query v.push User.current.id.to_s end when 'title' - next if v.include?('') + next if (operator == '~') && v.join.empty? end filters_clauses << '(' + sql_for_field(field, operator, v, queried_table_name, field) + ')' end