diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2026-01-11 10:54:25 -0400 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2026-01-11 10:54:25 -0400 |
| commit | 8537d590ce070ef72317188e3b13a89b13b08d6c (patch) | |
| tree | ced92086f546525ec00a0f0ab8c3927055102797 /src/content | |
| parent | 578913e3b4fe95bc6589e0426c48843979bdad5e (diff) | |
content: gAIPTracksChunk{,Item}: album & track credits
Diffstat (limited to 'src/content')
| -rw-r--r-- | src/content/dependencies/generateArtistInfoPageTracksChunk.js | 25 | ||||
| -rw-r--r-- | src/content/dependencies/generateArtistInfoPageTracksChunkItem.js | 22 |
2 files changed, 35 insertions, 12 deletions
diff --git a/src/content/dependencies/generateArtistInfoPageTracksChunk.js b/src/content/dependencies/generateArtistInfoPageTracksChunk.js index d964c5de..ce8b284b 100644 --- a/src/content/dependencies/generateArtistInfoPageTracksChunk.js +++ b/src/content/dependencies/generateArtistInfoPageTracksChunk.js @@ -26,6 +26,9 @@ export default { albumLink: relation('linkAlbum', album), + albumArtistCredit: + relation('generateArtistCredit', album.artistContribs, []), + itemsCountingTowardTotals: query.contribListsCountingTowardTotals.map(trackContribs => relation('generateArtistInfoPageTracksChunkItem', @@ -91,10 +94,28 @@ export default { return data; }, - generate: (data, relations, {html}) => + generate: (data, relations, {html, language}) => relations.template.slots({ mode: 'album', - link: relations.albumLink, + + link: + language.encapsulate('artistPage.creditList.album', workingCapsule => { + const creditCapsule = workingCapsule + '.credit'; + const workingOptions = {album: relations.albumLink}; + + relations.albumArtistCredit.setSlots({ + normalStringKey: creditCapsule + '.by', + }); + + if (!html.isBlank(relations.albumArtistCredit)) { + workingCapsule += '.withCredit'; + workingOptions.credit = + html.tag('span', {class: 'by'}, + relations.albumArtistCredit); + } + + return language.$(workingCapsule, workingOptions); + }), dates: data.dates, duration: data.duration, diff --git a/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js b/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js index 9006dda9..bf334d75 100644 --- a/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js +++ b/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js @@ -91,6 +91,11 @@ export default { trackLink: relation('linkTrack', query.track), + trackListItem: + relation('generateTrackListItem', + query.track, + query.track.album.artistContribs), + rereleaseTooltip: (query.isLaterRelease ? relation('generateArtistInfoPageRereleaseTooltip', query.track, artist) @@ -131,16 +136,13 @@ export default { : html.blank()), content: - language.encapsulate('artistPage.creditList.entry.track', workingCapsule => { - const workingOptions = {track: relations.trackLink}; - - if (slots.showDuration && 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, + })), }), }), }; |