From 41c22a553d43fbcc04b7a17ec6f83583ed7f3443 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sun, 19 Mar 2023 16:26:55 -0300 Subject: data step: content function updates, relation syntax 2 * new: generateAlbumTrackListItem * new: generateContributionLinks --- .../dependencies/generateAlbumTrackListItem.js | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/content/dependencies/generateAlbumTrackListItem.js (limited to 'src/content/dependencies/generateAlbumTrackListItem.js') diff --git a/src/content/dependencies/generateAlbumTrackListItem.js b/src/content/dependencies/generateAlbumTrackListItem.js new file mode 100644 index 00000000..fb315cb1 --- /dev/null +++ b/src/content/dependencies/generateAlbumTrackListItem.js @@ -0,0 +1,66 @@ +import {compareArrays} from '../../util/sugar.js'; + +export default { + contentDependencies: [ + 'generateContributionLinks', + 'linkTrack', + ], + + extraDependencies: [ + 'getLinkThemeString', + 'html', + 'language', + ], + + relations(relation, track) { + const relations = {}; + + relations.contributionLinks = + relation('generateContributionLinks', track.artistContribs, { + showContribution: false, + showIcons: false, + }); + + relations.trackLink = + relation('linkTrack', track); + + return relations; + }, + + data(track) { + const data = {}; + + data.color = track.color; + data.duration = track.duration ?? 0; + + data.showArtists = + !compareArrays( + track.artistContribs.map(c => c.who), + track.album.artistContribs.map(c => c.who), + {checkOrder: false}); + }, + + generate(data, relations, { + getLinkThemeString, + html, + language, + }) { + const stringOpts = { + duration: language.formatDuration(data.duration), + track: relations.trackLink, + }; + + return html.tag('li', + {style: getLinkThemeString(data.color)}, + (!data.showArtists + ? language.$('trackList.item.withDuration', stringOpts) + : language.$('trackList.item.withDuration.withArtists', { + ...stringOpts, + by: + html.tag('span', {class: 'by'}, + language.$('trackList.item.withArtists.by', { + artists: relations.contributionLinks, + })), + }))); + }, +}; -- cgit 1.3.0-6-gf8a5