Commit 27c5f8bd authored by Mark Chao's avatar Mark Chao

Add label autocomplete for groups

parent 5e699c98
......@@ -90,6 +90,7 @@ constraints(::Constraints::GroupUrlConstrainer.new) do
resources :autocomplete_sources, only: [] do
collection do
get 'members'
get 'labels'
get 'epics'
end
end
......
......@@ -5,6 +5,10 @@ class Groups::AutocompleteSourcesController < Groups::ApplicationController
render json: ::Groups::ParticipantsService.new(@group, current_user).execute(target)
end
def labels
render json: @autocomplete_service.labels(target)
end
def epics
render json: @autocomplete_service.epics
end
......
......@@ -67,6 +67,7 @@ module EE
{
members: members_group_autocomplete_sources_path(object, type: noteable_type, type_id: params[:id]),
labels: labels_group_autocomplete_sources_path(object),
epics: epics_group_autocomplete_sources_path(object)
}
end
......
module Groups
class AutocompleteService < BaseService
def labels(target = nil)
labels = LabelsFinder.new(
current_user,
group_id: group.id,
include_ancestor_groups: true,
only_group_labels: true
).execute.select([:color, :title])
return labels unless target&.respond_to?(:labels)
issuable_label_titles = target.labels.pluck(:title)
if issuable_label_titles
labels = labels.as_json(only: [:title, :color])
issuable_label_titles.each do |issuable_label_title|
found_label = labels.find { |label| label['title'] == issuable_label_title }
found_label[:set] = true if found_label
end
end
labels
end
def epics
EpicsFinder.new(current_user, group_id: group.id).execute
end
......
......@@ -6,7 +6,7 @@ describe ApplicationHelper do
let(:noteable_type) { Epic }
it 'returns paths for autocomplete_sources_controller' do
sources = helper.autocomplete_data_sources(object, noteable_type)
expect(sources.keys).to match_array([:members])
expect(sources.keys).to match_array([:members, :labels, :epics])
sources.keys.each do |key|
expect(sources[key]).not_to be_nil
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment