diff --git a/config/locales/en.yml b/config/locales/en.yml index f294a3b..0a110b8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,2 +1,3 @@ en: + field_jobs: Jobs field_job: Job diff --git a/init.rb b/init.rb index 31748a5..418db34 100644 --- a/init.rb +++ b/init.rb @@ -15,5 +15,6 @@ Redmine::Plugin.register :jobs do Rails.logger.info "Patch Jobs" TimeEntryQuery.send(:include, TimeEntryQueryPatch) TimeEntry.send(:include, TimeEntryPatch) + Project.send(:include, ProjectPatch) end end diff --git a/lib/project_patch.rb b/lib/project_patch.rb new file mode 100644 index 0000000..9fea6e4 --- /dev/null +++ b/lib/project_patch.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require_dependency 'project' + +module ProjectPatch + extend ActiveSupport::Concern + + included do + has_many :jobs + end +end diff --git a/lib/time_entry_query_patch.rb b/lib/time_entry_query_patch.rb index 157d67f..bc44412 100644 --- a/lib/time_entry_query_patch.rb +++ b/lib/time_entry_query_patch.rb @@ -9,18 +9,18 @@ module TimeEntryQueryPatch included do include InstanceMethods -# alias_method :initialize_available_filters_without_jobs, :initialize_available_filters -# alias_method :initialize_available_filters, :initialize_available_filters_with_jobs + alias_method :initialize_available_filters_without_jobs, :initialize_available_filters + alias_method :initialize_available_filters, :initialize_available_filters_with_jobs alias_method :available_columns_without_jobs, :available_columns alias_method :available_columns, :available_columns_with_jobs end module InstanceMethods -# def initialize_available_filters_with_jobs -# initialize_available_filters_without_jobs -# initialize_issue_jobs_filter -# end + def initialize_available_filters_with_jobs + initialize_available_filters_without_jobs + initialize_issue_jobs_filter + end def available_columns_with_jobs if @available_columns.nil? @@ -32,8 +32,21 @@ module TimeEntryQueryPatch @available_columns end + def initialize_issue_jobs_filter(position: nil) + add_available_filter("job_id", order: position, + type: :list_optional, + values: jobs_list + ) + end + def sql_for_issue_jobs_field(_field, operator, values) build_sql_for_jobs_field klass: Issue, operator: operator, values: values end + + def jobs_list + Job.where(project: [project, project&.parent]).map do |job| + [job.name, job.id.to_s] + end + end end end