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]fitView无法将整个视图适应容器大小 #1356

Closed
eyea opened this issue Sep 26, 2023 · 10 comments · Fixed by #1373
Closed

[Bug report]fitView无法将整个视图适应容器大小 #1356

eyea opened this issue Sep 26, 2023 · 10 comments · Fixed by #1373

Comments

@eyea
Copy link

eyea commented Sep 26, 2023

问题描述

期望整个视图缩小到视图可以展示完全

最简复现

codesandbox地址

相关信息 context

"@logicflow/core": "^1.2.15",
"@logicflow/extension": "^1.2.16",

Node Version: v20.5.0

Platform: macOs

@eyea
Copy link
Author

eyea commented Sep 26, 2023

补充期望效果:
image

当前效果:
image

@eyea
Copy link
Author

eyea commented Sep 28, 2023

可能是我哪里的设置或者api没用对,上面的复现地址 我更新了一个 logicFitView 函数,render 数据后,执行该函数达到预期的效果。

居中的话,piont 值如 [0, 0] 这样的值可能更合理一些~

假期愉快~

:)

@eyea
Copy link
Author

eyea commented Sep 28, 2023

仔细观察了下,可能是如下报错导致 fitView 执行异常,没有实现预期的效果:

image

再进一步观察,dom 如下:

image

具体源码可能是这里

image

除了 SKEW_Y SKEW_X 别的都是 NaN

打印 graphModel, 证实上述问题:
image

可是为什么会存在这种问题呢,代码里初始化的位置
image

两个可能的问题来源:用户和代码版本更新(使用版本如本issue开始描述)

跟数据应该是没关系的,从源码fork个项目,使用 fitView() 也存在类似的问题


那接着看下源码,哪里会有更新这个

@wumail
Copy link
Collaborator

wumail commented Sep 29, 2023

假期愉快~我们节后排查一下

@eyea
Copy link
Author

eyea commented Oct 1, 2023

最新发现,我们的接口对 propertiesnodeSize 进行了处理导致一些参数的丢失,节后我找他们修正下再观察~

@eyea
Copy link
Author

eyea commented Oct 1, 2023

emmm... 在排除上述可能得错误后,fitView如果在本身元素就在可视区范文内的,使用后会放大栅格,感觉需要个参数做边界判断,能显示完整就不调整?

@wumail
Copy link
Collaborator

wumail commented Oct 7, 2023

emmm... 在排除上述可能得错误后,fitView如果在本身元素就在可视区范文内的,使用后会放大栅格,感觉需要个参数做边界判断,能显示完整就不调整?

fitView的预期就是带缩放的,不调整到话有些奇怪,如果只想定位到画布中心可以使用focusOn

@eyea
Copy link
Author

eyea commented Oct 7, 2023

emmm... 在排除上述可能得错误后,fitView如果在本身元素就在可视区范文内的,使用后会放大栅格,感觉需要个参数做边界判断,能显示完整就不调整?

fitView的预期就是带缩放的,不调整到话有些奇怪,如果只想定位到画布中心可以使用focusOn

你好,我已经将 data1 的可疑有问题的数据清除掉了。

在这个 例子 中,我做了下 fitView 效果对比,预期是执行 fitView 达到第二行的效果,即可视区全部展示完整。

image

第一行展示的效果不是预期,第二行是预期效果。

第二行执行的方法 主要是手动改了 pointx/y 值:

image

ps: 效果在例子中右侧可看,电脑截屏功能受限,原谅 :)

@wumail
Copy link
Collaborator

wumail commented Oct 7, 2023

emmm... 在排除上述可能得错误后,fitView如果在本身元素就在可视区范文内的,使用后会放大栅格,感觉需要个参数做边界判断,能显示完整就不调整?

fitView的预期就是带缩放的,不调整到话有些奇怪,如果只想定位到画布中心可以使用focusOn

你好,我已经将 data1 的可疑有问题的数据清除掉了。

在这个 例子 中,我做了下 fitView 效果对比,预期是执行 fitView 达到第二行的效果,即可视区全部展示完整。

image

第一行展示的效果不是预期,第二行是预期效果。

第二行执行的方法 主要是手动改了 pointx/y 值:

image

ps: 效果在例子中右侧可看,电脑截屏功能受限,原谅 :)

我看了下,mock数据里面还是存在某些节点nodeSize里的width、height是null的,算出来画布内容包围盒长宽变成了NaN,导致得到的zoom值不正确,focusOn也出现了问题

@eyea
Copy link
Author

eyea commented Oct 8, 2023

emmm... 在排除上述可能得错误后,fitView如果在本身元素就在可视区范文内的,使用后会放大栅格,感觉需要个参数做边界判断,能显示完整就不调整?

fitView的预期就是带缩放的,不调整到话有些奇怪,如果只想定位到画布中心可以使用focusOn

你好,我已经将 data1 的可疑有问题的数据清除掉了。
在这个 例子 中,我做了下 fitView 效果对比,预期是执行 fitView 达到第二行的效果,即可视区全部展示完整。
image
第一行展示的效果不是预期,第二行是预期效果。
第二行执行的方法 主要是手动改了 pointx/y 值:
image
ps: 效果在例子中右侧可看,电脑截屏功能受限,原谅 :)

我看了下,mock数据里面还是存在某些节点nodeSize里的width、height是null的,算出来画布内容包围盒长宽变成了NaN,导致得到的zoom值不正确,focusOn也出现了问题

嗯,谢谢~

@eyea eyea closed this as completed Oct 8, 2023
@wumail wumail mentioned this issue Oct 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants