changeset 5238:c1784f495867

autocomplete: clean up handlers for itemSelectEvent The handlers that execute when an autocompleted item is selected are really specific and cannot be factored out. Nevertheless, some cleanup: - rationalize indentation - remove redundant copy/pasted comments - remove redundant group handling in MentionsAutoComplete - remove redundant checks on 'oData.nname != undefined', used to differentiate user vs. group completion, in places that only allow user autocompletion
author Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
date Fri, 26 Jun 2015 22:07:00 +0200
parents 3afeca108a5b
children 68638dc98dc8
files kallithea/public/js/base.js
diffstat 1 files changed, 36 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/public/js/base.js	Thu Jun 25 21:46:43 2015 +0200
+++ b/kallithea/public/js/base.js	Fri Jun 26 22:07:00 2015 +0200
@@ -1272,26 +1272,26 @@
     membersAC.formatResult = autocompleteFormatter;
     ownerAC.formatResult = autocompleteFormatter;
 
-    var myHandler = function (sType, aArgs) {
-            var nextId = divid.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
-            //fill the autocomplete with value
-            if (oData.nname != undefined) {
-                //users
-                myAC.getInputEl().value = oData.nname;
-                $('#perm_new_member_type_'+nextId).val('user');
-            } else {
-                //groups
-                myAC.getInputEl().value = oData.grname;
-                $('#perm_new_member_type_'+nextId).val('users_group');
-            }
-        };
-
-    membersAC.itemSelectEvent.subscribe(myHandler);
+    // Handler for selection of an entry
+    var itemSelectHandler = function (sType, aArgs) {
+        var nextId = divid.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
+        //fill the autocomplete with value
+        if (oData.nname != undefined) {
+            //users
+            myAC.getInputEl().value = oData.nname;
+            $('#perm_new_member_type_'+nextId).val('user');
+        } else {
+            //groups
+            myAC.getInputEl().value = oData.grname;
+            $('#perm_new_member_type_'+nextId).val('users_group');
+        }
+    };
+    membersAC.itemSelectEvent.subscribe(itemSelectHandler);
     if(ownerAC.itemSelectEvent){
-        ownerAC.itemSelectEvent.subscribe(myHandler);
+        ownerAC.itemSelectEvent.subscribe(itemSelectHandler);
     }
 
     return {
@@ -1338,28 +1338,21 @@
         return autocompleteFormatter(oResultData, sQuery, sResultMatch);
     }
 
+    // Handler for selection of an entry
     if(ownerAC.itemSelectEvent){
         ownerAC.itemSelectEvent.subscribe(function (sType, aArgs) {
             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
-            //fill the autocomplete with value
-            if (oData.nname != undefined) {
-                //users
-                //Replace the mention name with replaced
-                var re = new RegExp();
-                var org = myAC.getInputEl().value;
-                var chunks = myAC.dataSource.chunks
-                // replace middle chunk(the search term) with actuall  match
-                chunks[1] = chunks[1].replace('@'+myAC.dataSource.mentionQuery,
-                                              '@'+oData.nname+' ');
-                myAC.getInputEl().value = chunks.join('')
-                myAC.getInputEl().focus(); // Y U NO WORK !?
-            } else {
-                //groups
-                myAC.getInputEl().value = oData.grname;
-                $('#perm_new_member_type').val('users_group');
-            }
+            //Replace the mention name with replaced
+            var re = new RegExp();
+            var org = myAC.getInputEl().value;
+            var chunks = myAC.dataSource.chunks
+            // replace middle chunk(the search term) with actuall  match
+            chunks[1] = chunks[1].replace('@'+myAC.dataSource.mentionQuery,
+                                          '@'+oData.nname+' ');
+            myAC.getInputEl().value = chunks.join('')
+            myAC.getInputEl().focus(); // Y U NO WORK !?
         });
     }
 
@@ -1477,21 +1470,18 @@
 
     //members cache to catch duplicates
     reviewerAC.dataSource.cache = [];
-    // hack into select event
+
+    // Handler for selection of an entry
     if(reviewerAC.itemSelectEvent){
         reviewerAC.itemSelectEvent.subscribe(function (sType, aArgs) {
-
             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
-
-            //fill the autocomplete with value
-            if (oData.nname != undefined) {
-                addReviewMember(oData.id, oData.fname, oData.lname, oData.nname,
-                                oData.gravatar_lnk, oData.gravatar_size);
-                myAC.dataSource.cache.push(oData.id);
-                $('#user').val('');
-            }
+    
+            addReviewMember(oData.id, oData.fname, oData.lname, oData.nname,
+                            oData.gravatar_lnk, oData.gravatar_size);
+            myAC.dataSource.cache.push(oData.id);
+            $('#user').val('');
         });
     }
 }