Allow sorting/grouping by jobs
This takes affect in the time entry view.
This commit is contained in:
parent
bcb669745e
commit
a74d1ad2ea
|
@ -51,6 +51,10 @@ class Job < ActiveRecord::Base
|
|||
ActionController::Base.helpers.link_to name, ActionController::Base.helpers.project_job_path(project, self)
|
||||
end
|
||||
|
||||
def self.fields_for_order_statement
|
||||
"jobs.name"
|
||||
end
|
||||
|
||||
def self.default_for(time_entry)
|
||||
projects = [time_entry.project, time_entry.project.parent]
|
||||
jobs = Job.where(project: projects).active
|
||||
|
|
|
@ -14,6 +14,9 @@ module TimeEntryQueryPatch
|
|||
|
||||
alias_method :available_columns_without_jobs, :available_columns
|
||||
alias_method :available_columns, :available_columns_with_jobs
|
||||
|
||||
alias_method :joins_for_order_statement_without_jobs, :joins_for_order_statement
|
||||
alias_method :joins_for_order_statement, :joins_for_order_statement_with_jobs
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
|
@ -25,7 +28,7 @@ module TimeEntryQueryPatch
|
|||
def available_columns_with_jobs
|
||||
if @available_columns.nil?
|
||||
@available_columns = available_columns_without_jobs
|
||||
@available_columns << QueryColumn.new(:job)
|
||||
@available_columns << QueryColumn.new(:job, groupable: true, sortable: -> { Job.fields_for_order_statement })
|
||||
else
|
||||
available_columns_without_jobs
|
||||
end
|
||||
|
@ -48,5 +51,16 @@ module TimeEntryQueryPatch
|
|||
[job.name, job.id.to_s]
|
||||
end
|
||||
end
|
||||
|
||||
def joins_for_order_statement_with_jobs(order_options)
|
||||
joins = joins_for_order_statement_without_jobs(order_options) || ""
|
||||
|
||||
if order_options
|
||||
if order_options.include?('jobs')
|
||||
joins += " LEFT OUTER JOIN #{Job.table_name} ON #{Job.table_name}.id = #{TimeEntry.table_name}.job_id"
|
||||
end
|
||||
end
|
||||
joins
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue