antv x6填坑指南: 部分节点拖拽和操作撤销重做不生效问题、使用Stencil过滤时过滤后分组的显示高度无法根据过滤节点自适应问题

问题1. 部分分组中节点拖拽添加或操作后撤销重做操作不生效。

前提:使用Stencil插件,创建画布侧边栏的 UI 组件,同时使用其分组、折叠能力。分组包含固定分组、后台接口获取的动态分组和组件。

//固定分组初始化
initStencil (graph, stencil) {
   
   
//defaultGroup是固定分组和其节点信息,自行添加
      defaultGroup.forEach((gp, index) => {
   
   
        const groupName = 'common-group' + index
        const group = {
   
    name: groupName, title: gp.name || '未命名', collapsable: true }
        stencil.addGroup(group)
        const nodes = gp.children.map(item => {
   
   
          let node
          if (item.data.nodeType !== specilNodeType.GroupNodeType) {
   
   
            node = graph.createNode({
   
   
              shape: 'custom-vue-node',
              width: 166,
              height: 32,
              data: {
   
    nodeGroup: gp.key, ...item, ...(item.data || {
   
   }), isStencil: true, data: null }
            })
          } else {
   
   
            node = graph.createNode({
   
   
              shape: 'group-vue-node',
              width: 166,
              height: 32,
              data: {
   
    nodeGroup: gp.key, ...item, ...(item.data || {
   
   }),
AntV X6 中,`history` 模块支持通过 `batch` 功能将多个操作合并为一个历史记录条目。这在执行复合操作(如添加节点并同调整其大小)非常有用,可以避免历史记录过于碎片化,提升用户体验。 使用 `batch` 功能,可以通过 `graph.history.startBatch()` `graph.history.stopBatch()` 来包裹多个操作。这些操作将在撤销被视为一个整体。 ### 示例:合并添加节点与调整大小操作 以下是一个将“添加节点“调整节点大小”合并为一个历史操作的示例代码: ```typescript // 启动批量操作记录 graph.history.startBatch(); // 添加节点 const node = graph.addNode({ x: 40, y: 40, width: 80, height: 40, label: 'Batch Node', }); // 调整节点大小 graph.resizeCell(node, { width: 120, height: 60, }); // 停止批量操作记录 graph.history.stopBatch(); ``` 在这个示例中,添加节点调整大小的操作被包裹在 `startBatch()` `stopBatch()` 之间,因此这两个操作将被合并为一个历史记录条目。当用户点击撤销,这两个操作将一起被撤销;点击,这两个操作也将一起恢复。 ### 注意事项 - `startBatch()` `stopBatch()` 必须成对使用,否则可能导致历史记录状态异常。 - `batch` 操作可以包含多个修改图状态的操作,不仅限于节点的添加调整大小。 - 如果在 Vue 或 React 等框架中使用,确保这些操作在同一个事件循环中执行,避免异步操作破坏 `batch` 的上下文。 ### 批量操作的应用场景 除了添加节点调整大小之外,`batch` 还可以用于以下场景: - 添加多个节点连线,并将它们合并为一个撤销/操作。 - 在拖拽多个节点,将所有节点的位置变化合并为一个操作。 - 执行复杂布局算法后,将所有节点位置更新合并为一次历史记录。 通过合理使用 `batch` 功能,可以显著提升用户在使用图形编辑器的交互体验。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值