changeset 5387:2fa786ba2b2a

js: refactor AutoComplete functions to pass jQuery results around until DOM elements are passed to YUI A small step forward that enables other refactorings.
author Mads Kiilerich <madski@unity3d.com>
date Tue, 11 Aug 2015 12:39:07 +0200
parents 982deaaef275
children 5f9321340e44
files kallithea/public/js/base.js kallithea/templates/admin/repos/repo_edit_settings.html kallithea/templates/changeset/changeset_file_comment.html kallithea/templates/pullrequests/pullrequest.html kallithea/templates/pullrequests/pullrequest_show.html
diffstat 5 files changed, 18 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/public/js/base.js	Tue Aug 11 12:39:07 2015 +0200
+++ b/kallithea/public/js/base.js	Tue Aug 11 12:39:07 2015 +0200
@@ -744,7 +744,7 @@
     setTimeout(function() {
         // callbacks
         tooltip_activate();
-        MentionsAutoComplete('text_'+line_no, 'mentions_container_'+line_no,
+        MentionsAutoComplete($('#text_'+line_no), $('#mentions_container_'+line_no),
                              _USERS_AC_DATA);
         $('#text_'+line_no).focus();
     }, 10)
@@ -1140,10 +1140,10 @@
 };
 
 // Generate a basic autocomplete instance that can be tweaked further by the caller
-var autocompleteCreate = function (inputElement, container, matchFunc) {
+var autocompleteCreate = function ($inputElement, $container, matchFunc) {
     var datasource = new YAHOO.util.FunctionDataSource(matchFunc);
 
-    var autocomplete = new YAHOO.widget.AutoComplete(inputElement, container, datasource);
+    var autocomplete = new YAHOO.widget.AutoComplete($inputElement[0], $container[0], datasource);
     autocomplete.useShadow = false;
     autocomplete.resultTypeList = false;
     autocomplete.animVert = false;
@@ -1154,13 +1154,13 @@
     return autocomplete;
 }
 
-var SimpleUserAutoComplete = function (inputElement, container, users_list) {
+var SimpleUserAutoComplete = function ($inputElement, $container, users_list) {
 
     var matchUsers = function (sQuery) {
         return autocompleteMatchUsers(sQuery, users_list);
     }
 
-    var userAC = autocompleteCreate(inputElement, container, matchUsers);
+    var userAC = autocompleteCreate($inputElement, $container, matchUsers);
 
     // Handler for selection of an entry
     var itemSelectHandler = function (sType, aArgs) {
@@ -1172,7 +1172,7 @@
     userAC.itemSelectEvent.subscribe(itemSelectHandler);
 }
 
-var MembersAutoComplete = function (inputElement, container, users_list, groups_list) {
+var MembersAutoComplete = function ($inputElement, $container, users_list, groups_list) {
 
     var matchAll = function (sQuery) {
         var u = autocompleteMatchUsers(sQuery, users_list);
@@ -1180,11 +1180,11 @@
         return u.concat(g);
     };
 
-    var membersAC = autocompleteCreate(inputElement, container, matchAll);
+    var membersAC = autocompleteCreate($inputElement, $container, matchAll);
 
     // Handler for selection of an entry
     var itemSelectHandler = function (sType, aArgs) {
-        var nextId = inputElement.split('perm_new_member_name_')[1];
+        var nextId = $inputElement.attr('id').split('perm_new_member_name_')[1];
         var myAC = aArgs[0]; // reference back to the AC instance
         var elLI = aArgs[1]; // reference to the selected LI element
         var oData = aArgs[2]; // object literal of selected item's result data
@@ -1202,7 +1202,7 @@
     membersAC.itemSelectEvent.subscribe(itemSelectHandler);
 }
 
-var MentionsAutoComplete = function (inputElement, container, users_list) {
+var MentionsAutoComplete = function ($inputElement, $container, users_list) {
 
     var matchUsers = function (sQuery) {
             var org_sQuery = sQuery;
@@ -1213,7 +1213,7 @@
             return autocompleteMatchUsers(sQuery, users_list);
     }
 
-    var mentionsAC = autocompleteCreate(inputElement, container, matchUsers);
+    var mentionsAC = autocompleteCreate($inputElement, $container, matchUsers);
     mentionsAC.suppressInputUpdate = true;
     // Overwrite formatResult to take into account mentionQuery
     mentionsAC.formatResult = function (oResultData, sQuery, sResultMatch) {
@@ -1274,7 +1274,6 @@
         return [null, null];
     };
 
-    var $inputElement = $('#'+inputElement);
     $inputElement.keyup(function(e){
             var currentMessage = $inputElement.val();
             var currentCaretPosition = $inputElement[0].selectionStart;
@@ -1333,13 +1332,13 @@
 }
 
 /* activate auto completion of users as PR reviewers */
-var PullRequestAutoComplete = function (inputElement, container, users_list) {
+var PullRequestAutoComplete = function ($inputElement, $container, users_list) {
 
     var matchUsers = function (sQuery) {
         return autocompleteMatchUsers(sQuery, users_list);
     };
 
-    var reviewerAC = autocompleteCreate(inputElement, container, matchUsers);
+    var reviewerAC = autocompleteCreate($inputElement, $container, matchUsers);
     reviewerAC.suppressInputUpdate = true;
 
     // Handler for selection of an entry
@@ -1421,8 +1420,8 @@
     var $last_node = $('.last_new_member').last(); // empty tr between last and add
     var next_id = $('.new_members').length;
     $last_node.before($('<tr class="new_members">').append(_html.format(next_id)));
-    MembersAutoComplete("perm_new_member_name_"+next_id,
-            "perm_container_"+next_id, users_list, groups_list);
+    MembersAutoComplete($("#perm_new_member_name_"+next_id),
+            $("#perm_container_"+next_id), users_list, groups_list);
 }
 
 function ajaxActionRevokePermission(url, obj_id, obj_type, field_id, extra_data) {
--- a/kallithea/templates/admin/repos/repo_edit_settings.html	Tue Aug 11 12:39:07 2015 +0200
+++ b/kallithea/templates/admin/repos/repo_edit_settings.html	Tue Aug 11 12:39:07 2015 +0200
@@ -147,6 +147,6 @@
 
         // autocomplete
         var _USERS_AC_DATA = ${c.users_array|n};
-        SimpleUserAutoComplete('user', 'owner_container', _USERS_AC_DATA);
+        SimpleUserAutoComplete($('#user'), $('#owner_container'), _USERS_AC_DATA);
     });
 </script>
--- a/kallithea/templates/changeset/changeset_file_comment.html	Tue Aug 11 12:39:07 2015 +0200
+++ b/kallithea/templates/changeset/changeset_file_comment.html	Tue Aug 11 12:39:07 2015 +0200
@@ -199,7 +199,7 @@
 <script>
 
 $(document).ready(function () {
-   MentionsAutoComplete('text', 'mentions_container', _USERS_AC_DATA, _GROUPS_AC_DATA);
+   MentionsAutoComplete($('#text'), $('#mentions_container'), _USERS_AC_DATA, _GROUPS_AC_DATA);
 
    $(window).on('beforeunload', function(){
       if($('.form-open').size() || $('textarea#text').val()){
--- a/kallithea/templates/pullrequests/pullrequest.html	Tue Aug 11 12:39:07 2015 +0200
+++ b/kallithea/templates/pullrequests/pullrequest.html	Tue Aug 11 12:39:07 2015 +0200
@@ -130,7 +130,7 @@
 <script type="text/javascript">
   var _USERS_AC_DATA = ${c.users_array|n};
   var _GROUPS_AC_DATA = ${c.user_groups_array|n};
-  PullRequestAutoComplete('user', 'reviewers_container', _USERS_AC_DATA);
+  PullRequestAutoComplete($('#user'), $('#reviewers_container'), _USERS_AC_DATA);
 
   pyroutes.register('pullrequest_repo_info', "${url('pullrequest_repo_info',repo_name='%(repo_name)s')}", ['repo_name']);
 
--- a/kallithea/templates/pullrequests/pullrequest_show.html	Tue Aug 11 12:39:07 2015 +0200
+++ b/kallithea/templates/pullrequests/pullrequest_show.html	Tue Aug 11 12:39:07 2015 +0200
@@ -374,7 +374,7 @@
 
     <script type="text/javascript">
       $(document).ready(function(){
-          PullRequestAutoComplete('user', 'reviewers_container', _USERS_AC_DATA);
+          PullRequestAutoComplete($('#user'), $('#reviewers_container'), _USERS_AC_DATA);
 
           $('.code-difftable').on('click', '.add-bubble', function(e){
               show_comment_form($(this));