pulibrary / figgy

Valkyrie-based digital repository backend.
Other
36 stars 4 forks source link

Replace BrowseEverything #5318

Closed tpendragon closed 1 year ago

tpendragon commented 2 years ago

We're running off of a branch which is a major version that may never get released, and the strategy of copying files locally during the browser session is resulting in being unable to upload large files from the Isilon.

Look at this when we remove it: https://github.com/pulibrary/figgy/pull/5315/files#diff-c1fd91cb1911a0512578b99f657554526f3e1421decdb9e908712beab57e10f9R61-R63

hackartisan commented 2 years ago

Implications of this change:

hackartisan commented 2 years ago

This issue blocks migration away from webpacker because of an implementation detail in the browse everything react code

hackartisan commented 2 years ago

A first step might be removing the google drive feature.

hackartisan commented 2 years ago

Datadog keeps logs for 2 weeks. There are no logs showing an attempt to use google drive in the past 2 weeks: https://app.datadoghq.com/logs?query=service%3Afiggy%20%20%2Fbrowse%2Fproviders%2Fgoogle_drive%2Fauthorize&cols=host%2Cservice&index=&messageDisplay=inline&stream_sort=time%2Cdesc&viz=stream&from_ts=1663699135003&to_ts=1666291135003&live=true (vs file system: https://app.datadoghq.com/logs?query=service%3Afiggy%20%2Fbrowse%2Fproviders%2Ffast_file_system%2Fauthorize&cols=host%2Cservice&index=&messageDisplay=inline&stream_sort=time%2Cdesc&viz=stream&from_ts=1663699135003&to_ts=1666291135003&live=true). Note that this path, I believe, shows that someone selected that file source from the dropdown, not that they necessarily uploaded something with it. But it's the best I could find.

We lost the google analytics tracker in early August, but even when it was in place I don't think these browse everything routes render the layout so they don't get logged. I looked at may-june and I'm not seeing any stats on /browse.

I don't really think 2 weeks is long enough to conclude the feature's not in use.

hackartisan commented 2 years ago

@kelea99 says we can go forward with removing google drive. It has never worked very well and she's not aware of anyone using this ingest workflow. Kim will announce in the digital_library channel.

hackartisan commented 1 year ago

Replacements proposed:

hackartisan commented 1 year ago

re: vue finder, this looks relevant: https://github.com/jledentu/vue-finder/issues/190

hackartisan commented 1 year ago

Looking more at https://vue-finder.netlify.app/examples.html#basic-example. Maybe we can use the expand event instead of the selected event. The expand event does emit on leaf nodes. We still want to be able to select multiple files, so we would enable select on leaf nodes.

We could combine this with an info pane that autofills to ensure user has clarity on what they're about to ingest. Also use multiple hidden inputs so multiple file selection submits as an array.

Alternately. What if we write our own thing. We don't have a dependency on an external library that could cause us update headaches down the road. What if, for every node, you could define the label, who the children are, and whether it's selectable. This means ruby can say "this one will not ingest correctly"

Pros of writing our own thing:

decision: use our own vue component.

UI decisions still TBD. We know that the current UI has caused confusion and errors:

Some UI options we've discussed:

Particular UI considerations:

hackartisan commented 1 year ago

Mockups:

Implementation notes:

All data is held in the root/container. The child components fire events up and the container component manages the data updates.

Some outstanding questions:

hackartisan commented 1 year ago

ruby side: don't provide hidden files via api endpoint.

tpendragon commented 1 year ago

Current state:

Most of above is done. I did a regular JSON endpoint instead of GraphQL because it was just really, really easy. Bulk ingest is fully replaced.

There's a lot of styling that could be done and the file ingest portion needs done, which is the most complicated part.