diff options
Diffstat (limited to 'src/content/dependencies/generateArtistInfoPageTracksChunkItem.js')
| -rw-r--r-- | src/content/dependencies/generateArtistInfoPageTracksChunkItem.js | 49 |
1 files changed, 30 insertions, 19 deletions
diff --git a/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js b/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js index e976c57f..f53e0f81 100644 --- a/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js +++ b/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js @@ -10,9 +10,11 @@ export default { query.track = contribs[0].thing; - const creditedAsArtist = + const creditedAsNormalArtist = contribs - .some(contrib => contrib.thingProperty === 'artistContribs'); + .some(contrib => + contrib.thingProperty === 'artistContribs' && + contrib.annotation !== 'featuring'); const creditedAsContributor = contribs @@ -20,7 +22,9 @@ export default { const annotatedContribs = contribs - .filter(contrib => contrib.annotation); + .filter(contrib => + contrib.annotation && + contrib.annotation !== 'featuring'); const annotatedArtistContribs = annotatedContribs @@ -39,7 +43,7 @@ export default { // Return seemingly only for "bass clarinet" when they're also // the one who composed and arranged Renewed Return! if ( - creditedAsArtist && + creditedAsNormalArtist && creditedAsContributor && empty(annotatedArtistContribs) ) { @@ -84,15 +88,19 @@ export default { return query; }, - relations: (relation, query, artist, contribs) => ({ + relations: (relation, query, artist, _contribs) => ({ template: relation('generateArtistInfoPageChunkItem'), trackLink: relation('linkTrack', query.track), - otherArtistLinks: - relation('generateArtistInfoPageOtherArtistLinks', contribs), + trackListItem: + relation('generateTrackListItem', + query.track, + (empty(query.track.album.artistContribs) + ? [artist.mockSimpleContribution] + : query.track.album.artistContribs)), rereleaseTooltip: (query.isLaterRelease @@ -116,9 +124,15 @@ export default { : null), }), - generate: (data, relations, {html, language}) => + slots: { + showDuration: { + type: 'boolean', + default: true, + }, + }, + + generate: (data, relations, slots, {html, language}) => relations.template.slots({ - otherArtistLinks: relations.otherArtistLinks, rereleaseTooltip: relations.rereleaseTooltip, firstReleaseTooltip: relations.firstReleaseTooltip, @@ -128,16 +142,13 @@ export default { : html.blank()), content: - language.encapsulate('artistPage.creditList.entry.track', workingCapsule => { - const workingOptions = {track: relations.trackLink}; - - if (data.duration) { - workingCapsule += '.withDuration'; - workingOptions.duration = - language.formatDuration(data.duration); - } - - return language.$(workingCapsule, workingOptions); + language.$('artistPage.creditList.entry.track', { + track: + html.inside( + relations.trackListItem.slots({ + showArtists: 'auto', + showDuration: slots.showDuration, + })), }), }), }; |