Commit a567d596f85b2f2f23e8e6f31f0eb3fa957f2c48
Exists in
master
and in
4 other branches
Merge pull request #2305 from gitlabhq/fix_gfm_auto_complete
Fix and refactoring gfm_autocomplete
Showing
4 changed files
with
22 additions
and
28 deletions
Show diff stats
app/assets/javascripts/gfm_auto_complete.js.coffee
@@ -13,7 +13,6 @@ GitLab.GfmAutoComplete = | @@ -13,7 +13,6 @@ GitLab.GfmAutoComplete = | ||
13 | url: '' | 13 | url: '' |
14 | params: | 14 | params: |
15 | private_token: '' | 15 | private_token: '' |
16 | - page: 1 | ||
17 | template: '<li data-value="${username}">${username} <small>${name}</small></li>' | 16 | template: '<li data-value="${username}">${username} <small>${name}</small></li>' |
18 | 17 | ||
19 | # Add GFM auto-completion to all input fields, that accept GFM input. | 18 | # Add GFM auto-completion to all input fields, that accept GFM input. |
@@ -29,30 +28,11 @@ GitLab.GfmAutoComplete = | @@ -29,30 +28,11 @@ GitLab.GfmAutoComplete = | ||
29 | input.atWho '@', | 28 | input.atWho '@', |
30 | tpl: @Members.template | 29 | tpl: @Members.template |
31 | callback: (query, callback) => | 30 | callback: (query, callback) => |
32 | - (getMoreMembers = => | ||
33 | - $.getJSON(@Members.url, @Members.params).done (members) => | ||
34 | - # pick the data we need | ||
35 | - newMembersData = $.map(members, (m) -> | ||
36 | - username: m.username | ||
37 | - name: m.name | ||
38 | - ) | 31 | + request_params = $.extend({}, @Members.params, query: query) |
32 | + $.getJSON(@Members.url, request_params).done (members) => | ||
33 | + new_members_data = $.map(members, (m) -> | ||
34 | + username: m.username, | ||
35 | + name: m.name | ||
36 | + ) | ||
37 | + callback(new_members_data) | ||
39 | 38 | ||
40 | - # add the new page of data to the rest | ||
41 | - $.merge(@Members.data, newMembersData) | ||
42 | - | ||
43 | - # show the pop-up with a copy of the current data | ||
44 | - callback(@Members.data[..]) | ||
45 | - | ||
46 | - # are we past the last page? | ||
47 | - if newMembersData.length is 0 | ||
48 | - # set static data and stop callbacks | ||
49 | - input.atWho '@', | ||
50 | - data: @Members.data | ||
51 | - callback: null | ||
52 | - else | ||
53 | - # get next page | ||
54 | - getMoreMembers() | ||
55 | - | ||
56 | - # so the next callback requests the next page | ||
57 | - @Members.params.page += 1 | ||
58 | - ).call() |
doc/api/projects.md
@@ -126,6 +126,7 @@ GET /projects/:id/members | @@ -126,6 +126,7 @@ GET /projects/:id/members | ||
126 | Parameters: | 126 | Parameters: |
127 | 127 | ||
128 | + `id` (required) - The ID or code name of a project | 128 | + `id` (required) - The ID or code name of a project |
129 | ++ `query` - Query string | ||
129 | 130 | ||
130 | ## Get project team member | 131 | ## Get project team member |
131 | 132 |
lib/api/projects.rb
@@ -57,10 +57,15 @@ module Gitlab | @@ -57,10 +57,15 @@ module Gitlab | ||
57 | # | 57 | # |
58 | # Parameters: | 58 | # Parameters: |
59 | # id (required) - The ID or code name of a project | 59 | # id (required) - The ID or code name of a project |
60 | + # query - Query string | ||
60 | # Example Request: | 61 | # Example Request: |
61 | # GET /projects/:id/members | 62 | # GET /projects/:id/members |
62 | get ":id/members" do | 63 | get ":id/members" do |
63 | - @members = paginate user_project.users | 64 | + if params[:query].present? |
65 | + @members = paginate user_project.users.where("username LIKE ?", "%#{params[:query]}%") | ||
66 | + else | ||
67 | + @members = paginate user_project.users | ||
68 | + end | ||
64 | present @members, with: Entities::ProjectMember, project: user_project | 69 | present @members, with: Entities::ProjectMember, project: user_project |
65 | end | 70 | end |
66 | 71 |
spec/requests/api/projects_spec.rb
@@ -117,6 +117,14 @@ describe Gitlab::API do | @@ -117,6 +117,14 @@ describe Gitlab::API do | ||
117 | json_response.count.should == 2 | 117 | json_response.count.should == 2 |
118 | json_response.first['email'].should == user.email | 118 | json_response.first['email'].should == user.email |
119 | end | 119 | end |
120 | + | ||
121 | + it "finds team members with query string" do | ||
122 | + get api("/projects/#{project.path}/members", user), query: user.username | ||
123 | + response.status.should == 200 | ||
124 | + json_response.should be_an Array | ||
125 | + json_response.count.should == 1 | ||
126 | + json_response.first['email'].should == user.email | ||
127 | + end | ||
120 | end | 128 | end |
121 | 129 | ||
122 | describe "GET /projects/:id/members/:user_id" do | 130 | describe "GET /projects/:id/members/:user_id" do |