From de3be8687997562cc48d6fbe33500365e004398f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernd=20Oliver=20S=C3=BCnderhauf?= <46800703+bosue@users.noreply.github.com> Date: Thu, 19 Oct 2023 16:34:28 +0200 Subject: [PATCH 1/2] refactor: Deprecate bolden_match_part and turn it into a wrapper. --- .../js/frappe/ui/toolbar/search_utils.js | 37 ++----------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/frappe/public/js/frappe/ui/toolbar/search_utils.js b/frappe/public/js/frappe/ui/toolbar/search_utils.js index 658786f8dc..4577becf41 100644 --- a/frappe/public/js/frappe/ui/toolbar/search_utils.js +++ b/frappe/public/js/frappe/ui/toolbar/search_utils.js @@ -600,40 +600,11 @@ frappe.search.utils = { return { score, marked_string }; }, + /** + * @deprecated Use frappe.search.utils.fuzzy_search(subseq, str, true).marked_string instead. + */ bolden_match_part: function (str, subseq) { - if (fuzzy_match(subseq, str)[0] === false) { - return str; - } - if (str.indexOf(subseq) == 0) { - var tail = str.split(subseq)[1]; - return "" + subseq + "" + tail; - } - var rendered = ""; - var str_orig = str; - var str_len = str.length; - str = str.toLowerCase(); - subseq = subseq.toLowerCase(); - - outer: for (var i = 0, j = 0; i < subseq.length; i++) { - var sub_ch = subseq.charCodeAt(i); - while (j < str_len) { - if (str.charCodeAt(j) === sub_ch) { - var str_char = str_orig.charAt(j); - if (str_char === str_char.toLowerCase()) { - rendered += "" + subseq.charAt(i) + ""; - } else { - rendered += "" + subseq.charAt(i).toUpperCase() + ""; - } - j++; - continue outer; - } - rendered += str_orig.charAt(j); - j++; - } - return str_orig; - } - rendered += str_orig.slice(j); - return rendered; + return this.fuzzy_search(subseq, str, true).marked_string; }, get_executables(keywords) { From ad121d11401a2218add346dec374b15616be8af8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernd=20Oliver=20S=C3=BCnderhauf?= <46800703+bosue@users.noreply.github.com> Date: Thu, 19 Oct 2023 17:23:45 +0200 Subject: [PATCH 2/2] refactor: Convert frappe.tags.utils to enhanced fuzzy_search. --- frappe/public/js/frappe/ui/toolbar/tag_utils.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/frappe/public/js/frappe/ui/toolbar/tag_utils.js b/frappe/public/js/frappe/ui/toolbar/tag_utils.js index ae1aa97670..ae07943f98 100644 --- a/frappe/public/js/frappe/ui/toolbar/tag_utils.js +++ b/frappe/public/js/frappe/ui/toolbar/tag_utils.js @@ -13,15 +13,14 @@ frappe.tags.utils = { return []; } - for (let i in frappe.tags.tags) { - let tag = frappe.tags.tags[i]; - let level = frappe.search.utils.fuzzy_search(txt, tag); - if (level) { + frappe.tags.tags.forEach((tag) => { + const search_result = frappe.search.utils.fuzzy_search(txt, tag, true); + if (search_result.score) { out.push({ type: "Tag", - label: __("#{0}", [frappe.search.utils.bolden_match_part(__(tag), txt)]), + label: __("#{0}", [search_result.marked_string]), value: __("#{0}", [__(tag)]), - index: 1 + level, + index: 1 + search_result.score, match: tag, onclick() { // Use Global Search Dialog for tag search too. @@ -29,8 +28,7 @@ frappe.tags.utils = { }, }); } - } - + }); return out; },