Defect #33912
openSorting of multiple columns including Date column does not work
0%
Description
When specifying the sorting condition of multiple columns including Date column in the custom query, sorting of columns after Date column does not work.
- Defining a custom query
- List of spent time with custom query
Files
Updated by Yuichi HARADA about 4 years ago
- File fixed-33912.patch fixed-33912.patch added
I think the following patch will fix the problem.
diff --git a/app/models/time_entry_query.rb b/app/models/time_entry_query.rb
index c8f8eeaeb..59a4f25ca 100644
--- a/app/models/time_entry_query.rb
+++ b/app/models/time_entry_query.rb
@@ -23,7 +23,7 @@ class TimeEntryQuery < Query
self.available_columns = [
QueryColumn.new(:project, :sortable => "#{Project.table_name}.name", :groupable => true),
- QueryColumn.new(:spent_on, :sortable => ["#{TimeEntry.table_name}.spent_on", "#{TimeEntry.table_name}.created_on"], :default_order => 'desc', :groupable => true),
+ QueryColumn.new(:spent_on, :sortable => "#{TimeEntry.table_name}.spent_on", :default_order => 'desc', :groupable => true),
TimestampQueryColumn.new(:created_on, :sortable => "#{TimeEntry.table_name}.created_on", :default_order => 'desc', :groupable => true),
QueryColumn.new(:tweek, :sortable => ["#{TimeEntry.table_name}.spent_on", "#{TimeEntry.table_name}.created_on"], :caption => :label_week),
QueryColumn.new(:author, :sortable => lambda {User.fields_for_order_statement}),
@@ -152,7 +152,12 @@ class TimeEntryQuery < Query
def results_scope(options={})
order_option = [group_by_sort_order, (options[:order] || sort_clause)].flatten.reject(&:blank?)
- order_option << "#{TimeEntry.table_name}.id ASC"
+ order_option <<
+ if order_option.reverse.find{|order| order.match?(/#{TimeEntry.table_name}\./)}&.match?(/\sDESC$/i)
+ "#{TimeEntry.table_name}.id DESC"
+ else
+ "#{TimeEntry.table_name}.id ASC"
+ end
base_scope.
order(order_option).
joins(joins_for_order_statement(order_option.join(',')))
Updated by Felix Schäfer over 2 years ago
We (Plan.io) can confirm this issue and concur with the first part of the proposed patch. In addition the QueryColumn
should be changed to a TimestampQueryColumn
.
I am not sure about the second part of the patch though. Currently the IssueQuery
defaults to id DESC
if no other id
sorting is defined regardless of other sortings. If this is changed in TimeEntryQuery
it should also be consistently change in the IssueQuery
.
Go Maeda, what would be needed to commit this patch? Do you think a test would be necessary?
Updated by Go MAEDA over 2 years ago
Felix Schäfer wrote:
I am not sure about the second part of the patch though. Currently the
IssueQuery
defaults toid DESC
if no otherid
sorting is defined regardless of other sortings. If this is changed inTimeEntryQuery
it should also be consistently change in theIssueQuery
.
Without the second part, the sorting order is reversed from the current and an existing test TimelogControllerTest#test_index_should_sort_by_spent_on_and_created_on
will fail.
Go Maeda, what would be needed to commit this patch? Do you think a test would be necessary?
I can commit the patch if how handle the second part of the patch is decided.
Updated by Go MAEDA over 2 years ago
- Target version set to Candidate for next major release