c59c7c3aeda4d5ffae880f2225a27d6df1afc2ab hiram Sat Aug 31 09:06:23 2024 -0700 this may fix the highlight when the word has non-word characters around it refs #32596 diff --git src/hg/js/assemblySearch.js src/hg/js/assemblySearch.js index 0fe5661..96f8ee9 100644 --- src/hg/js/assemblySearch.js +++ src/hg/js/assemblySearch.js @@ -260,60 +260,60 @@ var prefix = []; // going to be words that match prefix for (let word of words) { var noPrefix = word.replace(/^[-+]/, ''); // remove + - beginning if (noPrefix.endsWith("*")) { prefix.push(noPrefix.replace(/\*$/, '')); } else { wholeWord.push(noPrefix); } } if (wholeWord.length > 0) { for (let word of wholeWord) { for (let key in rowData) { if (rowData.hasOwnProperty(key)) { if (typeof rowData[key] === 'string') { let value = rowData[key]; - let subWords = value.split(/\s+/); + let subWords = value.match(/(\w+)|(\W+)/g); let newString = ""; for (let subWord of subWords) { if ( word.toLowerCase() === subWord.toLowerCase() ) { newString += "<span class='highlight'>" + subWord + "</span>"; } else { - newString += " " + subWord; + newString += subWord; } } newString = newString.trim(); if (newString !== rowData[key]) rowData[key] = newString; } } } } } if (prefix.length > 0) { for (let word of prefix) { for (let key in rowData) { if (rowData.hasOwnProperty(key)) { if (typeof rowData[key] === 'string') { let value = rowData[key]; - let subWords = value.split(/\s+/); + let subWords = value.match(/(\w+)|(\W+)/g); let newString = ""; for (let subWord of subWords) { if ( subWord.toLowerCase().startsWith(word.toLowerCase())) { newString += "<span class='highlight'>" + subWord + "</span>"; } else { - newString += " " + subWord; + newString += subWord; } } newString = newString.trim(); if (newString !== rowData[key]) rowData[key] = newString; } } } } } } // Function to generate the table and extra information function populateTableAndInfo(jsonData) { var tableHeader = document.getElementById('tableHeader');