1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import type {ReactNode} from "react";
import styles from "../index.less";
type DeviceTreeNode = {
title: ReactNode
key: string | number;
icon?: ReactNode;
location?: any[];
project?: API.Store;
children?: DeviceTreeNode[];
}
const initTreeNode = (data: any[], searchValue: string | undefined): DeviceTreeNode[] => {
return data?.map(item => {
const index = item?.title?.indexOf(searchValue);
const beforeStr = item?.title?.substr(0, index);
const afterStr = item?.title?.substr(index + searchValue?.length);
const title =
index > -1 ? (
<span>
{beforeStr}
<span className={styles.searchValueKeyword}>{searchValue}</span>
{afterStr}
</span>
) : (
<span>{item.title}</span>
);
const treeItem = {
title,
key: item.key,
icon: item.icon,
}
if (item.project) {
treeItem['project'] = item.project
} else {
treeItem['location'] = item?.location || []
}
if (item.children && item.children?.length > 0) {
return {
...treeItem,
children: initTreeNode(item.children, searchValue)
};
}
return treeItem
});
}
export default initTreeNode