diff options
Diffstat (limited to 'src/content/dependencies/generateCoverArtworkOriginDetails.js')
-rw-r--r-- | src/content/dependencies/generateCoverArtworkOriginDetails.js | 137 |
1 files changed, 98 insertions, 39 deletions
diff --git a/src/content/dependencies/generateCoverArtworkOriginDetails.js b/src/content/dependencies/generateCoverArtworkOriginDetails.js index 08a01cfe..3908414f 100644 --- a/src/content/dependencies/generateCoverArtworkOriginDetails.js +++ b/src/content/dependencies/generateCoverArtworkOriginDetails.js @@ -13,11 +13,18 @@ export default { query: (artwork) => ({ artworkThingType: artwork.thing.constructor[Thing.referenceType], + + attachedArtistContribs: + (artwork.attachedArtwork + ? artwork.attachedArtwork.artistContribs + : null) }), relations: (relation, query, artwork) => ({ credit: - relation('generateArtistCredit', artwork.artistContribs, []), + relation('generateArtistCredit', + artwork.artistContribs, + query.attachedArtistContribs ?? []), source: relation('transformContent', artwork.source), @@ -50,49 +57,101 @@ export default { {class: 'origin-details'}, - [ - language.encapsulate(capsule, 'artworkBy', workingCapsule => { - const workingOptions = {}; + (() => { + relations.datetimestamp?.setSlots({ + style: 'year', + tooltip: true, + }); + + const artworkBy = + language.encapsulate(capsule, 'artworkBy', workingCapsule => { + const workingOptions = {}; - if (data.label) { - workingCapsule += '.customLabel'; - workingOptions.label = data.label; - } + if (data.label) { + workingCapsule += '.customLabel'; + workingOptions.label = data.label; + } - if (relations.datetimestamp) { - workingCapsule += '.withYear'; - workingOptions.year = - relations.datetimestamp.slots({ - style: 'year', - tooltip: true, - }); - } + if (relations.datetimestamp) { + workingCapsule += '.withYear'; + workingOptions.year = relations.datetimestamp; + } - return relations.credit.slots({ - showAnnotation: true, - showExternalLinks: true, - showChronology: true, - showWikiEdits: true, + return relations.credit.slots({ + showAnnotation: true, + showExternalLinks: true, + showChronology: true, + showWikiEdits: true, - trimAnnotation: false, + trimAnnotation: false, - chronologyKind: 'coverArt', + chronologyKind: 'coverArt', - normalStringKey: workingCapsule, - additionalStringOptions: workingOptions, + normalStringKey: workingCapsule, + additionalStringOptions: workingOptions, + }); }); - }), - - pagePath[0] === 'track' && - data.artworkThingType === 'album' && - language.$(capsule, 'trackArtFromAlbum', { - album: - relations.albumLink.slot('color', false), - }), - - language.$(capsule, 'source', { - [language.onlyIfOptions]: ['source'], - source: relations.source.slot('mode', 'inline'), - }), - ])), + + const trackArtFromAlbum = + pagePath[0] === 'track' && + data.artworkThingType === 'album' && + language.$(capsule, 'trackArtFromAlbum', { + album: + relations.albumLink.slot('color', false), + }); + + const source = + language.encapsulate(capsule, 'source', workingCapsule => { + const workingOptions = { + [language.onlyIfOptions]: ['source'], + source: relations.source.slot('mode', 'inline'), + }; + + if (html.isBlank(artworkBy) && data.label) { + workingCapsule += '.customLabel'; + workingOptions.label = data.label; + } + + if (html.isBlank(artworkBy) && relations.datetimestamp) { + workingCapsule += '.withYear'; + workingOptions.year = relations.datetimestamp; + } + + return language.$(workingCapsule, workingOptions); + }); + + const label = + html.isBlank(artworkBy) && + html.isBlank(source) && + language.encapsulate(capsule, 'customLabel', workingCapsule => { + const workingOptions = { + [language.onlyIfOptions]: ['label'], + label: data.label, + }; + + if (relations.datetimestamp) { + workingCapsule += '.withYear'; + workingOptions.year = relations.datetimestamp; + } + + return language.$(workingCapsule, workingOptions); + }); + + const year = + html.isBlank(artworkBy) && + html.isBlank(source) && + html.isBlank(label) && + language.$(capsule, 'year', { + [language.onlyIfOptions]: ['year'], + year: relations.datetimestamp, + }); + + return [ + artworkBy, + trackArtFromAlbum, + source, + label, + year, + ]; + })())), }; |