-
Notifications
You must be signed in to change notification settings - Fork 5
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
initial graph #56
initial graph #56
Conversation
Looks great, thanks for the contribution! <3 I've written down a few notes while playing around with it, we don't have to include them in this PR but if you agree with some of them I'll create issues to keep track & sort them out in the future. Good to have:
Nice to have/loose ideas:
Again, thanks for your contribution! |
Co-authored-by: Michał Praszmo <nazywam@gmail.com>
This changed is to fix the graph flickering when just mousing over the edges as pointed by @nazywam
animationDelay doesn't achieve what it needs to; Also removed depracated focusNodeAdjacency in favor of `emphasis: {focus: 'adjacency'}` and dispatchAction of type `focusNodeAdjacency` which doesn't exists anymore
e23fa4a
to
b23bbd5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
:lgtm:
Karton graph visualization
Introduction
This pull request adds a visualization of the kartons and the connections between them. A
graph
tab is added to the dashboard, and in it a directed graph. The graph is interactive, allowing zooming, moving the graph and moving the nodes. A click on a node shows info about it: its name, version (if available) and description (if available).In more details
Stack used
Implementation details
A
/graph
route was added. When accessing it, the graph is built out of the binds and the outputs in redis. For each karton we create a KartonNode object representing it, which then allows to see if one karton should have an edge to another (i.e., if the former karton's outputs are contained in the latter's binds).After creating a graph object, we style it and provide size and color for each node. We then output it in gexf format. This gexf format graph is passed to the frontend. An echarts instance is created from the graph and displayed.
Possible uses
A few possible uses for the graph might be:
Future work
/graph
is accessed, maybe some caching mechanism can be usedCurrently the backend it blocking when requestingchanged so now a loading screen shows, but loading time should still be addressed/graph
so a user needs to wait until they get the graph with a reasonably big karton system