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