Sha256: 7e75e2459777dc06363d457469c90dbafe25295fc40f70aa6e14dd61747ca347

Contents?: true

Size: 1.85 KB

Versions: 12

Compression:

Stored size: 1.85 KB

Contents

# frozen_string_literal: true

require_dependency 'query'

module AdditionalTags
  module Patches
    module TimeReportPatch
      extend ActiveSupport::Concern

      included do
        include InstanceMethods

        alias_method :load_available_criteria_without_tags, :load_available_criteria
        alias_method :load_available_criteria, :load_available_criteria_with_tags
      end

      module InstanceMethods
        def load_available_criteria_with_tags
          return @load_available_criteria_with_tags if @load_available_criteria_with_tags

          @load_available_criteria_with_tags = load_available_criteria_without_tags
          @load_available_criteria_with_tags['tags'] = { sql: "#{ActsAsTaggableOn.tags_table}.id",
                                                         klass: ActsAsTaggableOn::Tag,
                                                         joins: additional_tags_join,
                                                         label: :field_tags }
          @load_available_criteria_with_tags
        end

        private

        def additional_tags_join
          time_entry_table = Arel::Table.new TimeEntry.table_name
          issues_table = Arel::Table.new Issue.table_name, as: :issues_time_entries
          taggings_table = Arel::Table.new ActsAsTaggableOn.taggings_table
          tags_table = Arel::Table.new ActsAsTaggableOn.tags_table

          time_entry_table.join(issues_table)
                          .on(issues_table[:id].eq(time_entry_table[:issue_id]))
                          .join(taggings_table)
                          .on(taggings_table[:taggable_id].eq(issues_table[:id]).and(taggings_table[:taggable_type].eq('Issue')))
                          .join(tags_table)
                          .on(tags_table[:id].eq(taggings_table[:tag_id]))
                          .join_sources
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
additional_tags-3.4.0 lib/additional_tags/patches/time_report_patch.rb
additional_tags-3.3.2 lib/additional_tags/patches/time_report_patch.rb
additional_tags-3.3.1 lib/additional_tags/patches/time_report_patch.rb
additional_tags-3.2.0 lib/additional_tags/patches/time_report_patch.rb
additional_tags-3.1.0 lib/additional_tags/patches/time_report_patch.rb
additional_tags-3.0.9 lib/additional_tags/patches/time_report_patch.rb
additional_tags-1.0.7 lib/additional_tags/patches/time_report_patch.rb
additional_tags-1.0.6 lib/additional_tags/patches/time_report_patch.rb
additional_tags-1.0.5 lib/additional_tags/patches/time_report_patch.rb
additional_tags-1.0.4 lib/additional_tags/patches/time_report_patch.rb
additional_tags-1.0.3 lib/additional_tags/patches/time_report_patch.rb
additional_tags-1.0.2 lib/additional_tags/patches/time_report_patch.rb