1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-01-11 01:51:32 +00:00

shorten long line of IssueQuery#available_columns

git-svn-id: http://svn.redmine.org/redmine/trunk@20522 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Toshi MARUYAMA 2020-11-30 15:48:36 +00:00
parent 3bf806d0b9
commit 5f1bce0032

View File

@ -22,33 +22,51 @@ class IssueQuery < Query
self.view_permission = :view_issues
self.available_columns = [
QueryColumn.new(:id, :sortable => "#{Issue.table_name}.id", :default_order => 'desc', :caption => '#', :frozen => true),
QueryColumn.new(:id, :sortable => "#{Issue.table_name}.id",
:default_order => 'desc', :caption => '#', :frozen => true),
QueryColumn.new(:project, :sortable => "#{Project.table_name}.name", :groupable => true),
QueryColumn.new(:tracker, :sortable => "#{Tracker.table_name}.position", :groupable => true),
QueryColumn.new(:parent, :sortable => ["#{Issue.table_name}.root_id", "#{Issue.table_name}.lft ASC"], :default_order => 'desc', :caption => :field_parent_issue),
QueryColumn.new(:parent,
:sortable => ["#{Issue.table_name}.root_id", "#{Issue.table_name}.lft ASC"],
:default_order => 'desc', :caption => :field_parent_issue),
QueryAssociationColumn.new(:parent, :subject, :caption => :field_parent_issue_subject),
QueryColumn.new(:status, :sortable => "#{IssueStatus.table_name}.position", :groupable => true),
QueryColumn.new(:priority, :sortable => "#{IssuePriority.table_name}.position", :default_order => 'desc', :groupable => true),
QueryColumn.new(:priority, :sortable => "#{IssuePriority.table_name}.position",
:default_order => 'desc', :groupable => true),
QueryColumn.new(:subject, :sortable => "#{Issue.table_name}.subject"),
QueryColumn.new(:author, :sortable => lambda {User.fields_for_order_statement("authors")}, :groupable => true),
QueryColumn.new(:assigned_to, :sortable => lambda {User.fields_for_order_statement}, :groupable => true),
TimestampQueryColumn.new(:updated_on, :sortable => "#{Issue.table_name}.updated_on", :default_order => 'desc', :groupable => true),
QueryColumn.new(:author,
:sortable => lambda {User.fields_for_order_statement("authors")},
:groupable => true),
QueryColumn.new(:assigned_to,
:sortable => lambda {User.fields_for_order_statement},
:groupable => true),
TimestampQueryColumn.new(:updated_on, :sortable => "#{Issue.table_name}.updated_on",
:default_order => 'desc', :groupable => true),
QueryColumn.new(:category, :sortable => "#{IssueCategory.table_name}.name", :groupable => true),
QueryColumn.new(:fixed_version, :sortable => lambda {Version.fields_for_order_statement}, :groupable => true),
QueryColumn.new(:fixed_version, :sortable => lambda {Version.fields_for_order_statement},
:groupable => true),
QueryColumn.new(:start_date, :sortable => "#{Issue.table_name}.start_date", :groupable => true),
QueryColumn.new(:due_date, :sortable => "#{Issue.table_name}.due_date", :groupable => true),
QueryColumn.new(:estimated_hours, :sortable => "#{Issue.table_name}.estimated_hours", :totalable => true),
QueryColumn.new(:estimated_hours, :sortable => "#{Issue.table_name}.estimated_hours",
:totalable => true),
QueryColumn.new(
:total_estimated_hours,
:sortable => -> do
"COALESCE((SELECT SUM(estimated_hours) FROM #{Issue.table_name} subtasks" +
" WHERE #{Issue.visible_condition(User.current).gsub(/\bissues\b/, 'subtasks')} AND subtasks.root_id = #{Issue.table_name}.root_id AND subtasks.lft >= #{Issue.table_name}.lft AND subtasks.rgt <= #{Issue.table_name}.rgt), 0)"
end,
:sortable =>
lambda do
"COALESCE((SELECT SUM(estimated_hours) FROM #{Issue.table_name} subtasks" \
" WHERE #{Issue.visible_condition(User.current).gsub(/\bissues\b/, 'subtasks')}" \
" AND subtasks.root_id = #{Issue.table_name}.root_id" \
" AND subtasks.lft >= #{Issue.table_name}.lft" \
" AND subtasks.rgt <= #{Issue.table_name}.rgt), 0)"
end,
:default_order => 'desc'),
QueryColumn.new(:done_ratio, :sortable => "#{Issue.table_name}.done_ratio", :groupable => true),
TimestampQueryColumn.new(:created_on, :sortable => "#{Issue.table_name}.created_on", :default_order => 'desc', :groupable => true),
TimestampQueryColumn.new(:closed_on, :sortable => "#{Issue.table_name}.closed_on", :default_order => 'desc', :groupable => true),
QueryColumn.new(:last_updated_by, :sortable => lambda {User.fields_for_order_statement("last_journal_user")}),
TimestampQueryColumn.new(:created_on, :sortable => "#{Issue.table_name}.created_on",
:default_order => 'desc', :groupable => true),
TimestampQueryColumn.new(:closed_on, :sortable => "#{Issue.table_name}.closed_on",
:default_order => 'desc', :groupable => true),
QueryColumn.new(:last_updated_by,
:sortable => lambda {User.fields_for_order_statement("last_journal_user")}),
QueryColumn.new(:relations, :caption => :label_related_issues),
QueryColumn.new(:attachments, :caption => :label_attachment_plural),
QueryColumn.new(:description, :inline => false),