feat(tags): tag UX overhaul + per-card video reset
- Channel-row tags show only what's attached; a '+' opens a per-channel picker. Clicking a tag filters the feed by it; a 'Your tags' sidebar widget makes that filter visible/clearable. - Tag manager dialog (add/rename/delete; delete only confirms when the tag is in use), reachable from the Channel manager and the feed sidebar; hovering a tag's count lists its channels, each a link that focuses it in the Channel manager (DataTable gains an external filter input). - Video cards get a reset action that clears all watch state (incl. an in-progress position). - api.req() now raises the error dialog on 5xx and 400/409/422 with the server's reason.
This commit is contained in:
parent
b55a944e7c
commit
1e530d23a6
22 changed files with 445 additions and 49 deletions
|
|
@ -8,6 +8,7 @@
|
|||
"unhide": "Einblenden",
|
||||
"hide": "Ausblenden",
|
||||
"onlyThisChannel": "Nur dieser Kanal",
|
||||
"resetState": "Zurücksetzen — Fortschritt/Status löschen",
|
||||
"thisChannel": "Dieser Kanal",
|
||||
"continueTitle": "Dort fortsetzen, wo du aufgehört hast",
|
||||
"continue": "Fortsetzen",
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
},
|
||||
"tags": {
|
||||
"yourTags": "Deine Tags",
|
||||
"manage": "Tags verwalten",
|
||||
"yourTagsHint": "Deine persönlichen Labels. Hänge sie unten an Kanäle an und filtere den Feed dann über die Seitenleiste nach Tag. (Getrennt von den automatischen Sprach-/Themen-Tags.)",
|
||||
"newTag": "neuer Tag",
|
||||
"createTag": "Tag erstellen"
|
||||
|
|
@ -56,6 +57,7 @@
|
|||
"subs": "{{formatted}} Abonnenten",
|
||||
"openOnYouTube": "Auf YouTube öffnen",
|
||||
"editTags": "Tags bearbeiten",
|
||||
"filterFeedByTag": "Feed nach „{{name}}“ filtern",
|
||||
"priorityHint": "Deine Einstufung für diesen Kanal. Sortiere den Feed nach „Kanalpriorität“, um Kanäle mit höherer Priorität nach oben zu bringen.",
|
||||
"raisePriority": "Priorität erhöhen",
|
||||
"lowerPriority": "Priorität senken",
|
||||
|
|
@ -94,6 +96,7 @@
|
|||
"fullHistoryFailed": "Vollständiger Verlauf konnte nicht angefordert werden",
|
||||
"needYouTube": "Verbinde dein YouTube-Konto, um dies zu tun.",
|
||||
"connect": "Verbinden",
|
||||
"filteredByTag": "Feed nach Tag gefiltert: {{name}}",
|
||||
"resetDone": "Kanal zurückgesetzt — wird neu geladen",
|
||||
"resetFailed": "Kanal konnte nicht zurückgesetzt werden"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
"clearDates": "Daten löschen",
|
||||
"reshuffle": "Neu mischen",
|
||||
"noMatchingTags": "Keine passenden Tags",
|
||||
"manageTags": "Verwalten",
|
||||
"shareView": "Link zu dieser Ansicht kopieren",
|
||||
"shareCopied": "Ansichts-Link in die Zwischenablage kopiert",
|
||||
"shareFailed": "Link konnte nicht kopiert werden",
|
||||
|
|
@ -35,7 +36,8 @@
|
|||
"date": "Upload-Datum",
|
||||
"content": "Inhaltstyp",
|
||||
"language": "Sprache",
|
||||
"topic": "Thema"
|
||||
"topic": "Thema",
|
||||
"tags": "Deine Tags"
|
||||
},
|
||||
"show": {
|
||||
"unwatched": "Ungesehen",
|
||||
|
|
|
|||
12
frontend/src/i18n/locales/de/tagManager.json
Normal file
12
frontend/src/i18n/locales/de/tagManager.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"title": "Tags verwalten",
|
||||
"channels": "{{count}} Kan.",
|
||||
"onChannels": "Getaggte Kanäle",
|
||||
"delete": "Löschen",
|
||||
"deleted": "Tag gelöscht",
|
||||
"deleteTitle": "Tag löschen",
|
||||
"confirmDelete": "Tag „{{name}}“ löschen? Er wird von allen Kanälen entfernt, auf denen er liegt.",
|
||||
"empty": "Noch keine Tags — füge unten einen hinzu.",
|
||||
"newPlaceholder": "Neuer Tag-Name…",
|
||||
"add": "Hinzufügen"
|
||||
}
|
||||
|
|
@ -8,6 +8,7 @@
|
|||
"unhide": "Unhide",
|
||||
"hide": "Hide",
|
||||
"onlyThisChannel": "Only this channel",
|
||||
"resetState": "Reset — clear watch progress/status",
|
||||
"thisChannel": "This channel",
|
||||
"continueTitle": "Continue where you left off",
|
||||
"continue": "Continue",
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
},
|
||||
"tags": {
|
||||
"yourTags": "Your tags",
|
||||
"manage": "Manage tags",
|
||||
"yourTagsHint": "Your personal labels. Attach them to channels below, then filter the feed by tag from the sidebar. (Separate from the automatic language/topic tags.)",
|
||||
"newTag": "new tag",
|
||||
"createTag": "Create tag"
|
||||
|
|
@ -56,6 +57,7 @@
|
|||
"subs": "{{formatted}} subs",
|
||||
"openOnYouTube": "Open on YouTube",
|
||||
"editTags": "Edit tags",
|
||||
"filterFeedByTag": "Filter the feed by “{{name}}”",
|
||||
"priorityHint": "Your ranking for this channel. Sort the feed by “Channel priority” to bring higher-priority channels to the top.",
|
||||
"raisePriority": "Raise priority",
|
||||
"lowerPriority": "Lower priority",
|
||||
|
|
@ -94,6 +96,7 @@
|
|||
"fullHistoryFailed": "Couldn't request full history",
|
||||
"needYouTube": "Connect your YouTube account to do this.",
|
||||
"connect": "Connect",
|
||||
"filteredByTag": "Feed filtered by tag: {{name}}",
|
||||
"resetDone": "Channel reset — re-fetching now",
|
||||
"resetFailed": "Couldn't reset this channel"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
"clearDates": "clear dates",
|
||||
"reshuffle": "Reshuffle",
|
||||
"noMatchingTags": "No matching tags here",
|
||||
"manageTags": "Manage",
|
||||
"shareView": "Copy a link to this view",
|
||||
"shareCopied": "View link copied to clipboard",
|
||||
"shareFailed": "Couldn't copy the link",
|
||||
|
|
@ -35,7 +36,8 @@
|
|||
"date": "Upload date",
|
||||
"content": "Content type",
|
||||
"language": "Language",
|
||||
"topic": "Topic"
|
||||
"topic": "Topic",
|
||||
"tags": "Your tags"
|
||||
},
|
||||
"show": {
|
||||
"unwatched": "Unwatched",
|
||||
|
|
|
|||
12
frontend/src/i18n/locales/en/tagManager.json
Normal file
12
frontend/src/i18n/locales/en/tagManager.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"title": "Manage tags",
|
||||
"channels": "{{count}} ch.",
|
||||
"onChannels": "Tagged channels",
|
||||
"delete": "Delete",
|
||||
"deleted": "Tag deleted",
|
||||
"deleteTitle": "Delete tag",
|
||||
"confirmDelete": "Delete the tag “{{name}}”? It will be removed from every channel it's on.",
|
||||
"empty": "No tags yet — add one below.",
|
||||
"newPlaceholder": "New tag name…",
|
||||
"add": "Add"
|
||||
}
|
||||
|
|
@ -8,6 +8,7 @@
|
|||
"unhide": "Megjelenítés",
|
||||
"hide": "Elrejtés",
|
||||
"onlyThisChannel": "Csak ez a csatorna",
|
||||
"resetState": "Alaphelyzet — nézési előzmény/státusz törlése",
|
||||
"thisChannel": "Ez a csatorna",
|
||||
"continueTitle": "Folytatás ott, ahol abbahagytad",
|
||||
"continue": "Folytatás",
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
},
|
||||
"tags": {
|
||||
"yourTags": "Címkéid",
|
||||
"manage": "Címkék kezelése",
|
||||
"yourTagsHint": "Saját személyes címkéid. Csatold őket az alábbi csatornákhoz, majd szűrd a hírfolyamot címke szerint az oldalsávból. (Az automatikus nyelvi/téma címkéktől függetlenül.)",
|
||||
"newTag": "új címke",
|
||||
"createTag": "Címke létrehozása"
|
||||
|
|
@ -56,6 +57,7 @@
|
|||
"subs": "{{formatted}} feliratkozó",
|
||||
"openOnYouTube": "Megnyitás a YouTube-on",
|
||||
"editTags": "Címkék szerkesztése",
|
||||
"filterFeedByTag": "Hírfolyam szűrése: „{{name}}”",
|
||||
"priorityHint": "A te rangsorod ehhez a csatornához. Rendezd a hírfolyamot „Csatorna prioritás” szerint, hogy a magasabb prioritású csatornák felülre kerüljenek.",
|
||||
"raisePriority": "Prioritás növelése",
|
||||
"lowerPriority": "Prioritás csökkentése",
|
||||
|
|
@ -94,6 +96,7 @@
|
|||
"fullHistoryFailed": "Nem sikerült teljes előzményt kérni",
|
||||
"needYouTube": "Ehhez csatlakoztasd a YouTube-fiókod.",
|
||||
"connect": "Csatlakoztatás",
|
||||
"filteredByTag": "Hírfolyam szűrve címkére: {{name}}",
|
||||
"resetDone": "Csatorna resetelve — újraletöltés folyamatban",
|
||||
"resetFailed": "Nem sikerült resetelni a csatornát"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
"clearDates": "dátumok törlése",
|
||||
"reshuffle": "Újrakeverés",
|
||||
"noMatchingTags": "Nincs ide illő címke",
|
||||
"manageTags": "Kezelés",
|
||||
"shareView": "Hivatkozás másolása erre a nézetre",
|
||||
"shareCopied": "Nézet-hivatkozás a vágólapra másolva",
|
||||
"shareFailed": "Nem sikerült a hivatkozás másolása",
|
||||
|
|
@ -35,7 +36,8 @@
|
|||
"date": "Feltöltés dátuma",
|
||||
"content": "Tartalomtípus",
|
||||
"language": "Nyelv",
|
||||
"topic": "Téma"
|
||||
"topic": "Téma",
|
||||
"tags": "Saját címkék"
|
||||
},
|
||||
"show": {
|
||||
"unwatched": "Nem nézett",
|
||||
|
|
|
|||
12
frontend/src/i18n/locales/hu/tagManager.json
Normal file
12
frontend/src/i18n/locales/hu/tagManager.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"title": "Címkék kezelése",
|
||||
"channels": "{{count}} csat.",
|
||||
"onChannels": "Címkézett csatornák",
|
||||
"delete": "Törlés",
|
||||
"deleted": "Címke törölve",
|
||||
"deleteTitle": "Címke törlése",
|
||||
"confirmDelete": "Törlöd a(z) „{{name}}” címkét? Minden csatornáról lekerül, amin rajta van.",
|
||||
"empty": "Még nincs címke — adj hozzá lentebb.",
|
||||
"newPlaceholder": "Új címke neve…",
|
||||
"add": "Hozzáad"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue