Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug Report]: 自定义节点内,插入dom 生成logicflow实例,怎么判断拖拽的节点,是否在我的自定义节点画布内? #1477

Closed
io-o opened this issue Jan 15, 2024 · 11 comments
Assignees
Labels
bug Something isn't working

Comments

@io-o
Copy link

io-o commented Jan 15, 2024

发生了什么?

image 这种需求,有没有好的解决方案?

logicflow/core版本

1.2.17

logicflow/extension版本

1.2.18

logicflow/engine版本

No response

浏览器&环境

Chrome

@io-o io-o added the bug Something isn't working label Jan 15, 2024
@io-o
Copy link
Author

io-o commented Jan 15, 2024

拖拽节点的 MouseEvent的 clientX, clientY 和 当前自定义画布位置 无法比较
image

@io-o
Copy link
Author

io-o commented Jan 17, 2024

因为不再同一层级上,无法进行比较, 目前的解决方案,只能默认画布 先 新增节点,然后根据 节点 x y位置信息 去 比较, 如果在循环容器内, 默认画布删除掉新增的节点, 循环容器内 新增节点,但是这样处理 性能会有损耗。
目前还有问题两个问题:
1 自定义节点,setHTML 方法,会执行两次, 这个怎么解决?
2 挪动循环容器内的 节点, 整个循环容器 也会跟着动,怎么解决?

@io-o
Copy link
Author

io-o commented Jan 22, 2024

目前测试,相交时,获取的节点位置信息,x y不对 (后拖拽的节点位置在循环容器中间,但是得到的x 小于 循环容器的 x),

怎么实现 自定义节点 拖拽 修改宽高(动态修改自定义节点的宽高)

@io-o
Copy link
Author

io-o commented Jan 23, 2024

@io-o
Copy link
Author

io-o commented Feb 4, 2024

setHtml, 重复两次,这个问题,帮忙看看下

@wumail
Copy link
Collaborator

wumail commented Feb 4, 2024

@DymoneLewis @boyongjiong 👀👀

@DymoneLewis
Copy link
Collaborator

来了来了
let me CC

@DymoneLewis
Copy link
Collaborator

setHtml, 重复两次,这个问题,帮忙看看下

目前logicflow的机制是当一个新的节点拖进画布的时候会先创建一个虚拟节点供用户操作,此时会触发一次(即虚拟节点的setHtml);用户触发mouseup后才会创建一个真实节点,此时会触发第二次(真实节点的setHtml),所以我理解这里setHtml调用两次没问题。
by the way 如果想要判断新拖拽进画布的节点是否在循环容器里,可以试试监听node:dnd-drag事件,它会把当前拖拽的虚拟节点的信息,可以用其中的x y和循环容器的位置做比较(这样做性能损耗应该也能小一些

挪动循环容器内的 节点, 整个循环容器 也会跟着动 的问题 我再看下

@io-o
Copy link
Author

io-o commented Feb 7, 2024

setHtml, 重复两次,这个问题,帮忙看看下

目前logicflow的机制是当一个新的节点拖进画布的时候会先创建一个虚拟节点供用户操作,此时会触发一次(即虚拟节点的setHtml);用户触发mouseup后才会创建一个真实节点,此时会触发第二次(真实节点的setHtml),所以我理解这里setHtml调用两次没问题。 by the way 如果想要判断新拖拽进画布的节点是否在循环容器里,可以试试监听node:dnd-drag事件,它会把当前拖拽的虚拟节点的信息,可以用其中的x y和循环容器的位置做比较(这样做性能损耗应该也能小一些

挪动循环容器内的 节点, 整个循环容器 也会跟着动 的问题 我再看下

触发两次setHTML,拿到model.id 也不一样, 之后的代码会执行两次,如何规避?setHTML 之后需要执行的 js代码,放在哪个时机处理比较合适?
判断拖拽进循环容器,这个功能已经实现了。

@DymoneLewis DymoneLewis self-assigned this Mar 6, 2024
@DymoneLewis
Copy link
Collaborator

setHtml, 重复两次,这个问题,帮忙看看下

目前logicflow的机制是当一个新的节点拖进画布的时候会先创建一个虚拟节点供用户操作,此时会触发一次(即虚拟节点的setHtml);用户触发mouseup后才会创建一个真实节点,此时会触发第二次(真实节点的setHtml),所以我理解这里setHtml调用两次没问题。 by the way 如果想要判断新拖拽进画布的节点是否在循环容器里,可以试试监听node:dnd-drag事件,它会把当前拖拽的虚拟节点的信息,可以用其中的x y和循环容器的位置做比较(这样做性能损耗应该也能小一些
挪动循环容器内的 节点, 整个循环容器 也会跟着动 的问题 我再看下

触发两次setHTML,拿到model.id 也不一样, 之后的代码会执行两次,如何规避?setHTML 之后需要执行的 js代码,放在哪个时机处理比较合适? 判断拖拽进循环容器,这个功能已经实现了。

可以监听node:dnd-add事件,触发后再执行后续逻辑来规避

@DymoneLewis
Copy link
Collaborator

感谢您的反馈,辛苦试一下上面说的规避方案是否可行,如果还有相关问题可以重启我们继续跟进😊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants