From 1b5ce8b3cd4ea9229ea53b55c99cebc02f6a2c40 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Wed, 12 Jun 2024 12:40:54 -0300 Subject: [PATCH 1/8] data: Track.{writing,performing,engineering}Contributions --- src/data/things/track.js | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/data/things/track.js b/src/data/things/track.js index faa5d7ef..4eaacaa0 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -244,6 +244,36 @@ export class Track extends Thing { }), ], + writingContributions: [ + inheritContributionListFromOriginalRelease(), + + withDate(), + + contributionList({ + date: '#date', + }), + ], + + performingContributions: [ + inheritContributionListFromOriginalRelease(), + + withDate(), + + contributionList({ + date: '#date', + }), + ], + + engineeringContributions: [ + inheritContributionListFromOriginalRelease(), + + withDate(), + + contributionList({ + date: '#date', + }), + ], + // Cover artists aren't inherited from the original release, since it // typically varies by release and isn't defined by the musical qualities // of the track. @@ -499,6 +529,21 @@ export class Track extends Thing { transform: parseContributors, }, + 'Writing Contributors': { + property: 'writingContributions', + transform: parseContributors, + }, + + 'Performing Contributors': { + property: 'performingContributions', + transform: parseContributors, + }, + + 'Engineering Contributors': { + property: 'engineeringContributions', + transform: parseContributors, + }, + 'Cover Artists': { property: 'coverArtistContribs', transform: parseContributors, From 6f3feb7d8def69fb99af1891f7a5fb08d08f4af8 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 21 Jun 2024 09:03:19 -0300 Subject: [PATCH 2/8] data: Artist.track{Writing,Performing,Engineering}Contributions --- src/data/things/artist.js | 15 +++++++++++++++ src/data/things/track.js | 3 +++ 2 files changed, 18 insertions(+) diff --git a/src/data/things/artist.js b/src/data/things/artist.js index 6d5e33c0..d00423a6 100644 --- a/src/data/things/artist.js +++ b/src/data/things/artist.js @@ -95,6 +95,21 @@ export class Artist extends Thing { list: input.value('coverArtistContribs'), }), + trackWritingContributions: reverseContributionList({ + data: 'trackData', + list: input.value('writingContributions'), + }), + + trackPerformingContributions: reverseContributionList({ + data: 'trackData', + list: input.value('performingContributions'), + }), + + trackEngineeringContributions: reverseContributionList({ + data: 'trackData', + list: input.value('engineeringContributions'), + }), + tracksAsCommentator: reverseReferenceList({ data: 'trackData', list: input.value('commentatorArtists'), diff --git a/src/data/things/track.js b/src/data/things/track.js index 4eaacaa0..2604d5ef 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -251,6 +251,7 @@ export class Track extends Thing { contributionList({ date: '#date', + artistProperty: input.value('trackWritingContributions'), }), ], @@ -261,6 +262,7 @@ export class Track extends Thing { contributionList({ date: '#date', + artistProperty: input.value('performingContributions'), }), ], @@ -271,6 +273,7 @@ export class Track extends Thing { contributionList({ date: '#date', + artistProperty: input.value('engineeringContributions'), }), ], From 5d4c6fb2982b706ac95a75e3dbd6f1bbc2b9c6a5 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 21 Jun 2024 09:03:40 -0300 Subject: [PATCH 3/8] content: gCTChronologySection: only test for string chronologyKind --- .../generateContributionTooltipChronologySection.js | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/content/dependencies/generateContributionTooltipChronologySection.js b/src/content/dependencies/generateContributionTooltipChronologySection.js index 78c9051c..2b8ef48e 100644 --- a/src/content/dependencies/generateContributionTooltipChronologySection.js +++ b/src/content/dependencies/generateContributionTooltipChronologySection.js @@ -41,18 +41,7 @@ export default { }), slots: { - kind: { - validate: v => - v.is( - 'album', - 'bannerArt', - 'coverArt', - 'flash', - 'track', - 'trackArt', - 'trackContribution', - 'wallpaperArt'), - }, + kind: {type: 'string'}, }, generate: (data, relations, slots, {html, language}) => From 5e3c35983867851169360070b0e215ccb16941c6 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 21 Jun 2024 09:04:31 -0300 Subject: [PATCH 4/8] content: writing, performing, engineering contribution lists --- .../dependencies/generatePageLayout.js | 3 ++ .../dependencies/generateTrackInfoPage.js | 45 +++++++++++++++++++ src/strings-default.yaml | 18 ++++++-- 3 files changed, 63 insertions(+), 3 deletions(-) diff --git a/src/content/dependencies/generatePageLayout.js b/src/content/dependencies/generatePageLayout.js index 67a44b2b..ea88ff3f 100644 --- a/src/content/dependencies/generatePageLayout.js +++ b/src/content/dependencies/generatePageLayout.js @@ -491,6 +491,9 @@ export default { {id: 'art', string: 'artworks'}, {id: 'flashes', string: 'flashes'}, {id: 'contributors', string: 'contributors'}, + {id: 'writing-contributors', string: 'writingContributors'}, + {id: 'performing-contributors', string: 'performingContributors'}, + {id: 'engineering-contributors', string: 'engineeringContributors'}, {id: 'references', string: 'references'}, {id: 'referenced-by', string: 'referencedBy'}, {id: 'samples', string: 'samples'}, diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js index 9e4a4059..e4126c04 100644 --- a/src/content/dependencies/generateTrackInfoPage.js +++ b/src/content/dependencies/generateTrackInfoPage.js @@ -74,6 +74,15 @@ export default { contributorContributionList: relation('generateContributionList', track.contributorContribs), + writingContributionList: + relation('generateContributionList', track.writingContributions), + + performingContributionList: + relation('generateContributionList', track.performingContributions), + + engineeringContributionList: + relation('generateContributionList', track.engineeringContributions), + referencedTracksList: relation('generateTrackList', track.referencedTracks), @@ -218,6 +227,42 @@ export default { relations.otherReleasesList, ]), + html.tags([ + relations.contentHeading.clone() + .slots({ + attributes: {id: 'writing-contributors'}, + title: language.$('releaseInfo.writingContributors'), + }), + + relations.writingContributionList.slots({ + chronologyKind: 'writingContribution', + }), + ]), + + html.tags([ + relations.contentHeading.clone() + .slots({ + attributes: {id: 'performing-contributors'}, + title: language.$('releaseInfo.performingContributors'), + }), + + relations.performingContributionList.slots({ + chronologyKind: 'performingContribution', + }), + ]), + + html.tags([ + relations.contentHeading.clone() + .slots({ + attributes: {id: 'engineering-contributors'}, + title: language.$('releaseInfo.engineeringContributors'), + }), + + relations.engineeringContributionList.slots({ + chronologyKind: 'engineeringContribution', + }), + ]), + html.tags([ relations.contentHeading.clone() .slots({ diff --git a/src/strings-default.yaml b/src/strings-default.yaml index af05eb32..d1c0b501 100644 --- a/src/strings-default.yaml +++ b/src/strings-default.yaml @@ -265,8 +265,13 @@ releaseInfo: duration: "Duration: {DURATION}." - contributors: "Contributors:" + contributors: "General contributors:" + writingContributors: "Writing contributors:" + performingContributors: "Performing contributors:" + engineeringContributors: "Engineering contributors:" + lyrics: "Lyrics:" + note: "Context notes:" alsoReleasedAs: @@ -543,11 +548,14 @@ misc: album: "album" bannerArt: "banner art" coverArt: "cover art" + engineeringContribution: "engineering contribution" flash: "flash" + performingContribution: "performing contribution" track: "track" trackArt: "track art" - trackContribution: "track contribution" + trackContribution: "general contribution" wallpaperArt: "wallpaper art" + writingContribution: "writing contribution" # chronology: # @@ -803,10 +811,14 @@ misc: # Displayed on track and flash info pages. - contributors: "Contributors" + contributors: "General contributors" # Displayed on track info page. + writingContributors: "Writing contributors" + performingContributors: "Performing contributors" + engineeringContributors: "Engineering contributors" + references: "References..." referencedBy: "Referenced by..." samples: "Samples..." From 9b46276123735941f093f3358cf7875bd4eed12e Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 21 Jun 2024 09:19:15 -0300 Subject: [PATCH 5/8] data: Track: no general/writing/performing contribs on rerelease --- .../composite/things/track/exitIfRerelease.js | 42 +++++++++++++++++++ src/data/composite/things/track/index.js | 1 + src/data/things/track.js | 13 ++++-- 3 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 src/data/composite/things/track/exitIfRerelease.js diff --git a/src/data/composite/things/track/exitIfRerelease.js b/src/data/composite/things/track/exitIfRerelease.js new file mode 100644 index 00000000..4422899f --- /dev/null +++ b/src/data/composite/things/track/exitIfRerelease.js @@ -0,0 +1,42 @@ +// Shorthand for checking if the track is a rerelease and exposing a value +// if it is. + +import {input, templateCompositeFrom} from '#composite'; + +import {withResultOfAvailabilityCheck} from '#composite/control-flow'; + +import withOriginalRelease from './withOriginalRelease.js'; + +export default templateCompositeFrom({ + annotation: `exitWithoutUniqueCoverArt`, + + inputs: { + value: input({defaultValue: null}), + }, + + steps: () => [ + withOriginalRelease(), + + withResultOfAvailabilityCheck({ + from: '#originalRelease', + }), + + { + dependencies: ['#availability'], + compute: (continuation, { + ['#availability']: availability, + }) => + (availability + ? continuation() + : continuation.raiseOutput()), + }, + + { + dependencies: [input('value')], + compute: (continuation, { + [input('value')]: value, + }) => + continuation.exit(value), + }, + ], +}); diff --git a/src/data/composite/things/track/index.js b/src/data/composite/things/track/index.js index 714858a0..26c67be8 100644 --- a/src/data/composite/things/track/index.js +++ b/src/data/composite/things/track/index.js @@ -1,3 +1,4 @@ +export {default as exitIfRerelease} from './exitIfRerelease.js'; export {default as exitWithoutUniqueCoverArt} from './exitWithoutUniqueCoverArt.js'; export {default as inferredAdditionalNameList} from './inferredAdditionalNameList.js'; export {default as inheritContributionListFromOriginalRelease} from './inheritContributionListFromOriginalRelease.js'; diff --git a/src/data/things/track.js b/src/data/things/track.js index 2604d5ef..8b91ce7d 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -57,6 +57,7 @@ import { } from '#composite/wiki-properties'; import { + exitIfRerelease, exitWithoutUniqueCoverArt, inferredAdditionalNameList, inheritContributionListFromOriginalRelease, @@ -234,7 +235,9 @@ export class Track extends Thing { ], contributorContribs: [ - inheritContributionListFromOriginalRelease(), + exitIfRerelease({ + value: input.value([]), + }), withDate(), @@ -245,7 +248,9 @@ export class Track extends Thing { ], writingContributions: [ - inheritContributionListFromOriginalRelease(), + exitIfRerelease({ + value: input.value([]), + }), withDate(), @@ -256,7 +261,9 @@ export class Track extends Thing { ], performingContributions: [ - inheritContributionListFromOriginalRelease(), + exitIfRerelease({ + value: input.value([]), + }), withDate(), From e8456a622d46d58b9c10136021f5e0aca1074d2f Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sat, 17 Aug 2024 17:02:27 -0300 Subject: [PATCH 6/8] data: Track: rereleases get own engineering contributors --- src/data/things/track.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/data/things/track.js b/src/data/things/track.js index 8b91ce7d..8d38f949 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -274,8 +274,6 @@ export class Track extends Thing { ], engineeringContributions: [ - inheritContributionListFromOriginalRelease(), - withDate(), contributionList({ From 0f76da4061d333de6a674d5b50c9a3054bc4296f Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sat, 17 Aug 2024 17:06:39 -0300 Subject: [PATCH 7/8] data: Track: rereleases get own general contributors --- src/data/things/track.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/data/things/track.js b/src/data/things/track.js index 8d38f949..a5e034ac 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -235,10 +235,6 @@ export class Track extends Thing { ], contributorContribs: [ - exitIfRerelease({ - value: input.value([]), - }), - withDate(), contributionList({ From 1683ae00feca5229e97402f373c431b128f634a3 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sat, 17 Aug 2024 17:06:49 -0300 Subject: [PATCH 8/8] data: Track: update field combination errors for rereleases --- src/data/things/track.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/data/things/track.js b/src/data/things/track.js index a5e034ac..4409c604 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -574,9 +574,14 @@ export class Track extends Thing { 'Artists', ]}, - {message: `Rereleases inherit contributors from the original`, fields: [ + {message: `Rereleases don't have writing contributors`, fields: [ 'Originally Released As', - 'Contributors', + 'Writing Contributors', + ]}, + + {message: `Rereleases don't have performing contributors`, fields: [ + 'Originally Released As', + 'Performing Contributors', ]}, {message: `Rereleases inherit lyrics from the original`, fields: [