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

Placeholders for remote resources #39

Open
aeschylus opened this issue Feb 14, 2019 · 0 comments
Open

Placeholders for remote resources #39

aeschylus opened this issue Feb 14, 2019 · 0 comments

Comments

@aeschylus
Copy link
Contributor

aeschylus commented Feb 14, 2019

There are quite a few remote resources coming in all the time with different UI representations. Right now some have placeholders and some don't, and soon we'll need some design guidance to start thinking through the technical implementation. I will try to list all those I can think of here, with some context. As a general approach to these interactions, I'll propose the following requirements for asynchronous resources (feel free to say otherwise though):

  1. Any user action should produce an immediate result in the UI.
  2. The resulting UI change should communicate the eventual result of having initiated this request for remote data, for example, by placing a stand-in shape for the UI element that will eventually present the data.
  3. As far as possible, placeholders should exhibit object constancy, approximating the shape, layout, and size of the objects they represent, avoiding flickering, teleportation, disappearing, or other disorienting effects.
  4. Placeholders should have all states of the request represented. (initial, pending, received, rendered, failed)
  5. Elements should provide pleasant and unobtrusive transitions between the request states, to avoid the jarring visual effect of text, icons, or shapes suddenly jumping in and out of existence.

Objects with Asynchronous States

Windows

When the user opens a window, the manifest might still have to load. So the title, index information, and thumbnail outline (number of canvases, their size and order) will not be available. But the containing box and some interface elements can still be rendered. #1748 comment

Image Canvas

Initially, it will be blank when advancing the page or opening a window until the initial tiles have loaded.

Thumbnail Strip Thumbnails

Annotation Pages

Search Results (and result pages)

Manifests in the Catalogue

There is some added complication of having the url and no other data on initial load, possibly with location information(?) #1834 comments.

Canvas Thumbnails in the Catalogue

Proxy Representations

Some UI elements serve as proxies for "real" elements, and may have their own request state in addition to representing the request state of a different resource.

Image Layer Thumbnails

Image layers have a thumbnail to represent the canvas sub-resource they control, but they also need to show the loading state of the layer they represent. See the Mirador 2 advanced features demo for an example of this. Layers Demo

Annotation List Segments

This depends on the implementation, but thumbnails of annotation regions might have a different request cycle than the annotations themselves, so this should

Global States with Asynchronous Aspects

There are some other, less object-specific asynchronous states of a more abstract or global nature, such as potential auth states (depending on how those eventually get designed). Here are some that might be relevant.

  • The openseadragon canvas is not fully rendered on zoom (still waiting for some tiles to render). Do we want some type of understated spinner or status indicator the user can usually ignore, but check if they're not sure whether the image is just low-res or still loading?
  • Collection pages need to be retrieved before the list can be rendered in the catalogue area, or TOC area of windows (for multi-volume works(?)).
  • The initial load of the workspace is still retrieving resources it needs to begin building (depends on implementation details). For example, if we decide to load manifests before populating a crowded workspace with blank windows, or if there is a remote config that needs to be retrieved.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant