diff options
Diffstat (limited to 'src/content')
-rw-r--r-- | src/content/dependencies/generateCoverArtworkArtTagDetails.js | 52 |
1 files changed, 37 insertions, 15 deletions
diff --git a/src/content/dependencies/generateCoverArtworkArtTagDetails.js b/src/content/dependencies/generateCoverArtworkArtTagDetails.js index b20f599b..7ef37dfd 100644 --- a/src/content/dependencies/generateCoverArtworkArtTagDetails.js +++ b/src/content/dependencies/generateCoverArtworkArtTagDetails.js @@ -1,13 +1,21 @@ -import {stitchArrays} from '#sugar'; +import {compareArrays, empty, stitchArrays} from '#sugar'; + +function linkable(tag) { + return !tag.isContentWarning; +} export default { contentDependencies: ['linkArtTagGallery'], - extraDependencies: ['html'], + extraDependencies: ['html', 'language'], query: (artwork) => ({ linkableArtTags: - artwork.artTags - .filter(tag => !tag.isContentWarning), + artwork.artTags.filter(linkable), + + mainArtworkLinkableArtTags: + (artwork.mainArtwork + ? artwork.mainArtwork.artTags.filter(linkable) + : null), }), relations: (relation, query, _artwork) => ({ @@ -16,7 +24,18 @@ export default { .map(tag => relation('linkArtTagGallery', tag)), }), - data: (query, _artwork) => { + data: (query, artwork) => { + if ( + !artwork.isMainArtwork && + query.mainArtworkLinkableArtTags && + !empty(query.mainArtworkLinkableArtTags) && + compareArrays( + query.mainArtworkLinkableArtTags, + query.linkableArtTags) + ) { + return {sameAsMainArtwork: true}; + } + const seenShortNames = new Set(); const duplicateShortNames = new Set(); @@ -35,16 +54,19 @@ export default { return {preferShortName}; }, - generate: (data, relations, {html}) => - html.tag('ul', {class: 'image-details'}, - {[html.onlyIfContent]: true}, + generate: (data, relations, {html, language}) => + language.encapsulate('misc.coverArtwork', capsule => + html.tag('ul', {class: 'image-details'}, + {[html.onlyIfContent]: true}, - {class: 'art-tag-details'}, + {class: 'art-tag-details'}, - stitchArrays({ - artTagLink: relations.artTagLinks, - preferShortName: data.preferShortName, - }).map(({artTagLink, preferShortName}) => - html.tag('li', - artTagLink.slot('preferShortName', preferShortName)))), + (data.sameAsMainArtwork + ? language.$(capsule, 'sameTagsAsMainArtwork') + : stitchArrays({ + artTagLink: relations.artTagLinks, + preferShortName: data.preferShortName, + }).map(({artTagLink, preferShortName}) => + html.tag('li', + artTagLink.slot('preferShortName', preferShortName)))))), }; |