Repository navigation
Replies: 1 comment 2 replies
|
I'm planning to pretty much remove I hadn't thought about additional filter options, so feel free to propose a PR to add those. |
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
A playlist of movies opens only as a list, while a collection of the same movies gets a poster grid with view options. For video playlists — "Top rated", "Halloween", a franchise in watch order — the list is the weaker view: small art, no view options, no way to filter by genre or parental rating, and the playlist can't be reached from the movie library it belongs to.
What I built in my fork (Jellyfin 12.2.0, NVIDIA Shield):
Grid / List toggle on the playlist. The playlist page gets a "Grid view" button; the grid is the existing collection page (
CollectionDetails) with a "List view" button back. The choice is remembered per playlist (per user,KeyValueService). Without a choice, video playlists (MediaType == Video) open as a grid, others as a list. In the grid the "Default" sort is the playlist order (BoxSetSortOptions), and Play / Shuffle go through the collection page's existing code. Reordering stays in the list view — a grid has no natural "up/down".Genre and parental rating filters for playlists, in both views. Today the playlist's filter menu has no "Genres" entry, and "Parental rating" opens to "No results". The server returns no filter values when the parent is a playlist:
GET /Genres?parentId=…(also withrecursive=true)GET /Items/Filters?parentId=…GET /Years?parentId=…Filtering itself works once the values are known (
genreIds={Drama}→ 36 of 100,years=1994→ 4), so only the option lists are missing. Year and decade already work in the app because they come from/Years. My guess is that playlist entries are linked children and the aggregate endpoints don't see them — not checked in the server source.The fix: for a playlist, collect genre, rating, year and decade values from its own items with one request (
/Items?parentId={playlist}&fields=Genres&enableImages=false&collapseBoxSetItems=false).FilterOptionCache.getFilterOptionValuesgets afromItemsflag (part of the cache key), andGenreFilterjoinsDefaultPlaylistItemsOptions. On the same 100-movie playlist: 22 genres, years from 1946, "Drama" → 36."Remove from playlist" in the grid's long-press menu, as the list already has since Add controls to edit playlists #1927. Shown only when the server says the user can edit the playlist (
GET /Playlists/{id}/Users/{userId}→CanEdit); reusesPlaylistCreator.removeFromServerPlaylist.A "Playlists" tab in movie and TV libraries, after Genres / Studios:
includeItemTypes=Playlist&recursive=trueunder the library. The server itself assigns a playlist to a library by its contents, and the web client's Playlists tab shows the same set (4 in my Movies library, 1 in Animation). The tab is added last so remembered tab indexes don't shift. A library with no playlists (TV, in my case) shows "No results" in the tab.New file
ui/detail/PlaylistPage.ktpicks betweenPlaylistDetailsandCollectionDetails; the rest are small parameters threaded through existing composables. About +370 lines in total.The diff also carries
collapseBoxSetItems = falsefor playlist queries — that's the fix for #912 (movies replaced by their box sets), proposed there on its own: #912 (comment).Checked on the Shield: the toggle and that it's remembered, grid order and description, genre and year filters in both views, the tab in Movies and TV, the "Remove from playlist" menu entry. Not yet: actually removing an item, Play / Shuffle from the grid, parental rating values on screen, music playlists, unit tests.
Questions for you:
Before/after screenshots below.
Before
After
Diff
All reactions