[PATCH 08 of 19] autocomplete: clean up handlers for itemSelectEvent
Mads Kiilerich
mads at kiilerich.com
Tue Jul 14 10:57:23 UTC 2015
On 06/30/2015 10:43 PM, Thomas De Schampheleire wrote:
> # HG changeset patch
> # User Thomas De Schampheleire <thomas.de.schampheleire at gmail.com>
> # Date 1435349220 -7200
> # Fri Jun 26 22:07:00 2015 +0200
> # Node ID 98519504e88827b408447efcb9ea01ca270a7b0b
> # Parent 623155b700e275d039d1a9065f272dc6fa4fb569
> 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 checks on the existence of xAC.itemSelectEvent: there seems to be
> no reason at all to check this, the YUI documentation also does not
> mention it.
Grumpy users tell me that itemSelectEvent can be null. I cannot
reproduce it ... but a blind fix restoring the check made them happy.
Have you tried testing this with a wider audience?
/Mads
> - 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
>
> diff --git a/kallithea/public/js/base.js b/kallithea/public/js/base.js
> --- a/kallithea/public/js/base.js
> +++ b/kallithea/public/js/base.js
> @@ -1266,27 +1266,25 @@ var _MembersAutoComplete = function (div
> 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);
> - if(ownerAC.itemSelectEvent){
> - ownerAC.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);
> + ownerAC.itemSelectEvent.subscribe(itemSelectHandler);
>
> return {
> memberDS: memberDS,
> @@ -1332,30 +1330,21 @@ var MentionsAutoComplete = function (div
> return autocompleteFormatter(oResultData, sQuery, sResultMatch);
> }
>
> - 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');
> - }
> - });
> - }
> + // Handler for selection of an entry
> + 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
> + //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 !?
> + });
>
> // in this keybuffer we will gather current value of search !
> // since we need to get this just when someone does `@` then we do the
> @@ -1471,23 +1460,18 @@ var PullRequestAutoComplete = function (
>
> //members cache to catch duplicates
> reviewerAC.dataSource.cache = [];
> - // hack into select event
> - 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
> + // Handler for selection of an entry
> + 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('');
> + });
> }
>
> /**
More information about the kallithea-general
mailing list