feat(plex): grouped collapsible playlist view + drag-and-drop + bulk add

Playlist view now groups a run of episodes from the same show into a
collapsible season/show block so a whole series doesn't sprawl into an
endless flat list; movies stay standalone (larger poster card in the
accordion). Two per-account layouts — Accordion and Tree — persisted via
LS.plexPlaylistLayout; show groups start collapsed. Reorder is drag &
drop (@dnd-kit): a show block moves as one unit, episodes reorder within
their show, keyboard-draggable via KeyboardSensor. Remove works per item,
per season, or per whole show. The add-to-playlist dialog is generalised
to a single leaf or a whole group (tri-state none/some/all with an in/size
count); the show page gains add buttons for an episode, a season, and the
whole show. i18n en/hu/de.
This commit is contained in:
npeter83 2026-07-06 22:14:56 +02:00
parent e6b22f971a
commit 2ef22982bb
9 changed files with 603 additions and 139 deletions

View file

@ -158,7 +158,8 @@
"newPlaceholder": "New playlist name…",
"create": "Create",
"none": "No playlists yet. Create one above.",
"count": "{{count}} items"
"count": "{{count}} items",
"groupProgress": "{{in}} / {{size}}"
},
"playlist": {
"section": "Playlists",
@ -172,6 +173,16 @@
"empty": "This playlist is empty. Add titles from their info page.",
"up": "Move up",
"down": "Move down",
"remove": "Remove"
"remove": "Remove",
"layoutAccordion": "Accordion view",
"layoutTree": "Tree view",
"removeShow": "Remove whole show",
"removeSeason": "Remove whole season",
"episodes": "{{count}} episodes",
"season": "Season {{n}}",
"seasonUnknown": "Episodes",
"addShow": "Add whole show to a playlist",
"addSeason": "Add season to a playlist",
"addEpisode": "Add episode to a playlist"
}
}