gabotechs / dep-tree

Tool for helping developers keep their code bases clean and decoupled. It allows visualising a code base complexity using a 3d force-directed graph of files and the dependencies between them.
https://github.com/gabotechs/dep-tree
MIT License
1.4k stars 35 forks source link

Finding ways to navigate the graphs #86

Open Chico-Carneiro opened 2 months ago

Chico-Carneiro commented 2 months ago

Hi, thanks for working on this really cool tool!

I would like to suggest a few features to help navigation / UI / UX I understand implementing features requires time and effort.

Essential (in my opinion):

Really nice to have:

Nice to have:

Improvement:

Optional:


I was trying to see if I could be useful and implement (1). I don't have experience with three.js, but I was trying to understand how you populate the DATA variable in dep-tree/internal/entropy/index.html

I can see it has nodes, links and optional ['enableGui']. If the user already "Choose the file that will act as the root of the dependency graph" then you can pass that info down somehow, and add the node to highlightNodes or as selectedNode.

Cheers!

gabotechs commented 2 months ago

Overall all of the suggestion look good,

I was trying to see if I could be useful and implement (1). I don't have experience with three.js, but I was trying to understand how you populate the DATA variable in dep-tree/internal/entropy/index.html

That's done on Golang's code https://github.com/gabotechs/dep-tree/blob/main/internal/entropy/render.go#L38 that takes the Graph, serializes it, and performs a plain string replacement in the index.html file.

I can see it has nodes, links and optional ['enableGui']. If the user already "Choose the file that will act as the root of the dependency graph" then you can pass that info down somehow, and add the node to highlightNodes or as selectedNode.

The necessary info is actually already passed down. This structure https://github.com/gabotechs/dep-tree/blob/main/internal/entropy/graph.go#L17 is what gets serialized as a node object and passed down to the index.html file. So the node object on the JS side already has a boolean attribute isEntrypoint determining whether the file is the main entrypoint or not.

About your other suggestions, I have gathered some feedback from other people using dep-tree and created a bunch of issues that seem somehow related to your suggestions:

I think this issue and the ones I shared set a good baseline for the direction dep-tree should take for improving usability on the frontend side.