Mercurial > kallithea
changeset 5237:3afeca108a5b
autocomplete: factor out formatResult function
Note: remove an irrelevant 'mentionQuery' clause in the PullrequestAutocomplete
author | Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> |
---|---|
date | Thu, 25 Jun 2015 21:46:43 +0200 |
parents | 51e761fc65d6 |
children | c1784f495867 |
files | kallithea/public/js/base.js |
diffstat | 1 files changed, 63 insertions(+), 135 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/public/js/base.js Thu Jun 25 21:37:34 2015 +0200 +++ b/kallithea/public/js/base.js Thu Jun 25 21:46:43 2015 +0200 @@ -1173,6 +1173,60 @@ return '<div class="ac-container-wrap">{0}{1}</div>'.format(elem, res); } +// Custom formatter to highlight the matching letters +var autocompleteFormatter = function (oResultData, sQuery, sResultMatch) { + var query = sQuery.toLowerCase(); + + // group + if (oResultData.grname != undefined) { + var grname = oResultData.grname; + var grmembers = oResultData.grmembers; + var grnameMatchIndex = grname.toLowerCase().indexOf(query); + var grprefix = "{0}: ".format(_TM['Group']); + var grsuffix = " (" + grmembers + " )"; + var grsuffix = " ({0} {1})".format(grmembers, _TM['members']); + + if (grnameMatchIndex > -1) { + return autocompleteGravatar(grprefix + autocompleteHighlightMatch(grname, query, grnameMatchIndex) + grsuffix, null, null, true); + } + return autocompleteGravatar(grprefix + oResultData.grname + grsuffix, null, null, true); + + // users + } else if (oResultData.nname != undefined) { + var fname = oResultData.fname || ""; + var lname = oResultData.lname || ""; + var nname = oResultData.nname; + + // Guard against null value + var fnameMatchIndex = fname.toLowerCase().indexOf(query), + lnameMatchIndex = lname.toLowerCase().indexOf(query), + nnameMatchIndex = nname.toLowerCase().indexOf(query), + displayfname, displaylname, displaynname; + + if (fnameMatchIndex > -1) { + displayfname = autocompleteHighlightMatch(fname, query, fnameMatchIndex); + } else { + displayfname = fname; + } + + if (lnameMatchIndex > -1) { + displaylname = autocompleteHighlightMatch(lname, query, lnameMatchIndex); + } else { + displaylname = lname; + } + + if (nnameMatchIndex > -1) { + displaynname = "(" + autocompleteHighlightMatch(nname, query, nnameMatchIndex) + ")"; + } else { + displaynname = nname ? "(" + nname + ")" : ""; + } + + return autocompleteGravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk, oResultData.gravatar_size); + } else { + return ''; + } +}; + var _MembersAutoComplete = function (divid, cont, users_list, groups_list) { var matchUsers = function (sQuery) { @@ -1215,59 +1269,8 @@ ownerAC.animHoriz = false; ownerAC.animSpeed = 0.1; - // Custom formatter to highlight the matching letters - var custom_formatter = function (oResultData, sQuery, sResultMatch) { - var query = sQuery.toLowerCase(); - // group - if (oResultData.grname != undefined) { - var grname = oResultData.grname; - var grmembers = oResultData.grmembers; - var grnameMatchIndex = grname.toLowerCase().indexOf(query); - var grprefix = "{0}: ".format(_TM['Group']); - var grsuffix = " (" + grmembers + " )"; - var grsuffix = " ({0} {1})".format(grmembers, _TM['members']); - - if (grnameMatchIndex > -1) { - return autocompleteGravatar(grprefix + autocompleteHighlightMatch(grname, query, grnameMatchIndex) + grsuffix, null, null, true); - } - return autocompleteGravatar(grprefix + oResultData.grname + grsuffix, null, null, true); - // Users - } else if (oResultData.nname != undefined) { - var fname = oResultData.fname || ""; - var lname = oResultData.lname || ""; - var nname = oResultData.nname; - - // Guard against null value - var fnameMatchIndex = fname.toLowerCase().indexOf(query), - lnameMatchIndex = lname.toLowerCase().indexOf(query), - nnameMatchIndex = nname.toLowerCase().indexOf(query), - displayfname, displaylname, displaynname; - - if (fnameMatchIndex > -1) { - displayfname = autocompleteHighlightMatch(fname, query, fnameMatchIndex); - } else { - displayfname = fname; - } - - if (lnameMatchIndex > -1) { - displaylname = autocompleteHighlightMatch(lname, query, lnameMatchIndex); - } else { - displaylname = lname; - } - - if (nnameMatchIndex > -1) { - displaynname = "(" + autocompleteHighlightMatch(nname, query, nnameMatchIndex) + ")"; - } else { - displaynname = nname ? "(" + nname + ")" : ""; - } - - return autocompleteGravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk, oResultData.gravatar_size); - } else { - return ''; - } - }; - membersAC.formatResult = custom_formatter; - ownerAC.formatResult = custom_formatter; + membersAC.formatResult = autocompleteFormatter; + ownerAC.formatResult = autocompleteFormatter; var myHandler = function (sType, aArgs) { var nextId = divid.split('perm_new_member_name_')[1]; @@ -1328,46 +1331,12 @@ // Custom formatter to highlight the matching letters ownerAC.formatResult = function (oResultData, sQuery, sResultMatch) { - var org_sQuery = sQuery; - if(this.dataSource.mentionQuery != null){ - sQuery = this.dataSource.mentionQuery; - } - - var query = sQuery.toLowerCase(); - if (oResultData.nname != undefined) { - var fname = oResultData.fname || ""; - var lname = oResultData.lname || ""; - var nname = oResultData.nname; - - // Guard against null value - var fnameMatchIndex = fname.toLowerCase().indexOf(query), - lnameMatchIndex = lname.toLowerCase().indexOf(query), - nnameMatchIndex = nname.toLowerCase().indexOf(query), - displayfname, displaylname, displaynname; - - if (fnameMatchIndex > -1) { - displayfname = autocompleteHighlightMatch(fname, query, fnameMatchIndex); - } else { - displayfname = fname; - } - - if (lnameMatchIndex > -1) { - displaylname = autocompleteHighlightMatch(lname, query, lnameMatchIndex); - } else { - displaylname = lname; - } - - if (nnameMatchIndex > -1) { - displaynname = "(" + autocompleteHighlightMatch(nname, query, nnameMatchIndex) + ")"; - } else { - displaynname = nname ? "(" + nname + ")" : ""; - } - - return autocompleteGravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk, oResultData.gravatar_size); - } else { - return ''; - } - }; + var org_sQuery = sQuery; + if (this.dataSource.mentionQuery != null) { + sQuery = this.dataSource.mentionQuery; + } + return autocompleteFormatter(oResultData, sQuery, sResultMatch); + } if(ownerAC.itemSelectEvent){ ownerAC.itemSelectEvent.subscribe(function (sType, aArgs) { @@ -1504,48 +1473,7 @@ reviewerAC.animHoriz = false; reviewerAC.animSpeed = 0.1; - // Custom formatter to highlight the matching letters - reviewerAC.formatResult = function (oResultData, sQuery, sResultMatch) { - var org_sQuery = sQuery; - if(this.dataSource.mentionQuery != null){ - sQuery = this.dataSource.mentionQuery; - } - - var query = sQuery.toLowerCase(); - if (oResultData.nname != undefined) { - var fname = oResultData.fname || ""; - var lname = oResultData.lname || ""; - var nname = oResultData.nname; - - // Guard against null value - var fnameMatchIndex = fname.toLowerCase().indexOf(query), - lnameMatchIndex = lname.toLowerCase().indexOf(query), - nnameMatchIndex = nname.toLowerCase().indexOf(query), - displayfname, displaylname, displaynname; - - if (fnameMatchIndex > -1) { - displayfname = autocompleteHighlightMatch(fname, query, fnameMatchIndex); - } else { - displayfname = fname; - } - - if (lnameMatchIndex > -1) { - displaylname = autocompleteHighlightMatch(lname, query, lnameMatchIndex); - } else { - displaylname = lname; - } - - if (nnameMatchIndex > -1) { - displaynname = "(" + autocompleteHighlightMatch(nname, query, nnameMatchIndex) + ")"; - } else { - displaynname = nname ? "(" + nname + ")" : ""; - } - - return autocompleteGravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk, oResultData.gravatar_size); - } else { - return ''; - } - }; + reviewerAC.formatResult = autocompleteFormatter; //members cache to catch duplicates reviewerAC.dataSource.cache = [];