clientIO / joint

A proven SVG-based JavaScript diagramming library powering exceptional UIs
https://jointjs.com
Mozilla Public License 2.0
4.72k stars 853 forks source link

[feat]: Manhattan router should support ports inside the element's body. #2763

Open alexandernst opened 1 month ago

alexandernst commented 1 month ago

Current versus expected behaviour

[!NOTE] This is a follow up from https://github.com/clientIO/joint/discussions/2738#discussioncomment-10737651

Hi @kumilingus !

I've been playing around with the code you gave me in the manhattan-router discussion the other day and I saw something that I thought is worth mentioning. Certain situations lead to the manhattan router creating extra vertices:

image

I'm aware that this might be (¿?) caused by the step option and because of the way collisions are detected (¿?), which is fine, but if I set the step value to 1 (actually any value below 7), manhattan just stops avoiding any obstacles at all.

image

I tried debugging the code and re-reading all the docs, and I believe there is a correlation between step and gridSize, but setting the later to the same value doesn't fix the problem.

Why isn't manhattan avoiding obstacles when step < 7?

Steps to reproduce

  1. Go to https://codesandbox.io/p/sandbox/runtime-dream-8ffcy9
  2. Change step to any value below 7
  3. Move the cells and check if the link is avoiding the cells

Version

4.0.4

What browsers are you seeing the problem on?

Chrome, Safari

What operating system are you seeing the problem on?

Mac

alexandernst commented 1 month ago

@kumilingus ping 👀

kumilingus commented 1 month ago
alexandernst commented 1 month ago

Ahh, I see. The step size is used to "jump" from the "real port" to the "fake port" (the pS and pT points in my code). If the step size doesn't cover the size of the "jump", it fallbacks. In my case, setting step to <7 will cause the fallback since the radius of the port itself is 5 and I have a margin of 2. That makes sense! It makes my brain hurt 🤔, but it makes sense. Thank you!!

kumilingus commented 1 month ago

Let me reopen this issue with a goal of supporting it at some point.