Commit 77d632890bce9835929daeec829b529799915815
1 parent
aa8d4d9f
Exists in
master
and in
4 other branches
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 | 13 | url: '' |
14 | 14 | params: |
15 | 15 | private_token: '' |
16 | - page: 1 | |
17 | 16 | template: '<li data-value="${username}">${username} <small>${name}</small></li>' |
18 | 17 | |
19 | 18 | # Add GFM auto-completion to all input fields, that accept GFM input. |
... | ... | @@ -29,30 +28,11 @@ GitLab.GfmAutoComplete = |
29 | 28 | input.atWho '@', |
30 | 29 | tpl: @Members.template |
31 | 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
lib/api/projects.rb
... | ... | @@ -57,10 +57,15 @@ module Gitlab |
57 | 57 | # |
58 | 58 | # Parameters: |
59 | 59 | # id (required) - The ID or code name of a project |
60 | + # query - Query string | |
60 | 61 | # Example Request: |
61 | 62 | # GET /projects/:id/members |
62 | 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 | 69 | present @members, with: Entities::ProjectMember, project: user_project |
65 | 70 | end |
66 | 71 | ... | ... |
spec/requests/api/projects_spec.rb
... | ... | @@ -117,6 +117,14 @@ describe Gitlab::API do |
117 | 117 | json_response.count.should == 2 |
118 | 118 | json_response.first['email'].should == user.email |
119 | 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 | 128 | end |
121 | 129 | |
122 | 130 | describe "GET /projects/:id/members/:user_id" do | ... | ... |