Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
GraphNode model is simplified
GraphNode can have label and subtitle or kubeObject
{ id: "some-node", label: "Node Label" }
{ id: "some-node", label: "Node Label", subtitle: "Node Subtitle" }
{ id: "some-node", label: "Node with an icon", subtitle: "Node Subtitle", icon: <Icon icon="mdi:plus-circle-outline" width="32px" /> }
{ id: pod.metadata.uid, kubeObject: pod }
{ id: "some-node", label: "Node with children", nodes: [...], edges: [...] }
Since any GraphNode now can represent kubernetes object we can have better representation of groups like Namespaces and Nodes
Updated Namespace representation
There's now Icon and when clicking on namespace it shows details
A new way of creating edges is introduced called
Relation
With Relation it's easier to define relationships between nodes. For example here's a definition for relation between Pods and ConfigMaps
This change also allows to optimize which nodes are loaded. Before if you had ConfigMaps enabled in the Map it would load all Pods to see if there are any connections, even if Pod were deselected from the Map filters.
And now Relations are decoupled from sources and can be called only if both sources are activated.
You can still add edges from a Source if you need to.
Improved perfrormance
When I measured performance of the current implementation one thing that was overlooked is GPU load.
During simple things like panning around GPU load was high, causing dropped or partial frames.
Before:
will-change
CSS hints allow the engine to dramatically reduce GPU usageAfter:
Improved Grouping buttons
Now it takes a little less space