diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-12-21 14:47:55 +0400 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-12-21 14:47:55 +0400 |
commit | a567d596f85b2f2f23e8e6f31f0eb3fa957f2c48 (patch) | |
tree | 0fb17b0406f75d11865a20a883c128315f48edd7 | |
parent | 0efc903eef01d2f1081fc9cf5fa68893c01e959a (diff) | |
parent | 77d632890bce9835929daeec829b529799915815 (diff) |
Merge pull request #2305 from gitlabhq/fix_gfm_auto_complete
Fix and refactoring gfm_autocomplete
-rw-r--r-- | app/assets/javascripts/gfm_auto_complete.js.coffee | 34 | ||||
-rw-r--r-- | doc/api/projects.md | 1 | ||||
-rw-r--r-- | lib/api/projects.rb | 7 | ||||
-rw-r--r-- | spec/requests/api/projects_spec.rb | 8 |
4 files changed, 22 insertions, 28 deletions
diff --git a/app/assets/javascripts/gfm_auto_complete.js.coffee b/app/assets/javascripts/gfm_auto_complete.js.coffee index a7038161668..1cc9d34dd80 100644 --- a/app/assets/javascripts/gfm_auto_complete.js.coffee +++ b/app/assets/javascripts/gfm_auto_complete.js.coffee @@ -13,7 +13,6 @@ GitLab.GfmAutoComplete = url: '' params: private_token: '' - page: 1 template: '<li data-value="${username}">${username} <small>${name}</small></li>' # Add GFM auto-completion to all input fields, that accept GFM input. @@ -29,30 +28,11 @@ GitLab.GfmAutoComplete = input.atWho '@', tpl: @Members.template callback: (query, callback) => - (getMoreMembers = => - $.getJSON(@Members.url, @Members.params).done (members) => - # pick the data we need - newMembersData = $.map(members, (m) -> - username: m.username - name: m.name - ) + request_params = $.extend({}, @Members.params, query: query) + $.getJSON(@Members.url, request_params).done (members) => + new_members_data = $.map(members, (m) -> + username: m.username, + name: m.name + ) + callback(new_members_data) - # add the new page of data to the rest - $.merge(@Members.data, newMembersData) - - # show the pop-up with a copy of the current data - callback(@Members.data[..]) - - # are we past the last page? - if newMembersData.length is 0 - # set static data and stop callbacks - input.atWho '@', - data: @Members.data - callback: null - else - # get next page - getMoreMembers() - - # so the next callback requests the next page - @Members.params.page += 1 - ).call() diff --git a/doc/api/projects.md b/doc/api/projects.md index fac4107fd93..c8cb263e705 100644 --- a/doc/api/projects.md +++ b/doc/api/projects.md @@ -126,6 +126,7 @@ GET /projects/:id/members Parameters: + `id` (required) - The ID or code name of a project ++ `query` - Query string ## Get project team member diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 384dbcd5473..044a6272766 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -57,10 +57,15 @@ module Gitlab # # Parameters: # id (required) - The ID or code name of a project + # query - Query string # Example Request: # GET /projects/:id/members get ":id/members" do - @members = paginate user_project.users + if params[:query].present? + @members = paginate user_project.users.where("username LIKE ?", "%#{params[:query]}%") + else + @members = paginate user_project.users + end present @members, with: Entities::ProjectMember, project: user_project end diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index b4e2fbbdab8..a396516438d 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -117,6 +117,14 @@ describe Gitlab::API do json_response.count.should == 2 json_response.first['email'].should == user.email end + + it "finds team members with query string" do + get api("/projects/#{project.path}/members", user), query: user.username + response.status.should == 200 + json_response.should be_an Array + json_response.count.should == 1 + json_response.first['email'].should == user.email + end end describe "GET /projects/:id/members/:user_id" do |