]> source.dussan.org Git - redmine.git/commitdiff
shorten long line of IssueQuery#available_columns
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 30 Nov 2020 15:48:36 +0000 (15:48 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 30 Nov 2020 15:48:36 +0000 (15:48 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@20522 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue_query.rb

index b81d9fbc81247e112151fdeb81640eee3a4656da..08982aa3383901eeff6d0b9ef32832b32a8def6e 100644 (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),