62 lines
1.6 KiB
JavaScript
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)
|
|
}
|
|
};
|