# HG changeset patch # User Thomas De Schampheleire # Date 2015-06-25 21:46:43 # Node ID 3afeca108a5b4c3da1f309ed3b85e6bed25af119 # Parent 51e761fc65d624260ff36458211e6a12c28baf8e autocomplete: factor out formatResult function Note: remove an irrelevant 'mentionQuery' clause in the PullrequestAutocomplete 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 @@ -1173,6 +1173,60 @@ var autocompleteGravatar = function(res, return '
{0}{1}
'.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 @@ var _MembersAutoComplete = function (div 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 @@ var MentionsAutoComplete = function (div // 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 @@ var PullRequestAutoComplete = function ( 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 = [];