-
Notifications
You must be signed in to change notification settings - Fork 712
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
better visual cues / consistency to directionality in radial view #2667
Comments
Looks fine, and makes better use of the space than the existing view. BUT... It looks like the circle has been divided into four quadrants - top for inbound, bottom for outbound and left/right for bidirectional. That reserves way too much space for bidirectional links, which are rare. I reckon the segment size needs to be somewhat dynamic, perhaps 0-180 degrees, proportional to the ratios of the number of nodes in each directionality bucket. So, for example, if there are no bidrectional connections, then inbound and outbound nodes could be places in the full 180 degree top and bottom arcs, respectively.
every layout will have some upper bound on the number of nodes in can show. |
Dealing with lots of nodes is (or, rather, should be) a separate issue. |
I like the radial layout with directionality grouping as in the screenshot above, although I also agree with @rade that it should be split in 3 quadrants rather than 4. One problem I see though is that such a layout does consume a bit more space, which we'd have to figure out how to deal with in the context of Weave Cloud (Workload Summary graph).
I just opened #3293 to discuss this separately, but I just wanted to point out that we already have a notion of stacked nodes, which we could potentially use here, although the problem is that some topologies already display all their nodes as stacked, so it would be mixing of use cases :/ |
Umm, you cannot divide a circle into 3 quadrants ;) What I was suggesting is that the four segments are sized in proportion to the number of nodes they need to contain, with the additional constraint that no segment exceeds 180 degrees (or perhaps just shy of that, e.g. 135). |
Agreed. I didn't mean to suggest otherwise. Though skewing looks weird and I'd rather have bidrectionals centered at 90° and 135°. What I was proposing is that the segment size is variable, not the segment center position. |
If we want to keep things simple, I suggest we stick to the single orbit, with four segments located as follows:
This gives us 120° each for inbound, outbound, and bidirectional. |
Oops. Yes.
There typically are indeed fewer bidirectionals. But sometimes there aren't. For example, in the Nodes topology usually everything is bidirectional. Hence if we go with fixed segment sizes I would rather stick to 120° each. OTOH, if we go for variable segment sizes, we could adjust the size between 90% and 150%. But that is more work. |
The goal should be to show summary in the workload summary view. If it gets too crowded with lots of nodes, then you can have a hover to show how many nodes and then clicking it would bring up a modal (or something) to show the fuller picture before going to Explore which shows that in context with the rest of the cluster. |
This is the scope oss repo. There is no 'workload summary' here.
Dealing with lots of nodes is covered in #3293. |
Oops - I didn't notice scope repo - lost track - never mind. |
Time passed, and I'm not a big fan of the radial view anymore. Instead, I propose 2 simple steps to resolve this issue for now :
|
Fine by me, on the grounds that it is definitely an improvement on the status quo. |
The radial view one gets when selecting a node could do a better job of positioning the connected nodes such that the directionality follows the "inbound at top, outbound at bottom" approach we use to lay out the main graphs.
Follow-up to #875, which says
I suggest an approach where the list of connections is sorted to have inbound first, bidirectional second, and outbound last. We then place needs nodes on n_nodes equidistant positions on the radial circle by iterating through the list and placing the first node at the top, the 2nd node to its left, the third to its right, the fourth to the left of the 2nd node, the fifth to the right of the 3rd node, etc.
Add some special casing for small numbers of nodes, e.g. always create at least 4 positions - top, bottom, left, right - and place nodes in their "best free match" positions.
The text was updated successfully, but these errors were encountered: