From: Cyril Date: Mon, 10 Dec 2012 23:04:47 +0000 (+0100) Subject: fix gfm autocomplete for usernames X-Git-Tag: v4.0.0rc1~29^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=a5861b8ff34621be246ea0951a9e46b8859af4d4;p=wvm%2Fgitlab.git fix gfm autocomplete for usernames --- diff --git a/app/assets/javascripts/gfm_auto_complete.js.coffee b/app/assets/javascripts/gfm_auto_complete.js.coffee index ffc4c409b..a70381616 100644 --- a/app/assets/javascripts/gfm_auto_complete.js.coffee +++ b/app/assets/javascripts/gfm_auto_complete.js.coffee @@ -1,52 +1,58 @@ # Creates the variables for setting up GFM auto-completion window.GitLab ?= {} -GitLab.GfmAutoComplete ?= {} - -# Emoji -data = [] -template = "
  • ${name} ${name}
  • " -GitLab.GfmAutoComplete.Emoji = {data, template} - -# Team Members -data = [] -url = ''; -params = {private_token: '', page: 1} -GitLab.GfmAutoComplete.Members = {data, url, params} - -# Add GFM auto-completion to all input fields, that accept GFM input. -GitLab.GfmAutoComplete.setup = -> - input = $('.js-gfm-input') - +GitLab.GfmAutoComplete = # Emoji - input.atWho ':', - data: GitLab.GfmAutoComplete.Emoji.data, - tpl: GitLab.GfmAutoComplete.Emoji.template + Emoji: + data: [] + template: '
  • ${name} ${name}
  • ' # Team Members - input.atWho '@', (query, callback) -> - (getMoreMembers = -> - $.getJSON(GitLab.GfmAutoComplete.Members.url, GitLab.GfmAutoComplete.Members.params) - .success (members) -> - # pick the data we need - newMembersData = $.map(members, (m) -> m.name ) - - # add the new page of data to the rest - $.merge(GitLab.GfmAutoComplete.Members.data, newMembersData) - - # show the pop-up with a copy of the current data - callback(GitLab.GfmAutoComplete.Members.data[..]) - - # are we past the last page? - if newMembersData.length is 0 - # set static data and stop callbacks - input.atWho '@', - data: GitLab.GfmAutoComplete.Members.data - callback: null - else - # get next page - getMoreMembers() - - # so the next request gets the next page - GitLab.GfmAutoComplete.Members.params.page += 1 - ).call() + Members: + data: [] + url: '' + params: + private_token: '' + page: 1 + template: '
  • ${username} ${name}
  • ' + + # Add GFM auto-completion to all input fields, that accept GFM input. + setup: -> + input = $('.js-gfm-input') + + # Emoji + input.atWho ':', + data: @Emoji.data + tpl: @Emoji.template + + # Team Members + 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 + ) + + # 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()