Skip to content

Commit

Permalink
feat: minimap插件功能完善与相关示例丰富
Browse files Browse the repository at this point in the history
- 小地图中可选择是否渲染连线,支持初始化时设置或通过`setShowEdge`方法更新设置
- 更完善的代码注释与类型定义
- 现在,小地图默认将位于画布的右下角,保留`show`方法设置画布位置的功能,新增`updatePosition`方法用于更新小地图相对画布的决定定位
- 在小地图等示例中增加了新增功能的演示(连线可选渲染与位置调整)
  • Loading branch information
ChangeSuger authored and boyongjiong committed Jun 14, 2024
1 parent 9b30841 commit 5d16cab
Show file tree
Hide file tree
Showing 3 changed files with 376 additions and 103 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.viewport {
position: relative;
height: calc(100vh - 250px);
height: calc(100vh - 270px);
overflow: hidden;
}
112 changes: 82 additions & 30 deletions examples/feature-examples/src/pages/extensions/mini-map/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import LogicFlow from '@logicflow/core'
import { Control, MiniMap } from '@logicflow/extension'

import { Button, Card, Flex, Divider } from 'antd'
import { Button, Card, Flex, Divider, Select, Form, Space } from 'antd'
import { useState, useEffect, useRef } from 'react'
import styles from './index.less'

Expand All @@ -10,30 +10,14 @@ import '@logicflow/extension/es/index.css'

const config: Partial<LogicFlow.Options> = {
isSilentMode: false,
stopScrollGraph: true,
stopZoomGraph: true,
stopScrollGraph: false,
stopZoomGraph: false,
style: {
rect: {
rx: 5,
ry: 5,
strokeWidth: 2,
},
circle: {
fill: '#f5f5f5',
stroke: '#666',
},
ellipse: {
fill: '#dae8fc',
stroke: '#6c8ebf',
},
polygon: {
fill: '#d5e8d4',
stroke: '#82b366',
},
diamond: {
fill: '#ffe6cc',
stroke: '#d79b00',
},
text: {
color: '#b85450',
fontSize: 12,
Expand Down Expand Up @@ -77,10 +61,20 @@ const data: LogicFlow.GraphConfigData = {
edges,
}

const miniMapOptions: MiniMap.MiniMapOption = {
isShowHeader: false,
isShowCloseIcon: true,
headerTitle: 'MiniMap',
width: 200,
height: 120,
}

export default function MiniMapExtension() {
const lfRef = useRef<LogicFlow>()
const containerRef = useRef<HTMLDivElement>(null)
const [visible, setVisible] = useState(false)
const [showEdge, setShowEdge] = useState(true)
const [position, setPosition] = useState('right-bottom')

useEffect(() => {
if (!lfRef.current) {
Expand All @@ -93,11 +87,8 @@ export default function MiniMapExtension() {
plugins: [Control, MiniMap],
pluginsOptions: {
MiniMap: {
isShowHeader: false,
isShowCloseIcon: true,
headerTitle: 'MiniMap',
width: 200,
height: 120,
...miniMapOptions,
showEdge,
},
},
})
Expand All @@ -113,25 +104,86 @@ export default function MiniMapExtension() {
if (visible) {
miniMap.hide()
} else {
miniMap.show(0, 0)
miniMap.show()
}
setVisible(!visible)
}
}

const toggleShowEdge = () => {
if (lfRef.current) {
const miniMap = lfRef.current.extension.miniMap as MiniMap
miniMap.setShowEdge(!showEdge)
setShowEdge(!showEdge)
}
}

const handleReset = () => {
if (lfRef.current) {
;(lfRef.current.extension.miniMap as MiniMap).reset()
}
}

const updatePosition = (position: any) => {
if (lfRef.current) {
const miniMap = lfRef.current.extension.miniMap as MiniMap
miniMap.updatePosition(position)
setPosition(position)
}
}

const updatePositionWithObject1 = () => {
;(lfRef.current?.extension.miniMap as MiniMap).updatePosition({
left: 100,
top: 100,
})
}

const updatePositionWithObject2 = () => {
;(lfRef.current?.extension.miniMap as MiniMap).updatePosition({
right: 100,
bottom: 100,
})
}

return (
<Card title="LogicFlow Extension - MiniMap">
<Flex wrap="wrap" gap="small">
<Button onClick={toggleVisible}>
{visible ? '隐藏' : '显示'}小地图
</Button>
{visible && <Button onClick={handleReset}>重置</Button>}
<Flex wrap="wrap" gap="middle" align="center" justify="space-between">
<Space>
<Button onClick={toggleVisible}>
{visible ? '隐藏' : '显示'}小地图
</Button>
{visible && (
<Button onClick={handleReset}>重置主画布(缩放&位移)</Button>
)}
</Space>
{visible && (
<Form layout="inline">
<Form.Item label="小地图中显示连线">
<Button onClick={toggleShowEdge}>
{showEdge ? '隐藏' : '显示'}
</Button>
</Form.Item>
<Form.Item label="小地图位置">
<Select
value={position}
onChange={updatePosition}
style={{ width: 80 }}
>
<Select.Option value="left-top">左上</Select.Option>
<Select.Option value="left-bottom">左下</Select.Option>
<Select.Option value="right-top">右上</Select.Option>
<Select.Option value="right-bottom">右下</Select.Option>
</Select>
</Form.Item>
<Form.Item tooltip="left: 100; top: 100" label="小地图位置">
<Button onClick={updatePositionWithObject1}>设置</Button>
</Form.Item>
<Form.Item tooltip="right: 100; bottom: 100" label="小地图位置">
<Button onClick={updatePositionWithObject2}>设置</Button>
</Form.Item>
</Form>
)}
</Flex>
<Divider />
<div ref={containerRef} id="graph" className={styles.viewport}></div>
Expand Down
Loading

0 comments on commit 5d16cab

Please sign in to comment.