diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2025-11-04 09:30:41 -0400 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2025-11-04 09:30:41 -0400 |
| commit | dfc3fc5290cd73c3232a05c0cc6dd1edb4ed1477 (patch) | |
| tree | 9e6ba78a72f92179e1f8b4464e1675c02b9aae48 /src/content/dependencies/generateArtistInfoPageTracksChunk.js | |
| parent | d3b56134bc051f4786c60991da40346227dc65eb (diff) | |
content, css: always control offset-tooltip effect from content
Diffstat (limited to 'src/content/dependencies/generateArtistInfoPageTracksChunk.js')
| -rw-r--r-- | src/content/dependencies/generateArtistInfoPageTracksChunk.js | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/src/content/dependencies/generateArtistInfoPageTracksChunk.js b/src/content/dependencies/generateArtistInfoPageTracksChunk.js index ed3177b1..7d00fdd6 100644 --- a/src/content/dependencies/generateArtistInfoPageTracksChunk.js +++ b/src/content/dependencies/generateArtistInfoPageTracksChunk.js @@ -1,4 +1,5 @@ -import {unique} from '#sugar'; +import {sortAlbumsTracksChronologically} from '#sort'; +import {empty, unique} from '#sugar'; import {getTotalDuration} from '#wiki-data'; export default { @@ -18,7 +19,7 @@ export default { trackContribs)), }), - data(_artist, album, trackContribLists) { + data(artist, album, trackContribLists) { const data = {}; const contribs = @@ -43,6 +44,30 @@ export default { data.durationApproximate = durationTerms.length > 1; + const tracks = + trackContribLists.map(contribs => contribs[0].thing); + + data.numLinkingOtherReleases = + tracks.filter(track => { + if (empty(track.otherReleases)) return false; + + const releases = + sortAlbumsTracksChronologically(track.allReleases.slice()); + + // later releases always link to first release + if (track !== releases[0]) return true; + + // first releases only link to later credited releases + return tracks.slice(1).some(track => { + const contribs = [ + ...track.artistContribs, + ...track.contributorContribs, + ]; + + return contribs.some(contrib => contrib.artist === artist); + }); + }).length; + return data; }, @@ -56,6 +81,10 @@ export default { durationApproximate: data.durationApproximate, list: - html.tag('ul', relations.items), + html.tag('ul', + data.numLinkingOtherReleases > 1 && + {class: 'offset-tooltips'}, + + relations.items), }), }; |