-
Notifications
You must be signed in to change notification settings - Fork 27
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
Hierarchical GScan #502
Hierarchical GScan #502
Conversation
Codecov Report
@@ Coverage Diff @@
## master #502 +/- ##
==========================================
+ Coverage 89.96% 90.41% +0.44%
==========================================
Files 79 83 +4
Lines 1535 1575 +40
Branches 112 105 -7
==========================================
+ Hits 1381 1424 +43
+ Misses 122 121 -1
+ Partials 32 30 -2
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
This new feature doesn't look too complicated to add, but I would like to see, first, if we can add it using the existing For that, we just need to make I created two workflows to experiment with, the For now I am relying on
WIP an "after" screenshot coming soon, once I finish this PoC |
In the image above, the links to workflows are working. It is the UI with the latest commit here. It is missing to group hierarchies that have common parts (e.g. But what happens when we have running workflows in these hierarchies? At the moment we show running workflows at the top. But if we have a workflow like So would we still display that hierarchy at the top? Along with all other stopped workflows? And below it display other running workflows like |
Good question. We may need to be able to choose between a flat list with "global" sorting (of running/not-running) and a tree view with partial sorting (by running/not-running) A flat list, particularly when combined with filtering, is easiest to use if you don't care about the hierarchical grouping. A tree view can't be fully sorted like a flat list without duplication of branches, which I don't think we would want. I guess as a start, the tree view should sort (by running/not-running) in the leaves on each terminal branch. And we could also consider sorting branches so that those with one or more running flows are at the top, and those with no running flows are at the bottom. That's probably the best we can do, for sorting within a tree (is it?)? |
Note we used to offer a flat option in the tree view for much the same reason (better re-implemented as a table if people really want that). So long as hierarchical is the default! Note that hierarchical display makes more sense if we go down the hierarchical run registration route i.e:
Also, with this model the |
@kinow I've had a quick play with this. First thing that struck me was, the hierarchy is being displayed as separate hierarchical items rather than as a unified tree form: (The root and branches should merge going up the tree, right?) |
I see you commented on that yourself above, but maybe my answer wasn't very helpful. I was trying to say we can't have both a grouping tree and absolute sorting of leaves by running state. And I went off on a tangent a bit by saying we might also need a flat (non-tree) gscan with absolute sorting by state - but that's a potential addition for the future. For now, we definitely want a tree gscan. The gscan tree will have multiple trunks (i.e. multiple trees - like the multiple cycle point trunks in the tree view). So we should sort trunks according to whether or not any of their leaf flows are running: those with any running flows at the top; those with no running flows at the bottom. And similarly inside the lower branches of any tree, down to the leaves (i.e. running leaves at the top of their own expanded tree, stopped ones at the bottom of it). Does that make sense? |
Yup, I was working on that when I realized it would break sorting. From what I understood in the discussion here, it's OK to go with hierarchy, and sort by the complete name. So if we have Also, filtering would be by workflow name, so it would use And then later we can add a toggle to switch between flat and non-flat. Or would it be best to do that now? 🤔 |
(Alphanumeric sorting might be wanted too, but that can be another PR; this one should only have alphanumeric sorting among groups of running or stopped flows, I guess). |
A follow-up is fine unless it's really easy for you.
Well I was suggesting a combination of that and run/stopped sort. Trunks with any running flows under them should go above those with no running flows. Within that, sort by name. And if you completely expand one trunk, running leaf-flows at the top and stopped ones below them - but sort all the running flows within that group by name, and all the stopped ones within that group by name. |
(If that's still not very clear let's have a chat tomorrow - it's hard to explain this stuff in text! - I have to go out now to a school thing...) |
I guess I'm just talking about primary and secondary sort keys. Primary = running/stopped; secondary = alphanumeric. 💥 Users might like plain alphanumeric sorting too - if they are looking to start stopped flows, or are looking for a particular flow whether or not it is currently running. Maybe that would be easiest for the first edition of this PR? And follow-up to allow choice of different sorting including by running/stopped state within each tree/trunk. |
Righto. I will try to implement as close as possible, but writing as little code as possible, so that and the others can take a look (some times looking at the running UI more ideas appear, or we change our mind), and also for me to take a look at performance. I remember having some issues when implementing hierarchy, and that was before the offline workflows I think? So now I will have even more workflows. The first thing I will do is find a way to merge the families. So |
One thing that definitely won’t change is we don’t want to break the “families” up. Sorting, by whichever keys, can only change the order of the top level trees, and the order of nodes within expanded trees. |
This comment has been minimized.
This comment has been minimized.
cd51202
to
d6790cc
Compare
Whew rebased. Wrote down a few post-its & scribbles as I re-read the old code with some problems & improvements after the rebase. Will start working on these items tomorrow please ignore CI for now. It is interesting to note that our improvements with Vuex, subscriptions, and code-reviewing GScan simplified the code a lot. We had 4 files changed, multiple lines. Now if you look at the diff, just 2 files, with a few lines modified :-) slowly the design of the UI project is stabilizing and getting easier to add new code & maintain. |
941884b
to
d114105
Compare
b92c4e9
to
625754c
Compare
befd8f8
to
70d82d8
Compare
Moved changelog to 0.6 |
70d82d8
to
f334dca
Compare
before, but via slots)
…ed on the existing one from Tree. New elements added to GScan structure are added in order now.
f334dca
to
3c31fac
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.
Looks good, tests as working 👍
As a follow-up, we should have a summary state propagate up the tree (so you can see if anything is running in a collapsed branch...)
|
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.
Ah, hadn't notice it! #730 Thanks! |
Related to #139
sort
,filter
(will spread this pattern to other components over next PR's/days/weeks/...).RUN1
will include a workflow likefive/run1
).Requirements check-list
CONTRIBUTING.md
and added my name as a Code Contributor.Note for reviewers: you may find workflows that are not sorted correctly by status. This is a known issue, with a fix already in review. This is what it may look like (
run4
is supposed to go up I think, as it is running, but Enumify is messing up).p.s.: to test calling the callback for a random delta, execute the following in the browser console