antvis / Graphin

🌌 A React toolkit for graph visualization based on G6.
https://github.com/antvis/graphin
MIT License
1.02k stars 265 forks source link

Graphin style InnerLayout of ComboCombined layout breaks #372

Open dukesun99 opened 2 years ago

dukesun99 commented 2 years ago

Describe the bug

When defining the innerLayout config of ComboCombined layout in graphin way, e.g.

const layoutWrong = {
  type: "comboCombined",
  innerLayout: {
    type: "dagre"
  }
};

It will result in a TypeError innerGraphLayout.layout is not a function. Changing it to using G6 way of defining layout solve the issue:

const layoutCorrect = {
  type: "comboCombined",
  innerLayout: new G6.Layout["dagre"]()
};

Your Example Website or App

https://codesandbox.io/s/hardcore-bell-fbebob?file=/App.tsx:1993-2084

Steps to Reproduce the Bug or Issue

  1. Run the demo, and see the error
  2. Modify the layout={layoutWrong} to layout={layoutCorrect}, you will see it works

Expected behavior

I would expect the innerLayout also can be defined in the Graphin way.

Screenshots or Videos

No response

Platform

Additional context

No response

dukesun99 commented 2 years ago

I could figure out which part of the code to modify to make it work, however, I cannot modify it neatly, since some processing is required for force layouts, and seems some refactoring is needed. So maybe someone pls have a look.

Before supplying this.options to this line, innerLayout need to go through the same process to build an object.

pomelo-nwu commented 2 years ago

@dukesun99 Thanks for finding this, we'll deal with it later