Commit 37e579ce10376ef16f9e9f28b81b0ca788438204
1 parent
3adfbe3e
Exists in
master
and in
4 other branches
Redo the auto-completion JS for notes
Showing
1 changed file
with
42 additions
and
8 deletions
Show diff stats
app/views/notes/_common_form.html.haml
| ... | ... | @@ -39,12 +39,46 @@ |
| 39 | 39 | |
| 40 | 40 | :javascript |
| 41 | 41 | $(function(){ |
| 42 | - var names = #{@project.users.pluck(:name)}, emoji = ['+1', '-1']; | |
| 43 | - var emoji = $.map(emoji, function(value, i) {return {key:value + ':', name:value}}); | |
| 44 | - $('#note_note, .per_line_form .line-note-text'). | |
| 45 | - atWho('@', { data: names }). | |
| 46 | - atWho(':', { | |
| 47 | - data: emoji, | |
| 48 | - tpl: "<li data-value='${key}'>${name} #{escape_javascript image_tag('emoji/${name}.png', :size => '20x20')}</li>" | |
| 49 | - }); | |
| 42 | + // init auto-completion of team members | |
| 43 | + var membersUrl = "#{root_url}/api/v2/projects/#{@project.code}/members"; | |
| 44 | + var membersParams = { | |
| 45 | + private_token: "#{current_user.authentication_token}", | |
| 46 | + page: 1, | |
| 47 | + }; | |
| 48 | + var membersData = []; | |
| 49 | + $('.gfm-input').atWho('@', function(query, callback) { | |
| 50 | + (function getMoreMembers() { | |
| 51 | + $.getJSON(membersUrl, membersParams). | |
| 52 | + success(function(members) { | |
| 53 | + // pick the data we need | |
| 54 | + var newMembersData = $.map(members, function(member) { return member.name }); | |
| 55 | + | |
| 56 | + // add the new page of data to the rest | |
| 57 | + $.merge(membersData, newMembersData); | |
| 58 | + | |
| 59 | + // show the pop-up with a copy of the current data | |
| 60 | + callback(membersData.slice(0)); | |
| 61 | + | |
| 62 | + // are we past the last page? | |
| 63 | + if (newMembersData.length == 0) { | |
| 64 | + // set static data and stop callbacks | |
| 65 | + $('.gfm-input').atWho('@', { data: membersData, callback: null }); | |
| 66 | + } else { | |
| 67 | + // get next page | |
| 68 | + getMoreMembers(); | |
| 69 | + } | |
| 70 | + }); | |
| 71 | + // next request will get the next page | |
| 72 | + membersParams.page += 1; | |
| 73 | + })(); | |
| 74 | + }); | |
| 75 | + | |
| 76 | + // init auto-completion of emoji | |
| 77 | + var emoji = #{emoji_for_completion}; | |
| 78 | + // convert the list so that the items have the right format for completion | |
| 79 | + emoji = $.map(emoji, function(value) {return { key: value+':', name: value }}); | |
| 80 | + $('.gfm-input').atWho(':', { | |
| 81 | + data: emoji, | |
| 82 | + tpl: "<li data-value='${key}'>${name} #{escape_javascript image_tag('emoji/${name}.png', :size => '20x20')}</li>" | |
| 83 | + }); | |
| 50 | 84 | }); | ... | ... |