From c191171847198a911c63a8342746ff884dd3ed4a Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Thu, 11 Sep 2025 08:26:25 -0300 Subject: content, data: Album.showAlbumInTracksWithoutArtists --- .../dependencies/generateTrackReleaseInfo.js | 35 +++++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) (limited to 'src/content/dependencies/generateTrackReleaseInfo.js') diff --git a/src/content/dependencies/generateTrackReleaseInfo.js b/src/content/dependencies/generateTrackReleaseInfo.js index fa64ac22..45d47ecc 100644 --- a/src/content/dependencies/generateTrackReleaseInfo.js +++ b/src/content/dependencies/generateTrackReleaseInfo.js @@ -1,7 +1,10 @@ +import {compareArrays} from '#sugar'; + export default { contentDependencies: [ 'generateReleaseInfoContributionsLine', 'generateReleaseInfoListenLine', + 'linkAlbum', ], extraDependencies: ['html', 'language'], @@ -17,6 +20,9 @@ export default { relations.listenLine = relation('generateReleaseInfoListenLine', track); + relations.albumLink = + relation('linkAlbum', track.album); + return relations; }, @@ -27,6 +33,16 @@ export default { data.date = track.date; data.duration = track.duration; + const {album} = track; + + data.showAlbum = + album.showAlbumInTracksWithoutArtists && + track.artistContribs.every(({annotation}) => !annotation) && + compareArrays( + track.artistContribs.map(({artist}) => artist), + album.artistContribs.map(({artist}) => artist), + {checkOrder: true}); + if ( track.hasUniqueCoverArt && +track.coverArtDate !== +track.date @@ -45,10 +61,21 @@ export default { {[html.joinChildren]: html.tag('br')}, [ - relations.artistContributionsLine.slots({ - stringKey: capsule + '.by', - featuringStringKey: capsule + '.by.featuring', - chronologyKind: 'track', + language.encapsulate(capsule, 'by', capsule => { + const withAlbum = + (data.showAlbum ? '.withAlbum' : ''); + + const albumOptions = + (data.showAlbum ? {album: relations.albumLink} : {}); + + return relations.artistContributionsLine.slots({ + stringKey: capsule + withAlbum, + featuringStringKey: capsule + '.featuring' + withAlbum, + + additionalStringOptions: albumOptions, + + chronologyKind: 'track', + }); }), language.$(capsule, 'released', { -- cgit 1.3.0-6-gf8a5