Add series management pages#1313
Conversation
This comment has been minimized.
This comment has been minimized.
This comment was marked as resolved.
This comment was marked as resolved.
|
@owi92 I like seeing the progress here! 😍 |
This comment was marked as resolved.
This comment was marked as resolved.
0380207 to
f86eb3f
Compare
This comment was marked as resolved.
This comment was marked as resolved.
1d7245d to
e9085c7
Compare
This refactors the metadata form to be more generic. Again, it's a tradeoff between limiting duplication and making the code more complicated. I also changed the naming convention of the series/video details and access pages to use more specific names, which will hopefully be less confusing.
This repurposes the `delete` endpoint previously used by events, and basically mirrors everything done when an event is deleted. This means the series table is renamed to `all_series` and gets a field `tobiraDeletionTimestamp`, which is used to mark a series as deleted. The original series table is moved to a view. When a series is deleted in Tobira, the timestamp is saved and series marked as deleted, but still present in Opencast get a special entry in the `My series` table. Every other place uses the series view without deleted series. When the series is actually deleted in Opencast and removed from the DB with sync, the entry from the `My series` table also disappears.
This, once again, is a bunch of generalization to leverage the fact that we already have basically all that is needed for this. While that makes it sound relatively simple, this was still a lot of work, mostly to not just copy everything but factor out as much as possible and make it usable for both events and series, and possibly also playlists in the future. There are still some things that need ironing out: - There is a deserialization error where postgres complains about a null value - The translation/i18n doesn't seem to be working correctly for all cases
This page uses the `series_by_id` api, which doesn't use the new `thumbnailStack` field. It could, but that would need some additional mapping in backend and should then probably also be used in all other places that need a series thumbnail. That would have the added benefit of these thumbnails always having the same order everywhere. Right now, that's not given since the only place the `thumbnailStack` is used as of now orders them in backend by their creation date (ascending), which we don't do for the other occurences that are mapped in frontend.
So this is super annoying. The endpoint in opencast will start `republish metadata` workflows for each event in the series. This takes roughly 10 second **per video**. Not in parallel but.. in.. series (pun intended? idk). So long story short, it could take several minutes to return, at which point it probably just responds with a `503`. The series is still being deleted though, so I don't know how to handle that case. Anyway, this workaround will send the request, mark the series as deleted and then just return without waiting. If it fails, it will **eventually** become apparent, but until then it's just showing as `deletion pending`, or sth. Actually, depending on the configured interval, it will already show `deletion failed` after a couple of minutes or sooner, when the "deletion process" is still running in Opencast. So all in all a poor solution but idk what else to do here other than an Opencast rewrite™.
This could also be used for other purposes, but is currently only used for displaying a message on the "My series" table when a series gets deleted. The notification will clear when the user navigates away from the table. This commit also fixes the table layout on narrow screens. Previously, the table would squish the "Title" column and overlap it with the one right next to it. Now each column uses a fixed width on smaller screens and adds a scrollbar, it it gets too crammed.
All this did was provide a timeout option and some states that weren't even used in all cases. That really wasn't worth the added complexity. The timeout was moved to the `SubmitButtonWithStatus` and when the states are really needed, they can be added in the parent component that uses them.
These messages were nearly the same and a while a generalization loses some specificity, that isn't a big deal imo. It's not that helpful to be told "changing ACL didn't work" instead of "This action didn't work" when I just tried to change the ACL and the error message is shown on that same page.
yes
not sure. I kinda prefer the exact dates without 30 tooltips, but using the
no. I've been meaning to fix that for a while, thanks for the reminder.
yes. But it's actually kind of annoying. Using the |
Instead of showing the exact date and time an item was created and updated, this now show something simpler like "3 days ago" or sth. The exact dates can still be inspected as tooltips by hovering over the dates.
There was a mismatch between the order in thumbnail stacks on the series table, where they were ordered by their creation date, and their order in search results and on the series details/acl pages. Adapting the table order on the management pages is simple but it's another thing with search results. For this we would need to write a new db migration, which is certainly possible but a little annoying. So for now, this just removes the ordering on the series table, even though I would rather prefer to apply it in the other places. TBD.
LukasKalbertodt
left a comment
There was a problem hiding this comment.
Lets get this beast merged :D
Step 3 in adding features for proper series management. This adds a new page and UI to create a series in Tobira and Opencast. The UI allows setting title, description and ACL for the series. Next steps: - [x] adding/removing videos (#1365) - [x] deleting series (done in #1313) - [x] editing metadata (at least title, description) (done in #1313) Based on #1313
Step 2 in adding proper series management.
Adds series details and acl pages, making sure all new and/or refactored components can also be used for playlists later on.
Resolves #1366
Based on #1311
Step 3 will then be more API related stuff, adding creation and content editing.
Edit: I added metadata editing here, and plan on also adding the delete function in this pull request. So, todos for this PR:
This is currently brokenNeed to fix'unwrapped an unloaded LazyLoad'error with series thumbnail on details page.*@Reviewer (is that a real user??): Once again, this is unfortunately probably better to review file-by-file, though it might still be useful to read the commit messages.