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

Revise user experience for history import and export. #11054

Merged
merged 2 commits into from
Jan 12, 2021

Conversation

jmchilton
Copy link
Member

@jmchilton jmchilton commented Jan 5, 2021

  • Revised history import and export, all in Vue and with high-level unit tests for both.
  • Works with new and old history panel.
  • Enables importing and exporting to remote files (galaxy.files plugins) - hopefully importing and exporting to FTP is more stable, should enable exporting histories on AnVIL.
  • Substantially more input, better error handling than previous implementations. Access to job information to debug errors and track progress, better descriptions or links generated, links generated with a JEHA id encoded in them so they are much more robust than the links that required history to not be updated after last export.
  • Reduced legacy controller code in lieu of API code.
  • Icon to copy the export URL to clipboard.

Some screenshots

For existing functionality of exporting to link, it now shows out of data exports that can be used as is or allows for generation of another export.

Screen Shot 2021-01-06 at 4 13 08 PM

Slightly different text for updated history exports. This was generated by clicking that link previously and waiting for the job to complete.

Screen Shot 2021-01-06 at 4 43 10 PM

Information about when the export was generated and other job info useful for debugging is reachable from the link.

Screen Shot 2021-01-06 at 4 43 24 PM

Re-using the copy functionality with the the link icon requested by @afgane.

Screen Shot 2021-01-06 at 4 43 32 PM

Can now export to "Remote Files" (galaxy.files plugins - including FTP and user's library directory if they are configured as writable).

Screen Shot 2021-01-06 at 4 43 46 PM

On export, job is monitored.

Screen Shot 2021-01-06 at 4 43 52 PM

Revised the language here to be more optimistic as suggested by @afgane.

Screen Shot 2021-01-06 at 4 44 01 PM

Also re-did history import panel. Three different options can be selected via radio buttons (previously both conflicting options were just shown).

Screen Shot 2021-01-06 at 4 44 47 PM

File selection dialog can now be used, searching works:

Screen Shot 2021-01-06 at 4 45 07 PM

Selected files appear as follows.

Screen Shot 2021-01-06 at 4 45 17 PM

Completed import looks like this:

Screen Shot 2021-01-06 at 4 45 28 PM

Problematic history import provides feedback now (nothing would be shown before - you'd just be sent back to the histories when it started and you'd have to hope eventually your new history would appear). You can see the standard error (initially collapsed but expandable as shown below.

Screen Shot 2021-01-06 at 4 45 58 PM

You can also click to view more information on the failed job if the import fails.

Screen Shot 2021-01-06 at 4 46 04 PM

@github-actions github-actions bot added this to the 21.01 milestone Jan 5, 2021
@jmchilton jmchilton changed the title Implement history export dialog. Implement history export panel. Jan 5, 2021
Copy link
Contributor

@afgane afgane left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will this work with any plugin defined in Galaxy (eg, S3, fa-anvil) or do are changes required to those plugins?

A couple of minor wording comments but this is excellent.

client/src/components/HistoryExport/ToLink.vue Outdated Show resolved Hide resolved
if (!this.hasExports) {
return `no history export ever initiated for this history`;
} else if (!this.latestExport.up_to_date) {
return `previous history export not up-to-date (history has changed since export was generated)`;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the list of earlier exports available or kept? Listing those here sorted by date & time would be great. If not, explicitly saying that any earlier export if no longer available would be good for clarity.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah - it is unexposed here - this seems like a step forward but I think we actually can produce links for older exports that have been generated. I was imagining like a "See Older Exports" button that would pop up a table. We could show the exports, job lists, etc...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I modified the API response so I can get the information needed from those older exports. It now shows the latest available history export that is ready and I verified the older links seem to work. Info about when it was generated is available through the job information - which I've included a screenshot of. It is an extra click but it is all now information that is available.

As for the even older downloads - are those useful? I don't think anyone would want them right - they are not named or tagged in any interested way. If you want, I'd suggest we put it on the roadmap for Q2 rather then baking it into this PR which is a substantial improvement.

client/src/components/HistoryExport/ToLink.vue Outdated Show resolved Hide resolved
client/src/components/HistoryExport/ToRemoteFile.vue Outdated Show resolved Hide resolved
@jmchilton
Copy link
Member Author

Will this work with any plugin defined in Galaxy (eg, S3, fa-anvil) or do are changes required to those plugins?

I believe so, they seem to implement the _write_from on the interface, it is the same method that I use for the posix stuff.

https://github.com/galaxyproject/galaxy/blob/dev/lib/galaxy/files/sources/_pyfilesystem2.py#L45

@jmchilton jmchilton changed the title Implement history export panel. [WIP] Implement history export panel. Jan 6, 2021
@jmchilton jmchilton force-pushed the history_export_ui branch 4 times, most recently from c84d6ef to 8e2345f Compare January 6, 2021 21:04
@jmchilton jmchilton changed the title [WIP] Implement history export panel. Revise user experience for history import and export. Jan 6, 2021
@jmchilton
Copy link
Member Author

Given all the questions around my skepticism that these links work consistently - I've taken another pass at this and folded history import in as well. There is now a lot more feedback about what is happening and information about the jobs are now all navigable by the user. This should help debug problems that occur, help convey issues to admins, help them understand when the import or export process is still running and therefore why no results are available. All of these were issues before I think - and substantial ones.

<span>
<b
><a :href="link">{{ link }}</a></b
>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor issue, but the tag formatting seems inconsistent?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't do formatting, this is all prettier's doing I think.

Copy link
Member

@mvdbeek mvdbeek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Except for the small hiccup with export to link this is looking great!

client/src/components/JobStates/wait.js Outdated Show resolved Hide resolved
lib/galaxy/webapps/galaxy/api/histories.py Outdated Show resolved Hide resolved
- Provide a lot more context on what is and has happened to users during both import and export process.
- Allow import and export to galaxy file plugins.
</div>
<!-- TODO: modal for reporting error. -->
</b-card-text>
<b-modal v-model="showInfo" scrollable ok-only>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

b-modal leaves space for a title, we should maybe optionally disable the title in the JobInformation component and set a title here instead. That would probably look better than this:
Screenshot 2021-01-12 at 12 15 59

@mvdbeek
Copy link
Member

mvdbeek commented Jan 12, 2021

I also noticed that imported histories show up in the multi-history view, but not in the old histories view ... doesn't feel related to this PR, but that is bad UX.

@mvdbeek mvdbeek merged commit 68839d4 into galaxyproject:dev Jan 12, 2021
@jmchilton
Copy link
Member Author

imported histories show up in the multi-history view, but not in the old histories view

😱 that seems terrible. I've added that to my bugs to look into during this release stabilization.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants