Title as a default filter

This commit is contained in:
karel.picman@lbcfree.net 2020-06-26 13:37:41 +02:00
parent f3f9454e27
commit d6fd3e1e1e

View File

@ -41,7 +41,7 @@ class DmsfQuery < Query
def initialize(attributes=nil, *args) def initialize(attributes=nil, *args)
super attributes super attributes
self.sort_criteria = [] self.sort_criteria = []
self.filters = {} self.filters ||= { 'title' => { operator: '~', values: ['']} }
end end
###################################################################################################################### ######################################################################################################################
@ -82,7 +82,6 @@ class DmsfQuery < Query
def base_scope def base_scope
unless @scope unless @scope
statement # We need statement before scope due to the current folder filtering
@scope = [dmsf_folders_scope, dmsf_folder_links_scope, dmsf_files_scope, dmsf_file_links_scope, dmsf_url_links_scope]. @scope = [dmsf_folders_scope, dmsf_folder_links_scope, dmsf_files_scope, dmsf_file_links_scope, dmsf_url_links_scope].
inject(:union_all) inject(:union_all)
end end
@ -122,6 +121,8 @@ class DmsfQuery < Query
if v.delete('me') if v.delete('me')
v.push User.current.id.to_s v.push User.current.id.to_s
end end
when 'title'
next if v.include?('')
end end
filters_clauses << '(' + sql_for_field(field, operator, v, queried_table_name, field) + ')' filters_clauses << '(' + sql_for_field(field, operator, v, queried_table_name, field) + ')'
end end
@ -160,7 +161,7 @@ class DmsfQuery < Query
def dmsf_folders_scope def dmsf_folders_scope
cf_columns = +'' cf_columns = +''
if filters.any? if statement.present?
DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id| DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id|
cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFolder' AND customized_id = dmsf_folders.id) AS cf_#{id}" cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFolder' AND customized_id = dmsf_folders.id) AS cf_#{id}"
end end
@ -189,7 +190,7 @@ class DmsfQuery < Query
if dmsf_folder_id if dmsf_folder_id
scope.where dmsf_folders: { dmsf_folder_id: dmsf_folder_id, deleted: deleted } scope.where dmsf_folders: { dmsf_folder_id: dmsf_folder_id, deleted: deleted }
else else
if filters.any? || deleted if statement.present? || deleted
scope.where dmsf_folders: { project_id: project.id, deleted: deleted } scope.where dmsf_folders: { project_id: project.id, deleted: deleted }
else else
scope.where dmsf_folders: { project_id: project.id, dmsf_folder_id: nil, deleted: deleted } scope.where dmsf_folders: { project_id: project.id, dmsf_folder_id: nil, deleted: deleted }
@ -199,7 +200,7 @@ class DmsfQuery < Query
def dmsf_folder_links_scope def dmsf_folder_links_scope
cf_columns = +'' cf_columns = +''
if filters.any? if statement.present?
DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id| DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id|
cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFolder' AND customized_id = dmsf_folders.id) AS cf_#{id}" cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFolder' AND customized_id = dmsf_folders.id) AS cf_#{id}"
end end
@ -228,7 +229,7 @@ class DmsfQuery < Query
if dmsf_folder_id if dmsf_folder_id
scope.where dmsf_links: { target_type: 'DmsfFolder', dmsf_folder_id: dmsf_folder_id, deleted: deleted } scope.where dmsf_links: { target_type: 'DmsfFolder', dmsf_folder_id: dmsf_folder_id, deleted: deleted }
else else
if filters.any? || deleted if statement.present? || deleted
scope.where dmsf_links: { target_type: 'DmsfFolder', project_id: project.id, deleted: deleted } scope.where dmsf_links: { target_type: 'DmsfFolder', project_id: project.id, deleted: deleted }
else else
scope.where dmsf_links: { target_type: 'DmsfFolder', project_id: project.id, dmsf_folder_id: nil, deleted: deleted } scope.where dmsf_links: { target_type: 'DmsfFolder', project_id: project.id, dmsf_folder_id: nil, deleted: deleted }
@ -238,7 +239,7 @@ class DmsfQuery < Query
def dmsf_files_scope def dmsf_files_scope
cf_columns = +'' cf_columns = +''
if filters.any? if statement.present?
DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id| DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id|
cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFileRevision' AND customized_id = dmsf_file_revisions.id) AS cf_#{id}" cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFileRevision' AND customized_id = dmsf_file_revisions.id) AS cf_#{id}"
end end
@ -268,7 +269,7 @@ class DmsfQuery < Query
if dmsf_folder_id if dmsf_folder_id
scope.where dmsf_files: { dmsf_folder_id: dmsf_folder_id, deleted: deleted } scope.where dmsf_files: { dmsf_folder_id: dmsf_folder_id, deleted: deleted }
else else
if filters.any? || deleted if statement.present? || deleted
scope.where dmsf_files: { project_id: project.id, deleted: deleted } scope.where dmsf_files: { project_id: project.id, deleted: deleted }
else else
scope.where dmsf_files: { project_id: project.id, dmsf_folder_id: nil, deleted: deleted } scope.where dmsf_files: { project_id: project.id, dmsf_folder_id: nil, deleted: deleted }
@ -278,7 +279,7 @@ class DmsfQuery < Query
def dmsf_file_links_scope def dmsf_file_links_scope
cf_columns = +'' cf_columns = +''
if filters.any? if statement.present?
DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id| DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id|
cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFileRevision' AND customized_id = dmsf_file_revisions.id) AS cf_#{id}" cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFileRevision' AND customized_id = dmsf_file_revisions.id) AS cf_#{id}"
end end
@ -309,7 +310,7 @@ class DmsfQuery < Query
if dmsf_folder_id if dmsf_folder_id
scope.where dmsf_links: { target_type: 'DmsfFile', dmsf_folder_id: dmsf_folder_id, deleted: deleted } scope.where dmsf_links: { target_type: 'DmsfFile', dmsf_folder_id: dmsf_folder_id, deleted: deleted }
else else
if filters.any? || deleted if statement.present? || deleted
scope.where dmsf_links: { target_type: 'DmsfFile', project_id: project.id, deleted: deleted } scope.where dmsf_links: { target_type: 'DmsfFile', project_id: project.id, deleted: deleted }
else else
scope.where dmsf_links: { target_type: 'DmsfFile', project_id: project.id, dmsf_folder_id: nil, deleted: deleted } scope.where dmsf_links: { target_type: 'DmsfFile', project_id: project.id, dmsf_folder_id: nil, deleted: deleted }
@ -320,7 +321,7 @@ class DmsfQuery < Query
def dmsf_url_links_scope def dmsf_url_links_scope
cf_columns = +'' cf_columns = +''
if filters.any? if statement.present?
DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id| DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id|
cf_columns << ",NULL AS cf_#{id}" cf_columns << ",NULL AS cf_#{id}"
end end
@ -348,7 +349,7 @@ class DmsfQuery < Query
if dmsf_folder_id if dmsf_folder_id
scope.where dmsf_links: { target_type: 'DmsfUrl', dmsf_folder_id: dmsf_folder_id, deleted: deleted } scope.where dmsf_links: { target_type: 'DmsfUrl', dmsf_folder_id: dmsf_folder_id, deleted: deleted }
else else
if filters.any? || deleted if statement.present? || deleted
scope.where dmsf_links: { target_type: 'DmsfUrl', project_id: project.id, deleted: deleted } scope.where dmsf_links: { target_type: 'DmsfUrl', project_id: project.id, deleted: deleted }
else else
scope.where dmsf_links: { target_type: 'DmsfUrl', project_id: project.id, dmsf_folder_id: nil, deleted: deleted } scope.where dmsf_links: { target_type: 'DmsfUrl', project_id: project.id, dmsf_folder_id: nil, deleted: deleted }