|
|
|
/**
|
|
|
|
* 基本的函数
|
|
|
|
* Created by GUY on 2015/6/24.
|
|
|
|
*/
|
|
|
|
BI.Func = {};
|
|
|
|
_.extend(BI.Func, {
|
|
|
|
/**
|
|
|
|
* 创建唯一的名字
|
|
|
|
* @param array
|
|
|
|
* @param name
|
|
|
|
* @returns {*}
|
|
|
|
*/
|
|
|
|
createDistinctName: function (array, name) {
|
|
|
|
var src = name, idx = 1;
|
|
|
|
name = name || "";
|
|
|
|
while (true) {
|
|
|
|
if (BI.every(array, function (i, item) {
|
|
|
|
return BI.isKey(item) ? item !== name : item.name !== name;
|
|
|
|
})) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
name = src + (idx++);
|
|
|
|
}
|
|
|
|
return name;
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* 获取搜索结果
|
|
|
|
* @param items
|
|
|
|
* @param keyword
|
|
|
|
* @param param 搜索哪个属性
|
|
|
|
*/
|
|
|
|
getSearchResult: function (items, keyword, param) {
|
|
|
|
var isArray = BI.isArray(items);
|
|
|
|
items = isArray ? BI.flatten(items) : items;
|
|
|
|
param || (param = "text");
|
|
|
|
if (!BI.isKey(keyword)) {
|
|
|
|
return {
|
|
|
|
find: BI.deepClone(items),
|
|
|
|
match: isArray ? [] : {}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
var t, text, py;
|
|
|
|
keyword = BI.toUpperCase(keyword);
|
|
|
|
var matched = isArray ? [] : {}, find = isArray ? [] : {};
|
|
|
|
BI.each(items, function (i, item) {
|
|
|
|
item = BI.deepClone(item);
|
|
|
|
t = BI.stripEL(item);
|
|
|
|
text = BI.find([t[param], t.text, t.value, t.name, t], function (index, val) {
|
|
|
|
return BI.isNotNull(val);
|
|
|
|
});
|
|
|
|
|
|
|
|
if (BI.isNull(text) || BI.isObject(text)) return;
|
|
|
|
|
|
|
|
py = BI.makeFirstPY(text);
|
|
|
|
text = BI.toUpperCase(text);
|
|
|
|
py = BI.toUpperCase(py);
|
|
|
|
var pidx;
|
|
|
|
if (text.indexOf(keyword) > -1) {
|
|
|
|
if (text === keyword) {
|
|
|
|
isArray ? matched.push(item) : (matched[i] = item);
|
|
|
|
} else {
|
|
|
|
isArray ? find.push(item) : (find[i] = item);
|
|
|
|
}
|
|
|
|
} else if (pidx = py.indexOf(keyword), (pidx > -1 && Math.floor(pidx / text.length) === Math.floor((pidx + keyword.length - 1) / text.length))) {
|
|
|
|
if (text === keyword || keyword.length === text.length) {
|
|
|
|
isArray ? matched.push(item) : (matched[i] = item);
|
|
|
|
} else {
|
|
|
|
isArray ? find.push(item) : (find[i] = item);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return {
|
|
|
|
match: matched,
|
|
|
|
find: find
|
|
|
|
};
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
_.extend(BI, {
|
|
|
|
beforeFunc: function (sFunc, func) {
|
|
|
|
var __self = sFunc;
|
|
|
|
return function () {
|
|
|
|
if (func.apply(sFunc, arguments) === false) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return __self.apply(sFunc, arguments);
|
|
|
|
};
|
|
|
|
},
|
|
|
|
|
|
|
|
afterFunc: function (sFunc, func) {
|
|
|
|
var __self = sFunc;
|
|
|
|
return function () {
|
|
|
|
var ret = __self.apply(sFunc, arguments);
|
|
|
|
if (ret === false) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
func.apply(sFunc, arguments);
|
|
|
|
return ret;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
});
|