From dfc3fc5290cd73c3232a05c0cc6dd1edb4ed1477 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 4 Nov 2025 09:30:41 -0400 Subject: content, css: always control offset-tooltip effect from content --- .../generateArtistInfoPageTracksChunk.js | 35 ++++++++++++++++++++-- .../dependencies/generateContributionList.js | 3 ++ .../generateGroupInfoPageAlbumsListByDate.js | 3 ++ .../generateGroupInfoPageAlbumsListBySeries.js | 3 ++ 4 files changed, 41 insertions(+), 3 deletions(-) (limited to 'src/content') 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), }), }; diff --git a/src/content/dependencies/generateContributionList.js b/src/content/dependencies/generateContributionList.js index 3716bcd6..fa9e3d70 100644 --- a/src/content/dependencies/generateContributionList.js +++ b/src/content/dependencies/generateContributionList.js @@ -13,6 +13,9 @@ export default { html.tag('ul', {[html.onlyIfContent]: true}, + relations.contributionLinks.length > 1 && + {class: 'offset-tooltips'}, + relations.contributionLinks .map(contributionLink => html.tag('li', diff --git a/src/content/dependencies/generateGroupInfoPageAlbumsListByDate.js b/src/content/dependencies/generateGroupInfoPageAlbumsListByDate.js index de55f33a..c295ab86 100644 --- a/src/content/dependencies/generateGroupInfoPageAlbumsListByDate.js +++ b/src/content/dependencies/generateGroupInfoPageAlbumsListByDate.js @@ -35,6 +35,9 @@ export default { slots.hidden && {style: 'display: none'}, + relations.items.length > 1&& + {class: 'offset-tooltips'}, + {[html.onlyIfContent]: true}, relations.items diff --git a/src/content/dependencies/generateGroupInfoPageAlbumsListBySeries.js b/src/content/dependencies/generateGroupInfoPageAlbumsListBySeries.js index 6bbee03a..0743e66e 100644 --- a/src/content/dependencies/generateGroupInfoPageAlbumsListBySeries.js +++ b/src/content/dependencies/generateGroupInfoPageAlbumsListBySeries.js @@ -48,6 +48,9 @@ export default { {id: 'group-album-list-by-series'}, {class: 'group-series-list'}, + relations.seriesItems.flat().length > 1 && + {class: 'offset-tooltips'}, + {[html.onlyIfContent]: true}, stitchArrays({ -- cgit 1.3.0-6-gf8a5