diff options
Diffstat (limited to 'app/models/query.rb')
-rw-r--r-- | app/models/query.rb | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/app/models/query.rb b/app/models/query.rb index 816c5c5a0..abcf09204 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -16,7 +16,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class QueryColumn - attr_accessor :name, :sortable, :groupable, :default_order + attr_accessor :name, :sortable, :groupable, :default_order, :include_options include Redmine::I18n def initialize(name, options={}) @@ -27,6 +27,7 @@ class QueryColumn self.groupable = name.to_s end self.default_order = options[:default_order] + self.include_options = options[:include] end def caption @@ -48,6 +49,7 @@ class QueryCustomFieldColumn < QueryColumn self.groupable = custom_field.order_statement end self.groupable ||= false + self.include_options = :custom_values @cf = custom_field end @@ -107,15 +109,15 @@ class Query < ActiveRecord::Base @@available_columns = [ QueryColumn.new(:project, :sortable => "#{Project.table_name}.name", :groupable => true), - QueryColumn.new(:tracker, :sortable => "#{Tracker.table_name}.position", :groupable => true), + QueryColumn.new(:tracker, :sortable => "#{Tracker.table_name}.position", :groupable => true, :include => :tracker), 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(:subject, :sortable => "#{Issue.table_name}.subject"), QueryColumn.new(:author), - QueryColumn.new(:assigned_to, :sortable => ["#{User.table_name}.lastname", "#{User.table_name}.firstname", "#{User.table_name}.id"], :groupable => true), + QueryColumn.new(:assigned_to, :sortable => ["#{User.table_name}.lastname", "#{User.table_name}.firstname", "#{User.table_name}.id"], :groupable => true, :include => :assigned_to), QueryColumn.new(:updated_on, :sortable => "#{Issue.table_name}.updated_on", :default_order => 'desc'), - QueryColumn.new(:category, :sortable => "#{IssueCategory.table_name}.name", :groupable => true), - QueryColumn.new(:fixed_version, :sortable => ["#{Version.table_name}.effective_date", "#{Version.table_name}.name"], :default_order => 'desc', :groupable => true), + QueryColumn.new(:category, :sortable => "#{IssueCategory.table_name}.name", :groupable => true, :include => :category), + QueryColumn.new(:fixed_version, :sortable => ["#{Version.table_name}.effective_date", "#{Version.table_name}.name"], :default_order => 'desc', :groupable => true, :include => :fixed_version), QueryColumn.new(:start_date, :sortable => "#{Issue.table_name}.start_date"), QueryColumn.new(:due_date, :sortable => "#{Issue.table_name}.due_date"), QueryColumn.new(:estimated_hours, :sortable => "#{Issue.table_name}.estimated_hours"), @@ -322,6 +324,10 @@ class Query < ActiveRecord::Base def group_by_statement group_by_column.groupable end + + def include_options + (columns << group_by_column).collect {|column| column && column.include_options}.flatten.compact.uniq + end def project_statement project_clauses = [] |