Files
maintenance_system/public/tree/fuzzysearch.js
2025-10-11 09:56:33 +08:00

62 lines
1.6 KiB
JavaScript

window.fuzzySearch = function (m, p, f, i) {
var a = $.fn.zTree.getZTreeObj(m);
a || alert("fail to get ztree object");
var l = a.setting.data.key.name;
f = f !== !1, i = !!i, a.setting.view.nameIsHTML = f;
var s = "[\\[\\]\\\\^\\$\\.\\|\\?\\*\\+\\(\\)]", N = new RegExp(s, "gi");
function d(t, r, g) {
r || (r = "");
function c(e) {
if (e && e.oldname && e.oldname.length > 0 && (e[l] = e.oldname), t.updateNode(e), r.length == 0) return t.showNode(e), t.expandNode(e, i), !0;
if (e[l] && e[l].toLowerCase().indexOf(r.toLowerCase()) != -1) {
if (f) {
var n = r.replace(N, function (h) {
return "\\" + h
});
e.oldname = e[l];
var F = new RegExp(n, "gi");
e[l] = e.oldname.replace(F, function (h) {
var y = '<span style="color: whitesmoke;background-color: darkred;">' + h + "</span>";
return y
}), t.updateNode(e)
}
return t.showNode(e), !0
}
return t.hideNode(e), !1
}
var u = t.getNodesByFilter(c);
w(u, r)
}
function w(t, r) {
if (t && t.length > 0) if (r.length > 0) $.each(t, function (c, u) {
var e = u.getPath();
if (e && e.length > 0) for (var n = 0; n < e.length - 1; n++) a.showNode(e[n]), a.expandNode(e[n], !0)
}); else {
var g = a.getNodesByParam("level", "0");
var p = a.getNodesByParam("level", "1");
$.each(g, function (c, u) {
a.expandNode(u, !0)
})
$.each(p, function (c, u) {
a.expandNode(u, 0)
})
}
}
$(p).bind("input propertychange", function () {
var t = $(this).val();
x(t)
});
var o = null, v = "";
function x(t) {
o && clearTimeout(o), o = setTimeout(function () {
v !== t && (d(a, t), v = t)
}, 500)
}
};