Commit a5861b8ff34621be246ea0951a9e46b8859af4d4
1 parent
d3b8952f
Exists in
master
and in
4 other branches
fix gfm autocomplete for usernames
Showing
1 changed file
with
52 additions
and
46 deletions
Show diff stats
app/assets/javascripts/gfm_auto_complete.js.coffee
1 | 1 | # Creates the variables for setting up GFM auto-completion |
2 | 2 | |
3 | 3 | window.GitLab ?= {} |
4 | -GitLab.GfmAutoComplete ?= {} | |
5 | - | |
6 | -# Emoji | |
7 | -data = [] | |
8 | -template = "<li data-value='${insert}'>${name} <img alt='${name}' height='20' src='${image}' width='20' /></li>" | |
9 | -GitLab.GfmAutoComplete.Emoji = {data, template} | |
10 | - | |
11 | -# Team Members | |
12 | -data = [] | |
13 | -url = ''; | |
14 | -params = {private_token: '', page: 1} | |
15 | -GitLab.GfmAutoComplete.Members = {data, url, params} | |
16 | - | |
17 | -# Add GFM auto-completion to all input fields, that accept GFM input. | |
18 | -GitLab.GfmAutoComplete.setup = -> | |
19 | - input = $('.js-gfm-input') | |
20 | - | |
4 | +GitLab.GfmAutoComplete = | |
21 | 5 | # Emoji |
22 | - input.atWho ':', | |
23 | - data: GitLab.GfmAutoComplete.Emoji.data, | |
24 | - tpl: GitLab.GfmAutoComplete.Emoji.template | |
6 | + Emoji: | |
7 | + data: [] | |
8 | + template: '<li data-value="${insert}">${name} <img alt="${name}" height="20" src="${image}" width="20" /></li>' | |
25 | 9 | |
26 | 10 | # Team Members |
27 | - input.atWho '@', (query, callback) -> | |
28 | - (getMoreMembers = -> | |
29 | - $.getJSON(GitLab.GfmAutoComplete.Members.url, GitLab.GfmAutoComplete.Members.params) | |
30 | - .success (members) -> | |
31 | - # pick the data we need | |
32 | - newMembersData = $.map(members, (m) -> m.name ) | |
33 | - | |
34 | - # add the new page of data to the rest | |
35 | - $.merge(GitLab.GfmAutoComplete.Members.data, newMembersData) | |
36 | - | |
37 | - # show the pop-up with a copy of the current data | |
38 | - callback(GitLab.GfmAutoComplete.Members.data[..]) | |
39 | - | |
40 | - # are we past the last page? | |
41 | - if newMembersData.length is 0 | |
42 | - # set static data and stop callbacks | |
43 | - input.atWho '@', | |
44 | - data: GitLab.GfmAutoComplete.Members.data | |
45 | - callback: null | |
46 | - else | |
47 | - # get next page | |
48 | - getMoreMembers() | |
49 | - | |
50 | - # so the next request gets the next page | |
51 | - GitLab.GfmAutoComplete.Members.params.page += 1 | |
52 | - ).call() | |
11 | + Members: | |
12 | + data: [] | |
13 | + url: '' | |
14 | + params: | |
15 | + private_token: '' | |
16 | + page: 1 | |
17 | + template: '<li data-value="${username}">${username} <small>${name}</small></li>' | |
18 | + | |
19 | + # Add GFM auto-completion to all input fields, that accept GFM input. | |
20 | + setup: -> | |
21 | + input = $('.js-gfm-input') | |
22 | + | |
23 | + # Emoji | |
24 | + input.atWho ':', | |
25 | + data: @Emoji.data | |
26 | + tpl: @Emoji.template | |
27 | + | |
28 | + # Team Members | |
29 | + input.atWho '@', | |
30 | + tpl: @Members.template | |
31 | + 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 | + ) | |
39 | + | |
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() | ... | ... |