diff options
author | Riyad Preukschas <riyad@informatik.uni-bremen.de> | 2012-10-10 02:16:52 +0400 |
---|---|---|
committer | Riyad Preukschas <riyad@informatik.uni-bremen.de> | 2012-10-10 02:53:55 +0400 |
commit | e4aa5a5c8f9d8a4b556aeba003160017821ed9a3 (patch) | |
tree | 1bda639e1a82b4f1d5ef112719d4374241145242 /app/assets | |
parent | eb92813757d8ec14819ddbab6efae7e7cdd403e6 (diff) |
Extract and split GFM auto-completion setup JS
* static initialization and setup moved to assets
* per request initialization moved to layout partial
Diffstat (limited to 'app/assets')
-rw-r--r-- | app/assets/javascripts/gfm_auto_complete.js.coffee | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/app/assets/javascripts/gfm_auto_complete.js.coffee b/app/assets/javascripts/gfm_auto_complete.js.coffee new file mode 100644 index 00000000000..203a5b6745a --- /dev/null +++ b/app/assets/javascripts/gfm_auto_complete.js.coffee @@ -0,0 +1,57 @@ + +### + Creates the variables for setting up GFM auto-completion +### +# Emoji +window.autocompleteEmojiData = []; +window.autocompleteEmojiTemplate = "<li data-value='${insert}'>${name} <img alt='${name}' height='20' src='${image}' width='20' /></li>"; + +# Team Members +window.autocompleteMembersUrl = ""; +window.autocompleteMembersParams = + private_token: "" + page: 1 +window.autocompleteMembersData = []; + + + +### + Add GFM auto-completion to all input fields, that accept GFM input. +### +window.setupGfmAutoComplete = -> + ### + Emoji + ### + $('.gfm-input').atWho ':', + data: autocompleteEmojiData, + tpl: autocompleteEmojiTemplate + + ### + Team Members + ### + $('.gfm-input').atWho '@', (query, callback) -> + (getMoreMembers = -> + $.getJSON(autocompleteMembersUrl, autocompleteMembersParams) + .success (members) -> + # pick the data we need + newMembersData = $.map members, (m) -> m.name + + # add the new page of data to the rest + $.merge autocompleteMembersData, newMembersData + + # show the pop-up with a copy of the current data + callback autocompleteMembersData[..] + + # are we past the last page? + if newMembersData.length == 0 + # set static data and stop callbacks + $('.gfm-input').atWho '@', + data: autocompleteMembersData + callback: null + else + # get next page + getMoreMembers() + + # so the next request gets the next page + autocompleteMembersParams.page += 1; + ).call();
\ No newline at end of file |