-
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
Design for non-ideal UI states #111
Comments
I'll kick this off with one suggestion! (It includes a question, as it depends on whether this would data provision will permit this in an intrinsic way). As we know the Graph View will take the longest to load of all the Suite Views, since it is the only one to show dependencies, & in the old (but surely less-performant) UI, From our Cylc 8 discussions, we are planning to implement the Graph View so that it displays only tasks within a configurable number of dependency connections from the currently selected task (see #81 (comment)). Could we (i.e. 1. should we, & 2. would our data model allow this to be natural & efficient) have the task nodes load by increasing number of dependency connections? E.g. the task itself loads, then the tasks connected to it directly, then the tasks connected to those tasks, & so on? That way the user can see the tasks closest along the dependency chain to the task in question they are concerned about, which is usually I imagine going to be the ones they are interested in? And perhaps they can stop the loading once they are satisfied they have a sufficiently large sub-graph to work with for their requirements? |
I like that idea. If edges are paged by "level" that could work. If difficult though, as a first cut just gray out the view and display a throbber/loading animation until loaded. |
Yes, a more standard loading component would certainly be fine for now. There are lots of nice loading components on the Vue Awesome listing. Heck, we could even have a pac-man eat up (little representations) of tasks! Though, I have also thought of an alternative to my own suggestion, too: if the data provision instead means that dependencies are (or could be) loaded in before full information is received on the tasks (&/or their associated jobs) included in the loaded dependency chain, we could as an intermediate state between entirely unloaded & fully loaded have a generic 'image & info' skeleton (like the one here, as a demo of this component) against displayed task nodes. |
I like the skeleton idea too (if it proves to be feasible ... but again, it could potentially be a follow-up improvement, after initial basic functionality is implemented) |
To answer the data provision questions above:
So an intermediate graph rendering isn't really possible, however the n-nodes solution should protect us against large graphs. Skeletons / placeholders with spinners / throbers as suggested above are probably the only option (dagre doesn't give progress information as far as I'm aware). I think I've captured this in #334, #332 and #329 which if accepted should be sufficient to close this. If anything is outstanding please say / raise another issue. |
I think Martin showed it can, sort-of, in Cytoscape - but it does not look very good! |
In the back end we (will) compute n=1, n=2 window etc. on demand. So, we could potentially page by "distance" from the active tasks. So, even if you want to see n=5, the UI could first quickly plot n=1, then n=2, while doing the more expensive n=5 layout in the background??? I don't know if that's feasible in reality, but it in principle it seems possible ... certainly not a high priority though, as the default n=1 window ought to be quite usable even for huge suites. |
Anyhow, generally speaking happy to close this. |
Nope that's the graph presentation layer, the layout engine (i.e. dagre) is still running over the whole workflow. |
Yes but I assumed you wouldn't have to run the layout again if using the presentation layer to bodge in few nodes in some whacky box on top of the original layout. But maybe I misunderstood (I didn't really bother much because the result didn't look useful). |
Shall we close this then, and come back later if a page-loading throbber isn't sufficient for large graphs? |
Fine by me. BTW I'm trying to split up some of the large umbrella issues like this one into bite-size tasks we can prioritise. |
Make tree items indent line up perfectly using relative units
Issue #87 covers design in the case where the full Cylc-to-UI system is working seamlessly or ':+1:' (ample standard workflow data exists & is coming through to the UI without any noticeable delay). But we should also capture & discuss what we want the UI to show for states where there is not true, which will undoubtedly occur & can be designed with the aim to inform & guide users in each case.
I think a separate Issue is best for this, as #87 already records a lot regarding the "ideal" path.
There are three main "off-the-ideal" umbrella cases (& they are summarised nicely in e.g. this UX blog post) & in our context, I anticipate they could emerge as follow:
gscan
-like sidebar;404
, e.g. when a URL is typed manually incorrectly or in rare cases where the whole UI is down;For each case above, we should try to put some consideration into the following aspects, at least:
cylc run
& it will appear here.")Please add thoughts &/or sketches on this topic here, or discuss on Riot & we can summarise here as appropriate.
The text was updated successfully, but these errors were encountered: