From ecde71b903a89607bf8c5032a1cda61a3ff1b3c5 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 27 Jun 2023 21:21:14 -0300 Subject: content: generateArtistInfoPageFlashesChunkedList --- .../dependencies/generateArtistInfoPageChunk.js | 67 +++++++++++++++++----- 1 file changed, 52 insertions(+), 15 deletions(-) (limited to 'src/content/dependencies/generateArtistInfoPageChunk.js') diff --git a/src/content/dependencies/generateArtistInfoPageChunk.js b/src/content/dependencies/generateArtistInfoPageChunk.js index 121cf43d..eb9056cb 100644 --- a/src/content/dependencies/generateArtistInfoPageChunk.js +++ b/src/content/dependencies/generateArtistInfoPageChunk.js @@ -2,9 +2,17 @@ export default { extraDependencies: ['html', 'language'], slots: { + mode: { + validate: v => v.is('flash', 'album'), + }, + albumLink: {type: 'html'}, + flashActLink: {type: 'html'}, date: {validate: v => v.isDate}, + dateRangeStart: {validate: v => v.isDate}, + dateRangeEnd: {validate: v => v.isDate}, + duration: {validate: v => v.isDuration}, durationApproximate: {type: 'boolean'}, @@ -12,26 +20,55 @@ export default { }, generate(slots, {html, language}) { - let accentedLink = slots.albumLink; + let accentedLink; accent: { - const options = {album: accentedLink}; - const parts = ['artistPage.creditList.album']; + switch (slots.mode) { + case 'album': { + accentedLink = slots.albumLink; - if (slots.date) { - parts.push('withDate'); - options.date = language.formatDate(slots.date); - } + const options = {album: accentedLink}; + const parts = ['artistPage.creditList.album']; - if (slots.duration) { - parts.push('withDuration'); - options.duration = - language.formatDuration(slots.duration, { - approximate: slots.durationApproximate, - }); - } + if (slots.date) { + parts.push('withDate'); + options.date = language.formatDate(slots.date); + } + + if (slots.duration) { + parts.push('withDuration'); + options.duration = + language.formatDuration(slots.duration, { + approximate: slots.durationApproximate, + }); + } - accentedLink = language.formatString(parts.join('.'), options); + accentedLink = language.formatString(parts.join('.'), options); + break; + } + + case 'flash': { + accentedLink = slots.flashActLink; + + const options = {act: accentedLink}; + const parts = ['artistPage.creditList.flashAct']; + + if ( + slots.dateRangeStart && + slots.dateRangeEnd && + slots.dateRangeStart !== slots.dateRangeEnd + ) { + parts.push('withDateRange'); + options.dateRange = language.formatDateRange(slots.dateRangeStart, slots.dateRangeEnd); + } else if (slots.dateRangeStart || slots.date) { + parts.push('withDate'); + options.date = language.formatDate(slots.dateFirst); + } + + accentedLink = language.formatString(parts.join('.'), options); + break; + } + } } return html.tags([ -- cgit 1.3.0-6-gf8a5