From d01cfa498b5f3d8b8fb3996aa1cf4949b7cd0bd6 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 4 Sep 2024 08:39:10 -0400 Subject: [PATCH 1/3] Add tag support to list view --- src/components/router/appRouter.js | 10 ++++++++++ src/controllers/itemDetails/index.js | 11 ++++++++--- src/controllers/list.js | 9 +++++++-- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/components/router/appRouter.js b/src/components/router/appRouter.js index 5688ecd6032..9ce5616d6a7 100644 --- a/src/components/router/appRouter.js +++ b/src/components/router/appRouter.js @@ -673,6 +673,16 @@ class AppRouter { return url; } + if (item === 'tag') { + url = `#/list.html?tag=${encodeURIComponent(options.tag)}&serverId=${serverId}`; + + if (options.parentId) { + url += '&parentId=' + options.parentId; + } + + return url; + } + if (context !== 'folders' && !itemHelper.isLocalItem(item)) { if (item.CollectionType == CollectionType.Movies) { url = `#/movies.html?topParentId=${item.Id}&collectionType=${item.CollectionType}`; diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 56ef667d537..1611394b5ae 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1080,7 +1080,7 @@ function renderDetails(page, item, apiClient, context) { renderLinks(page, item); } - renderTags(page, item); + renderTags(page, item, context); renderSeriesAirTime(page, item); } @@ -1299,7 +1299,7 @@ function renderSeriesAirTime(page, item) { } } -function renderTags(page, item) { +function renderTags(page, item, context) { const itemTags = page.querySelector('.itemTags'); const tagElements = []; let tags = item.Tags || []; @@ -1309,8 +1309,13 @@ function renderTags(page, item) { } tags.forEach(tag => { + const href = appRouter.getRouteUrl('tag', { + context, + tag, + serverId: item.ServerId + }); tagElements.push( - `` + `` + escapeHtml(tag) + '' ); diff --git a/src/controllers/list.js b/src/controllers/list.js index 02da709c034..ab0a96c659a 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -284,7 +284,8 @@ function getItems(instance, params, item, sortBy, startIndex, limit) { Recursive: true, IsFavorite: params.IsFavorite === 'true' || null, ArtistIds: params.artistId || null, - SortBy: sortBy + SortBy: sortBy, + Tags: params.tag || null })); } @@ -333,7 +334,7 @@ function getItems(instance, params, item, sortBy, startIndex, limit) { } function getItem(params) { - if (params.type === 'Recordings' || params.type === 'Programs' || params.type === 'nextup') { + if ([ 'Recordings', 'Programs', 'nextup' ].includes(params.type) || params.tag) { return Promise.resolve(null); } @@ -726,6 +727,10 @@ class ItemsView { if (params.type === 'Video') { return globalize.translate('Videos'); } + + if (params.tag) { + return params.tag; + } } function play() { From b11f4fa4b1a1ee51ab61605f0ecbcc903c5f65a7 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 4 Sep 2024 11:55:18 -0400 Subject: [PATCH 2/3] Add tag type for list view --- src/components/router/appRouter.js | 2 +- src/controllers/list.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/router/appRouter.js b/src/components/router/appRouter.js index 9ce5616d6a7..e871448160c 100644 --- a/src/components/router/appRouter.js +++ b/src/components/router/appRouter.js @@ -674,7 +674,7 @@ class AppRouter { } if (item === 'tag') { - url = `#/list.html?tag=${encodeURIComponent(options.tag)}&serverId=${serverId}`; + url = `#/list.html?type=tag&tag=${encodeURIComponent(options.tag)}&serverId=${serverId}`; if (options.parentId) { url += '&parentId=' + options.parentId; diff --git a/src/controllers/list.js b/src/controllers/list.js index ab0a96c659a..9df69c4ed11 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -334,7 +334,7 @@ function getItems(instance, params, item, sortBy, startIndex, limit) { } function getItem(params) { - if ([ 'Recordings', 'Programs', 'nextup' ].includes(params.type) || params.tag) { + if ([ 'Recordings', 'Programs', 'nextup', 'tag' ].includes(params.type)) { return Promise.resolve(null); } @@ -1208,7 +1208,7 @@ class ItemsView { showTitle = true; } else if (showTitle === 'false') { showTitle = false; - } else if (params.type === 'Programs' || params.type === 'Recordings' || params.type === 'Person' || params.type === 'nextup' || params.type === 'Audio' || params.type === 'MusicAlbum' || params.type === 'MusicArtist') { + } else if ([ 'Audio', 'MusicAlbum', 'MusicArtist', 'Person', 'Programs', 'Recordings', 'nextup', 'tag' ].includes(params.type)) { showTitle = true; } else if (item && item.Type !== 'PhotoAlbum') { showTitle = true; @@ -1225,7 +1225,7 @@ class ItemsView { } return { - showTitle: showTitle, + showTitle, showYear: userSettings.get(basekey + '-showYear') !== 'false', imageType: imageType || 'primary', viewType: userSettings.get(basekey + '-viewType') || 'images' From ce182d286b934cdf6ce26d1818f2c5eac2220b80 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Sat, 7 Sep 2024 01:54:55 -0400 Subject: [PATCH 3/3] Remove unused context variable --- src/controllers/itemDetails/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 1611394b5ae..ae4cc953b6b 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1080,7 +1080,7 @@ function renderDetails(page, item, apiClient, context) { renderLinks(page, item); } - renderTags(page, item, context); + renderTags(page, item); renderSeriesAirTime(page, item); } @@ -1299,7 +1299,7 @@ function renderSeriesAirTime(page, item) { } } -function renderTags(page, item, context) { +function renderTags(page, item) { const itemTags = page.querySelector('.itemTags'); const tagElements = []; let tags = item.Tags || []; @@ -1310,7 +1310,6 @@ function renderTags(page, item, context) { tags.forEach(tag => { const href = appRouter.getRouteUrl('tag', { - context, tag, serverId: item.ServerId });