Skip to content

Commit 469dd6c

Browse files
authored
Merge pull request #74 from zxb1992/release-admin
feat: add pointCloud component
2 parents d4209bd + 9252d7b commit 469dd6c

File tree

9 files changed

+968
-942
lines changed

9 files changed

+968
-942
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { PointCloud } from 'ui';
2+
import React from 'react';
3+
4+
export default () => {
5+
return (
6+
<>
7+
<PointCloud pointCount={100000} pointSize={1} onSelectionChange={(indices) => {
8+
console.log('选中的点索引:', indices);
9+
}} />
10+
</>
11+
);
12+
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
title: 点云组件
3+
atomId: PointCloud
4+
package: ui
5+
description: 基于 three.js 和 react-three/fiber 编写的点云渲染组件,支持 10 万个点的渲染、框选和高亮
6+
group:
7+
title: 3D组件
8+
---
9+
10+
# 点云组件
11+
12+
> 基于 three.js 和 react-three/fiber 编写的点云渲染组件,支持 10 万个点的渲染、鼠标框选和高亮显示选中的点
13+
14+
安装`pnpm add ui --filter @gbeata/admin-docs`
15+
<code src="./demos/point"></code>
16+
17+
## API
18+
19+
| 属性名 | 描述 | 类型 | 默认值 |
20+
| ----------------- | --------------------- | ------------------------------------- | ---------- |
21+
| pointCount | 点的数量 | number | 100000 |
22+
| range | 点云的范围 | number | 100 |
23+
| defaultColor | 点的默认颜色 | string | '#888888' |
24+
| selectedColor | 选中点的颜色 | string | '#ff0000' |
25+
| pointSize | 点的半径 | number | 0.1 |
26+
| height | 容器高度 | number | 600 |
27+
| onSelectionChange | 选中点变化的回调 | (selectedIndices: number[]) => void | - |

apps/admin/src/views/home/index.style.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const useStyles = createStyles(({ token }) => {
1515
backgroundColor: token.colorPrimaryBg,
1616
display: 'flex',
1717
alignItems: 'center',
18+
overflow: 'hidden',
1819
},
1920
'.slick': {
2021
height: '100%',

packages/gbeata/src/GCtrl/index.tsx

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { DownOutlined } from '@ant-design/icons';
2-
import { Divider, Dropdown, Menu, Space } from 'antd';
2+
import { Divider, Dropdown, Space } from 'antd';
33
import classNames from 'classnames';
44
import React, { ReactNode, useEffect, useState } from 'react';
55
import GAction from '../GAction';
@@ -77,7 +77,7 @@ const getCtrlList = (
7777

7878
// 多余的按钮会变成下拉菜单
7979
if (children.length > max + 1) {
80-
const menuList = [];
80+
const menuItems = [];
8181

8282
for (let i = max; i < children.length; i++) {
8383
let node = children[i];
@@ -88,17 +88,19 @@ const getCtrlList = (
8888
// 正常节点
8989
CtrlItem = getCtrlItem(node, i, { __simple: true, type: 'text' });
9090
// 添加这个节点
91-
menuList.push(
92-
<Menu.Item style={{ padding: 0 }} key={max + i}>
93-
{CtrlItem}
94-
</Menu.Item>,
95-
);
91+
menuItems.push({
92+
key: max + i,
93+
label: CtrlItem,
94+
style: { padding: 0 },
95+
});
9696
}
9797

98-
const menu = <Menu style={{ minWidth: 100 }}>{menuList}</Menu>;
99-
10098
ctrlList.push(
101-
<Dropdown key={max} overlay={menu} placement="bottomRight">
99+
<Dropdown
100+
key={max}
101+
menu={{ items: menuItems, style: { minWidth: 100 } }}
102+
placement="bottomRight"
103+
>
102104
<GButton type="link" className={classNames('g-button', sub && 'sub')}>
103105
{more}
104106
</GButton>

packages/gbeata/src/GSearchTable/use/useExtraBtn.tsx

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
ReloadOutlined,
88
SettingOutlined,
99
} from '@ant-design/icons';
10-
import { Checkbox, Dropdown, Input, Menu, Space, Tooltip } from 'antd';
10+
import { Checkbox, Dropdown, Input, Space, Tooltip } from 'antd';
1111
import { SizeType } from 'antd/lib/config-provider/SizeContext';
1212
import React, { ChangeEvent, Dispatch, useEffect, useState } from 'react';
1313
import GButton from '../../GButton';
@@ -294,21 +294,25 @@ export default function useExtraBtn(
294294
{extraSizeVisible ? (
295295
<Tooltip title={locale.extra.density}>
296296
<Dropdown
297-
overlay={
298-
<Menu
299-
style={{ width: 100 }}
300-
selectedKeys={[size + '']}
301-
onClick={handleSizeChange}
302-
>
303-
<Menu.Item key="large">
304-
{locale.extra.densityLarger}
305-
</Menu.Item>
306-
<Menu.Item key="middle">
307-
{locale.extra.densityMiddle}
308-
</Menu.Item>
309-
<Menu.Item key="small">{locale.extra.densitySmall}</Menu.Item>
310-
</Menu>
311-
}
297+
menu={{
298+
items: [
299+
{
300+
key: 'large',
301+
label: locale.extra.densityLarger,
302+
},
303+
{
304+
key: 'middle',
305+
label: locale.extra.densityMiddle,
306+
},
307+
{
308+
key: 'small',
309+
label: locale.extra.densitySmall,
310+
},
311+
],
312+
selectedKeys: [size + ''],
313+
onClick: handleSizeChange,
314+
style: { width: 100 },
315+
}}
312316
>
313317
<ColumnHeightOutlined />
314318
</Dropdown>

0 commit comments

Comments
 (0)