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

File(s) import progress #1594

Closed
Gozala opened this issue Aug 18, 2020 · 14 comments
Closed

File(s) import progress #1594

Gozala opened this issue Aug 18, 2020 · 14 comments
Assignees
Labels
area/screen/files Issues related to Files screen effort/days Estimated to take multiple days, but less than a week exp/expert Having worked on the specific codebase is important kind/discussion Topical discussion; usually not changes to codebase kind/enhancement A net-new feature or improvement to an existing feature P1 High: Likely tackled by core team if no one steps up status/ready Ready to be worked topic/design-front-end Front-end implementation of UX/UI work
Milestone

Comments

@Gozala
Copy link
Contributor

Gozala commented Aug 18, 2020

Updated 21 September to consolidate notes below and OOB discussion.

The need

At present, UI upload drawer doesn't provide progressive feedback on file import until it gives notice at end whether import was successful or failed. This is particularly problematic for large files.

Solution

Let's mitigate this in two ways:

2. Import progress in drawer as originally proposed in #1495

Original plan in #1495 was to include a functional progress bar in the import drawer, as sketched out in Figma mockups here. When that wasn't technically possible at the time, we switched to an indefinite indicator. If we can now implement as originally planned, let's do so.
image

2. Inline, inactive display of in-progress imports in Files screen

Let's also implement (as a separate issue/PR if need be) the mitigation originally planned in this issue for giving inline feedback that a file is being imported as a grayed-out row in the Files screen. Mockup below.

image

Original issue notes

At the moment UI provides no visual feedback on file(s) import, until the very end when it succeeds or fails. Which is not a big deal for small files where it's spontaneous, but no feedback on large files leaves an impression of nothing happening. As per measurements in #1534 importing 2gig size file takes somewhere between 10 to 12 seconds.

Plan was to introduce a progress animation once ipfs/js-ipfs-utils#52 would be shipped, but it introduced regression and attempt to address it ipfs/js-ipfs-utils#60 was rejected due to increased complexity.

Lets consider / discuss all the available options to address lack of visual feedback on file imports given existing constraints to figure out path forward.

@Gozala Gozala added need/triage Needs initial labeling and prioritization kind/discussion Topical discussion; usually not changes to codebase need/analysis Needs further analysis before proceeding topic/design-front-end Front-end implementation of UX/UI work area/screen/files Issues related to Files screen labels Aug 18, 2020
@Gozala
Copy link
Contributor Author

Gozala commented Aug 18, 2020

I am personally inclined to take inspiration from popular systems e.g. dropbox / icloud:

Icloud

Will be available on demand (in the cloud)

image

Available locally / uploading to cloud

image

Fully replicate (available locally and in the cloud)

image

Dropbox

Synchronizing / Available locally

Screen Shot 2020-08-18 at 2 36 25 PM

In the systray

Screen Shot 2020-08-18 at 2 36 30 PM

Synchronized / Available everywhere

Screen Shot 2020-08-18 at 2 36 58 PM

@Gozala
Copy link
Contributor Author

Gozala commented Aug 18, 2020

The reason I like inline status indicator over approach we currently use is that it leaves an impression of fully functional directory, except it may not be fully synced / replicated.

@jessicaschilling jessicaschilling added exp/expert Having worked on the specific codebase is important effort/days Estimated to take multiple days, but less than a week kind/enhancement A net-new feature or improvement to an existing feature P1 High: Likely tackled by core team if no one steps up and removed need/triage Needs initial labeling and prioritization labels Aug 18, 2020
@jessicaschilling
Copy link
Contributor

Not proposing this as actual implementation -- but do want to get some visuals into this thread for the sake of discussion.

The iCloud approach of not displaying an indicator when something is fully replicated seems to be the right one to use here: we indicate the exception, not the rule, because in this case exceptions are truly exceptional both in terms of how often and for how long they exist. This seems particularly valid given that we're going to be adding a column with persistent status iconography (see screenshot) once pinning services are fully integrated.

Screenshot below mocks up one approach: hijacking the file-type icon position to indicate that a file is in the process of being added (the arrow itself isn't great, just a piece of another ipfs-css icon in there as an example). Not sure if this is the right direction -- it may be replacing one thing with another thing that has too different of a meaning -- but wanted to include it here to illustrate that we've got a fairly limited amount of cognitive space available in the Files screen when it comes to adding indicators. Our options are either to add a new position/affordance for this indicator, or have it temporarily take the place of something else. Discuss?

image

@Gozala
Copy link
Contributor Author

Gozala commented Aug 22, 2020

Thanks @jessicaschilling for the mock, it does help to visualize it. Few notes / questions

  • The iCloud approach of not displaying an indicator when something is fully replicated seems to be the right one to use here

    Could not agree more! In comparison Dropbox demonstrating prominent indicators feels really noisy.

  • Can "pin status" be generalized to "status" ?

    • Seems like a natural place to indicate "importing in progress", which is also visually where icloud / dropbox place their indicators.
    • Files that are being imported, can't be pinned, so it will not conflict.
  • We don't know the CID of the file until it's is imported

    • So we can't display it during import
    • Maybe that some space for visual feedback.
  • We don't know the size until it's done improted

@jessicaschilling
Copy link
Contributor

jessicaschilling commented Aug 24, 2020

  • We don't know the CID of the file until it's is imported
    • So we can't display it during import
    • Maybe that some space for visual feedback.
  • We don't know the size until it's done imported

Ah, right: I'd suggest this actually gives us an intuitive and dedicated affordance, particularly if the user can't actually click on the file until it's been fully imported. See below. (If it's possible to click/right-click the table row while it's importing, we can't fully gray out the row as indicated below, but I think the metaphor still holds even if the file name and icon were "full strength".)

If we wanted to be really fancy we could animate the ellipses for "Adding..."

image

@Gozala
Copy link
Contributor Author

Gozala commented Aug 24, 2020

if the user can't actually click on the file until it's been fully imported

We could still technically allow to

  • view
  • rename
  • move

Such files, but not the other actions.

@jessicaschilling

This comment has been minimized.

@jessicaschilling
Copy link
Contributor

Per chat with @lidel and @rafaelramalho19 - let's actually just gray the whole row out, and disable the dots. While you can technically rename a file, that all happens in userland and gets weird if you then close your window before import completes.

@lidel lidel added status/ready Ready to be worked and removed need/analysis Needs further analysis before proceeding labels Aug 25, 2020
@jessicaschilling
Copy link
Contributor

Assigning to @rafaelramalho19 and @Gozala for next-steps talk in implementation!

@jessicaschilling jessicaschilling added this to the v2.12 milestone Sep 8, 2020
@lidel
Copy link
Member

lidel commented Sep 17, 2020

I was able to import 2GB file with v2.11, but it took a few moments – there is def. a need for some visual feedback.
@Gozala is this blocked by #1589? Are there any external PRs that need to land first?

@Gozala
Copy link
Contributor Author

Gozala commented Sep 17, 2020

@Gozala is this blocked by #1589?

Not blocked on it, but landing that first would be my preference if possible.

Are there any external PRs that need to land first?

It is blocked on ipfs/js-ipfs-utils#60
Which was in turn blocked by ipfs/go-ipfs-cmds#201

I'll try to figure out if we could land the ipfs/js-ipfs-utils#60 to unblock this.

@jessicaschilling
Copy link
Contributor

Per our discussion today, updated this issue's original comment to include both the inactive "Adding..." row in the Files screen, and the original requirement for functional progress indicators in the import drawer as proposed but not implemented in #1495.

@lidel
Copy link
Member

lidel commented Apr 14, 2021

IIRC progress reporting was implemented and closed by #1495 ❤️
I just confirmed it works with 2GB file.

@jessicaschilling the implementation that landed does not include inactive "Adding..." row in the Files screen, however ongoing import is indicated via drawer at the bottom, with % progress bar. Is it good enough or should we fill issue for remaining work? (note, it won't happen any time soon)

@lidel lidel closed this as completed Apr 14, 2021
@jessicaschilling
Copy link
Contributor

I think it's fine to leave as is. Would rather add a new issue if the need comes up later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/screen/files Issues related to Files screen effort/days Estimated to take multiple days, but less than a week exp/expert Having worked on the specific codebase is important kind/discussion Topical discussion; usually not changes to codebase kind/enhancement A net-new feature or improvement to an existing feature P1 High: Likely tackled by core team if no one steps up status/ready Ready to be worked topic/design-front-end Front-end implementation of UX/UI work
Projects
None yet
Development

No branches or pull requests

4 participants