Skip to content
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

Open
rade opened this issue Jun 29, 2017 · 16 comments
Open

better visual cues / consistency to directionality in radial view #2667

rade opened this issue Jun 29, 2017 · 16 comments
Labels
chore Related to fix/refinement/improvement of end user or new/existing developer functionality component/ui Predominantly a front-end issue; most/all of the work can be completed by a f/e developer needs-design UI representation/flow requires a fair amount of thought

Comments

@rade
Copy link
Member

rade commented Jun 29, 2017

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

Concepts involving re-arranging the nodes were unsuccessful, as it lead to very unbalanced "sides" of the diagram which lead to difficult to read diagrams.

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.

@rade rade added chore Related to fix/refinement/improvement of end user or new/existing developer functionality component/ui Predominantly a front-end issue; most/all of the work can be completed by a f/e developer labels Jun 29, 2017
@rade rade changed the title better visual cues / consistency to directionality in radial vuew better visual cues / consistency to directionality in radial view Jun 29, 2017
@2opremio 2opremio added the needs-design UI representation/flow requires a fair amount of thought label May 31, 2018
@fbarl fbarl self-assigned this Jul 27, 2018
@bia
Copy link
Contributor

bia commented Jul 30, 2018

@fbarl, @miklosp and I thought about this a bit. I propose a radial view with directionality grouping as follows :
radial1

I don't know how many rows should be the maximum, but this layout still creates problems when the spacing is too tight.
radial2

What do you think?

@rade
Copy link
Member Author

rade commented Jul 30, 2018

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.

this layout still creates problems when the spacing is too tight.

every layout will have some upper bound on the number of nodes in can show.

@bia
Copy link
Contributor

bia commented Jul 30, 2018

every layout will have some upper bound on the number of nodes in can show.

Perhaps there's an opportunity do design a more graceful way for nodes to overlap.
What if (in the case where there are 50+ connections) nodes could stack horizontally and show only one label (cycling through each node's name on hover).
stacking
or
stacking2

@rade
Copy link
Member Author

rade commented Jul 30, 2018

Dealing with lots of nodes is (or, rather, should be) a separate issue.

@fbarl
Copy link
Contributor

fbarl commented Jul 31, 2018

What do you think?

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).

Perhaps there's an opportunity do design a more graceful way for nodes to overlap.

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 :/

@rade
Copy link
Member Author

rade commented Jul 31, 2018

it should be split in 3 quadrants rather than 4.

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).

@bia
Copy link
Contributor

bia commented Aug 1, 2018

tl;dr forget the multiple orbit thing.

you cannot divide a circle into 3 quadrants

:)

I think it is more clear when data senders are centred on 0°, receivers on 180° and bidirectionals on 90° (we can choose only one side right or left).
Here, the sender and receivers are skewed by -20° and limited to fan out by 90° and the bidirectionals are centred on 90°.
radial5

This whole valence thing looks much more complicated and takes too much space. Let's drop it, organise the single orbit with senders on top and receivers on bottom, and focus on improving the grouping of nodes to fix this problem.

@rade
Copy link
Member Author

rade commented Aug 2, 2018

I think it is more clear when data senders are centred on 0°, receivers on 180° and bidirectionals on 90° (we can choose only one side right or left).

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.

@rade
Copy link
Member Author

rade commented Aug 3, 2018

If we want to keep things simple, I suggest we stick to the single orbit, with four segments located as follows:

  • 300° - 60° inbound
  • 60° - 120° bidirectional
  • 120° - 240° outbound
  • 240° - 300° bidirectional

This gives us 120° each for inbound, outbound, and bidirectional.

@bia
Copy link
Contributor

bia commented Aug 3, 2018

Though skewing looks weird and I'd rather have bidrectionals centered at 90° and 135°.

135°? Do you mean 270°

This gives us 120° each for inbound, outbound, and bidirectional.

I got the impression that there are fewer bidirectionals. If so, we could allocated a smaller portion to bidirectionals?

novalence

@rade
Copy link
Member Author

rade commented Aug 3, 2018

135°? Do you mean 270°

Oops. Yes.

I got the impression that there are fewer bidirectionals. If so, we could allocated a smaller portion to bidirectionals?

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.

@ngehani
Copy link

ngehani commented Aug 3, 2018

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.

@rade
Copy link
Member Author

rade commented Aug 3, 2018

The goal should be to show summary in the workload summary view

This is the scope oss repo. There is no 'workload summary' here.

If it gets too crowded with lots of nodes

Dealing with lots of nodes is covered in #3293.

@ngehani
Copy link

ngehani commented Aug 3, 2018

Oops - I didn't notice scope repo - lost track - never mind.

@fbarl fbarl removed their assignment Aug 9, 2018
@bia
Copy link
Contributor

bia commented Feb 23, 2019

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 :

  1. We do what @rade originally said, though I don't think that always creating at least 4 positions is necessary - we could simply turn groups of 3 to the most appropriate angle.
    [i.e. the centerpoint of incoming nodes is also the vertical centerpoint]
    To summarise, while maintaining equal radial distribution of nodes (as we already have), group inbound connections towards the top, bidirectionals to the sides and outbound connections to the bottom. Here are some before/after examples :
    screenshot 2019-02-23 at 13 14 44screenshot 2019-02-23 at 13 14 44

screenshot 2019-02-23 at 15 26 16screenshot 2019-02-23 at 15 26 16

  1. Make highlights more aggressive as in Better visualization of a large number of nodes in circular layout #3293

@rade
Copy link
Member Author

rade commented Feb 23, 2019

Fine by me, on the grounds that it is definitely an improvement on the status quo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
chore Related to fix/refinement/improvement of end user or new/existing developer functionality component/ui Predominantly a front-end issue; most/all of the work can be completed by a f/e developer needs-design UI representation/flow requires a fair amount of thought
Projects
None yet
Development

No branches or pull requests

5 participants