|
|
@@ -24,11 +24,30 @@ class GroupBox extends React.Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ onFilter = (tree, regLabel) => {
|
|
|
+ let arr = tree ? [ ...tree ] : [];
|
|
|
+ for(let i = arr.length - 1; i >= 0; i--) {
|
|
|
+ let t = arr[i];
|
|
|
+ t.children = t.children || [];
|
|
|
+ if(t.children.length > 0) {
|
|
|
+ t.children = this.onFilter(t.children, regLabel);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 关键字过滤
|
|
|
+ if(!!regLabel && t.label.search(new RegExp('(' + regLabel + '){1}', 'ig')) === -1 && t.children.length === 0) {
|
|
|
+ arr.splice(i, 1);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return arr;
|
|
|
+ }
|
|
|
+
|
|
|
generateTreeNode(treeData) {
|
|
|
const { filterLabel, editingKey } = this.state;
|
|
|
const reg = new RegExp('([+ \\- & | ! ( ) { } \\[ \\] ^ \" ~ * ? : ( ) \/])', 'g'); // 需要转义的字符
|
|
|
const regLabel = filterLabel.replace(new RegExp('(\\\\)', 'g'), '\\$1').replace(reg, '\\$1'); // 添加转义符号
|
|
|
- let list = treeData.sort((a, b) => (a.index - b.index)).map(t => {
|
|
|
+ let arr = this.onFilter(treeData, regLabel);
|
|
|
+ let list = arr.sort((a, b) => (a.index - b.index)).map(t => {
|
|
|
const title = <span>{ (regLabel) ?
|
|
|
((t.label || '').split(new RegExp(`(${regLabel})`, 'i')).map((fragment, i) => {
|
|
|
return (
|