JavaScript is required

自定义画布拖拽和滚轮事件

画布交互设置面板

演示可重用的画布设置面板组件,允许用户通过切换开关配置图表交互行为。

画布交互设置面板

功能概述

此示例演示了一个可重用的画布设置面板组件,允许用户通过切换开关配置图表交互行为,包括缩放、拖动和节点移动设置。

核心特性实现

画布设置组件

使用 CanvasSettingsPanel 组件提供控制画布交互的标准化 UI:

<DraggableWindow>
    <CanvasSettingsPanel />
</DraggableWindow>

节点插槽自定义

使用 RGSlotOnNode 在节点内显示自定义内容:

<RGSlotOnNode>
    {({ node }: RGNodeSlotProps) => (
        <div className="flex items-center justify-center h-full p-2">
            <Cloud size={30} color="#666666" />
        </div>
    )}
</RGSlotOnNode>

中心布局

使用中心布局进行自动节点定位:

const graphOptions: RGOptions = {
    defaultJunctionPoint: RGJunctionPoint.border,
    layout: {
        layoutName: 'center'
    }
};

画布单击处理

单击空白画布时清除选择:

const onCanvasClick = () => {
    graphInstance.clearChecked();
};

节点初始化

使用一组节点和连线初始化图表:

const myJsonData: RGJsonData = {
    rootId: '2',
    nodes: [
        { id: '1', text: 'Node-1' },
        { id: '2', text: 'Node-2' },
        // ... 更多节点
    ],
    lines: [
        { id: 'l1', from: '7', to: '71' },
        // ... 更多连线
    ]
};
await graphInstance.setJsonData(myJsonData);

创意使用场景

  • 交互式演示:让用户尝试不同的交互模式
  • 无障碍设置:允许用户禁用动画或移动
  • 信息亭模式:锁定公共显示的交互
  • 演示:在实时演示期间快速切换模式
  • 用户偏好:记住用户的首选交互设置