fb23bce308b7ce29749b4f6a0347bada22e8c885
chmalee
Thu Mar 14 15:56:53 2024 -0700
Set the value and label for the autocomplete data to the correct variables so the bolded item stays in the drop down list but then when you select the item the bold tags go away in the input box, refs #29611
diff --git src/hg/js/hgSearch.js src/hg/js/hgSearch.js
index 34f71f1..281ecb0 100644
--- src/hg/js/hgSearch.js
+++ src/hg/js/hgSearch.js
@@ -850,79 +850,99 @@
// switch lookup depending on the different search categories:
let decoder = function(str) {
// helper decoder to change the html encoded entities in
// uiState.positionMatches.posName to what is actually rendered
// in matchStr
return $("").html(str).text();
};
let geneSymbol; // a potentially fake geneSymbol for the autoComplete
if (trackName === "trackDb") {
match = matchList.matches.find((elem) => {
let posSplit = elem.posName.split(":");
geneSymbol = decoder(posSplit[1] + " - " + posSplit[2]);
id = "hgTrackUi?db=" + uiState.db + "&g=" + posSplit[0];
return geneSymbol === matchStr;
});
- callbackData.value = geneSymbol + " " + match.description;
+ callbackData.label = geneSymbol;
+ callbackData.value = geneSymbol;
+ if (typeof match.description !== "undefined") {
+ callbackData.label += " " + match.description;
+ // hack to remove the bolding from the item values in the autocomplete
+ callbackData.value = $("
" + match.description + "
").text();
+ }
callbackData.id = id;
callbackData.geneSymbol = geneSymbol;
callbackData.internalId = "";
} else if (trackName === "publicHubs") {
match = matchList.matches.find((elem) => {
let posSplit = elem.posName.split(":");
geneSymbol = decoder(posSplit[4] + " - " + trackHubSkipHubName(posSplit[3]));
id = "hgTrackUi?hubUrl=" + posSplit[0] + ":" + posSplit[1] + "&g=" + posSplit[3] + "&db=" + posSplit[3];
return decoder(posSplit[4]) === matchStr;
});
- callbackData.value = geneSymbol + " " + match.description;
+ callbackData.label = geneSymbol;
+ callbackData.value = geneSymbol;
+ if (typeof match.description !== "undefined") {
+ callbackData.label += " " + match.description;
+ // hack to remove the bolding from the item values in the autocomplete
+ callbackData.value = $("" + match.description + "
").text();
+ }
callbackData.id = id;
callbackData.geneSymbol = geneSymbol;
callbackData.internalId = "";
} else if (trackName === "helpDocs") {
match = matchList.matches.find((elem) => {
let posSplit = elem.posName.split(":");
geneSymbol = decoder(posSplit[1].replaceAll("_", " "));
return geneSymbol === matchStr;
});
- callbackData.value = geneSymbol + " " + match.description;
+ callbackData.label = geneSymbol;
+ callbackData.value = geneSymbol;
+ if (typeof match.description !== "undefined") {
+ callbackData.label += " " + match.description;
+ // hack to remove the bolding from the item values in the autocomplete
+ callbackData.value = $("" + match.description + "
").text();
+ }
callbackData.id = match.position.split(":")[0];
callbackData.geneSymbol = geneSymbol;
callbackData.internalId = "";
} else { // regular track item search result click
match = matchList.matches.find((elem) => {
geneSymbol = elem.posName.replace(/ .*$/,"");
return decoder(elem.posName) === matchStr;
});
+ callbackData.label = geneSymbol;
callbackData.value = geneSymbol;
if (typeof match.description !== "undefined") {
- callbackData.value += " " + match.description;
+ callbackData.label += " " + match.description;
+ // hack to remove the bolding from the item values in the autocomplete
+ callbackData.value = $("" + match.description + "
").text();
}
// special case the genbank searches that are supposed to go to hgc
// and not hgTracks
let parentTitle = i.parentNode.parentNode.parentNode.childNodes[2];
if (["all_mrna", "all_est", "xenoMrna", "xenoEst", "intronEst"].includes(trackName) && parentTitle.textContent.includes("Unaligned")) {
id = "hgc?db=" + db + "&g=" + trackName+ "&i=" + match.position + "&c=0&o=0&l=0&r=0" ;
} else {
id = match.position;
}
callbackData.id = id;
callbackData.geneSymbol = geneSymbol;
callbackData.internalId = match.hgFindMatches;
}
// type for autocomplete select to know where to navigate to
callbackData.type = trackName;
- callbackData.label = callbackData.value;
addRecentSearch(db, callbackData.geneSymbol, callbackData);
window.location = i.href;
});
});
}
function init() {
cart.setCgi('hgSearch');
cart.debug(debugCartJson);
// If a user clicks search before the page has finished loading
// start processing it now:
$("#searchBarSearchButton").click(sendUserSearch);
if (typeof cartJson !== "undefined") {
if (typeof cartJson.db !== "undefined") {
db = cartJson.db;