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;
},