From 734b3dd38236f2021895856728737b419e7261c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Dardenne?= Date: Tue, 26 May 2020 22:58:27 +0200 Subject: [PATCH 1/2] Show track artists in the list view, except if the artists for all tracks match the album artists --- src/components/listview/listview.js | 14 ++------------ src/controllers/itemDetails/index.js | 13 +++++++++++-- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 11e8e953ae..8fb96f664d 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -370,18 +370,8 @@ import 'emby-playstatebutton'; } } } else { - let showArtist = options.artist === true; - const artistItems = item.ArtistItems; - - if (!showArtist && options.artist !== false) { - if (!artistItems || !artistItems.length) { - showArtist = true; - } else if (artistItems.length > 1 || !containerAlbumArtistIds.includes(artistItems[0].Id)) { - showArtist = true; - } - } - - if (showArtist) { + if (options.artist) { + const artistItems = item.ArtistItems; if (artistItems && item.Type !== 'MusicAlbum') { textlines.push(artistItems.map(a => { return a.Name; diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index b1781e75f0..e5154dcd88 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1337,16 +1337,25 @@ function renderChildren(page, item) { const childrenItemsContainer = page.querySelector('.childrenItemsContainer'); if (item.Type == 'MusicAlbum') { + const equalSet = (arr1, arr2) => arr1.every(x => arr2.indexOf(x) !== -1) && arr1.length === arr2.length; + let showArtist = false; + for (const track of result.Items) { + if (!equalSet(track.ArtistItems.map(x => x.Id), track.AlbumArtists.map(x => x.Id) )) { + showArtist = true; + break; + } + } + const discNumbers = result.Items.map(x => x.ParentIndexNumber); html = listView.getListViewHtml({ items: result.Items, smallIcon: true, - showIndex: true, + showIndex: new Set(discNumbers).size > 1 || (discNumbers.length >= 1 && discNumbers[0] > 1), index: 'disc', showIndexNumberLeft: true, playFromHere: true, action: 'playallfromhere', image: false, - artist: 'auto', + artist: showArtist, containerAlbumArtists: item.AlbumArtists }); isList = true; From 0be0faa0acb5975d945790dcc90c6bcc2791964a Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 31 Aug 2020 18:06:53 +0900 Subject: [PATCH 2/2] linting issue --- src/controllers/itemDetails/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index e5154dcd88..c1ec022e5a 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1340,7 +1340,7 @@ function renderChildren(page, item) { const equalSet = (arr1, arr2) => arr1.every(x => arr2.indexOf(x) !== -1) && arr1.length === arr2.length; let showArtist = false; for (const track of result.Items) { - if (!equalSet(track.ArtistItems.map(x => x.Id), track.AlbumArtists.map(x => x.Id) )) { + if (!equalSet(track.ArtistItems.map(x => x.Id), track.AlbumArtists.map(x => x.Id))) { showArtist = true; break; }