diff --git a/app/assets/javascripts/gfm_auto_complete.js.coffee b/app/assets/javascripts/gfm_auto_complete.js.coffee index ffc4c409..a7038161 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 ) + Members: + data: [] + url: '' + params: + private_token: '' + page: 1 + template: '
  • ${username} ${name}
  • ' - # add the new page of data to the rest - $.merge(GitLab.GfmAutoComplete.Members.data, newMembersData) + # Add GFM auto-completion to all input fields, that accept GFM input. + setup: -> + input = $('.js-gfm-input') - # show the pop-up with a copy of the current data - callback(GitLab.GfmAutoComplete.Members.data[..]) + # Emoji + input.atWho ':', + data: @Emoji.data + tpl: @Emoji.template - # 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() + # 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 + ) - # so the next request gets the next page - GitLab.GfmAutoComplete.Members.params.page += 1 - ).call() + # 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()