diff options
Diffstat (limited to 'src/content/dependencies/generateCoverArtworkOriginDetails.js')
| -rw-r--r-- | src/content/dependencies/generateCoverArtworkOriginDetails.js | 84 |
1 files changed, 50 insertions, 34 deletions
diff --git a/src/content/dependencies/generateCoverArtworkOriginDetails.js b/src/content/dependencies/generateCoverArtworkOriginDetails.js index 3908414f..e489eea6 100644 --- a/src/content/dependencies/generateCoverArtworkOriginDetails.js +++ b/src/content/dependencies/generateCoverArtworkOriginDetails.js @@ -1,19 +1,5 @@ -import Thing from '#thing'; - export default { - contentDependencies: [ - 'generateArtistCredit', - 'generateAbsoluteDatetimestamp', - 'linkAlbum', - 'transformContent', - ], - - extraDependencies: ['html', 'language', 'pagePath'], - query: (artwork) => ({ - artworkThingType: - artwork.thing.constructor[Thing.referenceType], - attachedArtistContribs: (artwork.attachedArtwork ? artwork.attachedArtwork.artistContribs @@ -29,15 +15,18 @@ export default { source: relation('transformContent', artwork.source), + originDetails: + relation('transformContent', artwork.originDetails), + albumLink: - (query.artworkThingType === 'album' + (artwork.thing.isAlbum ? relation('linkAlbum', artwork.thing) : null), datetimestamp: - (artwork.date && artwork.date !== artwork.thing.date - ? relation('generateAbsoluteDatetimestamp', artwork.date) - : null), + relation('generateAbsoluteDatetimestamp', + artwork.date, + artwork.thing.date), }), @@ -45,23 +34,26 @@ export default { label: artwork.label, - artworkThingType: - query.artworkThingType, + forAlbum: + artwork.thing.isAlbum, + + forSingleStyleAlbum: + artwork.thing.isAlbum && + artwork.thing.style === 'single', + + showFilename: + artwork.showFilename, }), generate: (data, relations, {html, language, pagePath}) => language.encapsulate('misc.coverArtwork', capsule => html.tag('p', {class: 'image-details'}, {[html.onlyIfContent]: true}, - {[html.joinChildren]: html.tag('br')}, {class: 'origin-details'}, (() => { - relations.datetimestamp?.setSlots({ - style: 'year', - tooltip: true, - }); + relations.datetimestamp.setSlot('style', 'year-difference'); const artworkBy = language.encapsulate(capsule, 'artworkBy', workingCapsule => { @@ -72,7 +64,7 @@ export default { workingOptions.label = data.label; } - if (relations.datetimestamp) { + if (!html.isBlank(relations.datetimestamp)) { workingCapsule += '.withYear'; workingOptions.year = relations.datetimestamp; } @@ -94,7 +86,8 @@ export default { const trackArtFromAlbum = pagePath[0] === 'track' && - data.artworkThingType === 'album' && + data.forAlbum && + !data.forSingleStyleAlbum && language.$(capsule, 'trackArtFromAlbum', { album: relations.albumLink.slot('color', false), @@ -112,7 +105,7 @@ export default { workingOptions.label = data.label; } - if (html.isBlank(artworkBy) && relations.datetimestamp) { + if (html.isBlank(artworkBy) && !html.isBlank(relations.datetimestamp)) { workingCapsule += '.withYear'; workingOptions.year = relations.datetimestamp; } @@ -129,7 +122,7 @@ export default { label: data.label, }; - if (relations.datetimestamp) { + if (!html.isBlank(relations.datetimestamp)) { workingCapsule += '.withYear'; workingOptions.year = relations.datetimestamp; } @@ -146,12 +139,35 @@ export default { year: relations.datetimestamp, }); + const originDetailsLine = + html.tag('span', {class: 'origin-details-line'}, + {[html.onlyIfContent]: true}, + + relations.originDetails.slots({ + mode: 'inline', + absorbPunctuationFollowingExternalLinks: false, + })); + + const filenameLine = + html.tag('span', {class: 'filename-line'}, + {[html.onlyIfContent]: true}, + + html.tag('code', {class: 'filename'}, + {[html.onlyIfContent]: true}, + + language.sanitize(data.showFilename))); + return [ - artworkBy, - trackArtFromAlbum, - source, - label, - year, + html.tags([ + artworkBy, + trackArtFromAlbum, + source, + label, + year, + ], {[html.joinChildren]: html.tag('br')}), + + originDetailsLine, + filenameLine, ]; })())), }; |