diff options
author | Luke Bennett <lukeeeebennettplus@gmail.com> | 2016-10-13 06:33:09 +0300 |
---|---|---|
committer | Luke "Jared" Bennett <lbennett@gitlab.com> | 2016-12-15 18:20:33 +0300 |
commit | 1356e40f22c555f676777ed9385a12b09c19fdce (patch) | |
tree | b8291341f9ea2dbdda5db5254b70bf631162ae69 /app/controllers/projects/autocomplete_sources_controller.rb | |
parent | 677e7e837e3fb41deb46cb77de8b9395d031c07c (diff) |
Changed autocomplete_sources into an action that returns a single 'at' type of sources at a time
Finished up autocomplete_sources action and added frontend to fetch data only when its needed
Added wait_for_ajax to specs
Fixed builds and improved the setup/destroy lifecycle
Changed global namespace and DRYed up loading logic
Added safety for accidentally loading data twice
Removed destroy as its not necessary and is messing with click events from a blur race condition
Created AutocompleteSourcesController and updated routes
Fixed @undefined from tabbing before load ends
Disable tabSelectsMatch until we have loaded data
Review changes
Diffstat (limited to 'app/controllers/projects/autocomplete_sources_controller.rb')
-rw-r--r-- | app/controllers/projects/autocomplete_sources_controller.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/app/controllers/projects/autocomplete_sources_controller.rb b/app/controllers/projects/autocomplete_sources_controller.rb new file mode 100644 index 00000000000..d9dfa534669 --- /dev/null +++ b/app/controllers/projects/autocomplete_sources_controller.rb @@ -0,0 +1,48 @@ +class Projects::AutocompleteSourcesController < Projects::ApplicationController + before_action :load_autocomplete_service, except: [:emojis, :members] + + def emojis + render json: Gitlab::AwardEmoji.urls + end + + def members + render json: ::Projects::ParticipantsService.new(@project, current_user).execute(noteable) + end + + def issues + render json: @autocomplete_service.issues + end + + def merge_requests + render json: @autocomplete_service.merge_requests + end + + def labels + render json: @autocomplete_service.labels + end + + def milestones + render json: @autocomplete_service.milestones + end + + def commands + render json: @autocomplete_service.commands(noteable, params[:type]) + end + + private + + def load_autocomplete_service + @autocomplete_service = ::Projects::AutocompleteService.new(@project, current_user) + end + + def noteable + case params[:type] + when 'Issue' + IssuesFinder.new(current_user, project_id: @project.id).execute.find_by(iid: params[:type_id]) + when 'MergeRequest' + MergeRequestsFinder.new(current_user, project_id: @project.id).execute.find_by(iid: params[:type_id]) + when 'Commit' + @project.commit(params[:type_id]) + end + end +end |