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

Initial thoughts on design #3

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,27 @@
# openEQUELLA-slideshow
Web component that leverages openEQUELLA content in a configurable slideshow

The slideshow displays images from oEQ items. To find the items to display, it leverages the search REST API of oEQ.

The slideshow allows 'in app' configuration of the search query to dynamically change the slideshow. Alternatively, the slideshow can be configured with a `search-query` property the handles the configuration.

For items with multiple images, the slideshow will iterate through all of them, displaying them one at a time.
Copy link
Member

Choose a reason for hiding this comment

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

A good starting point, something which will likely come up would be having multiple items, paging, and autoplay

uPortal's slideshow components ended up adding these by popular request
https://uportal-contrib.github.io/uPortal-web-components/en/components/dashboard-carousel/demo
https://uportal-contrib.github.io/uPortal-web-components/en/components/content-carousel/demo

https://glidejs.com and https://kenwheeler.github.io/slick offer some good options for creating these types of experiences.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I have a bit of experience with slick, zero with glidejs. I like glidejs in that it seems we wouldn't be tied into a framework. slick requires jquery. not necessarily bad, but gives me a bit of pause. Ideally, I'd like the main image to fill the screen with captions overlaid, and then have an optional carousel at the bottom to show prev / next. Not sure if either of those support that, I'll have to do some research.

Copy link
Member

@ChristianMurphy ChristianMurphy Jan 19, 2021

Choose a reason for hiding this comment

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

I like glidejs in that it seems we wouldn't be tied into a framework. slick requires jquery

Agreed, I'd prefer the solution to be jQuery free.

the main image to fill the screen with captions overlaid, and then have an optional carousel at the bottom to show prev / nex
Not sure if either of those support that

It likely can with some work, it's more what layer of abstraction would work best.
We could go higher level than glide or slick, with something like https://www.linxtion.com/demo/react-image-gallery, but it may be challenging to make it work with audio/video.
We could also go lower level, with something like https://www.react-spring.io/docs/hooks/use-springs or https://www.framer.com/api/motion/examples which give fine grained control/apis at the cost of needing to manage the animations, accessibility, and state.

I'll have to do some research.

More ideas, are welcome!
There are a ton of carousel and image gallery components/ui widgets out there.


To install the web component on a web page:
```javascript
<script src="https://some-hosted-site/oeq-slideshow.js"></script>
<div style="width:600;">
<oeq-slideshow
oeq-url="https://some-hosted-oeq-site/"
search-query="/api/search?q=keyword%20query&start=0&length=10&order=name&reverse=false&info=attachment&showall=false&status=LIVE">
Copy link
Member

Choose a reason for hiding this comment

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

I'd suggest rather than having a massive query string param, instead break the values out as needed - and there's no need to go as raw as having to enter /api/search?.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

makes sense 👍

</oeq-slideshow>
</div>
```

## Future goals
- Support audio files
Copy link
Member

Choose a reason for hiding this comment

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

- Support video files
Copy link
Member

Choose a reason for hiding this comment

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

https://plyr.io and https://videojs.com are slick, Kaltura also has some embedding features IIRC

- Display a caption (from a configurable metadata field)
- Display a link to directly go to the item whose content is being displayed
- Have the ability to pause the slideshow and update the metadata (which will be saved in oEQ) for the current piece of content
-