Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Divided contributor lists! #553

Draft
wants to merge 8 commits into
base: preview
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -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}) =>
Expand Down
3 changes: 3 additions & 0 deletions src/content/dependencies/generatePageLayout.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'},
Expand Down
45 changes: 45 additions & 0 deletions src/content/dependencies/generateTrackInfoPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -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),

Expand Down Expand Up @@ -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({
Expand Down
42 changes: 42 additions & 0 deletions src/data/composite/things/track/exitIfRerelease.js
Original file line number Diff line number Diff line change
@@ -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),
},
],
});
1 change: 1 addition & 0 deletions src/data/composite/things/track/index.js
Original file line number Diff line number Diff line change
@@ -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';
Expand Down
15 changes: 15 additions & 0 deletions src/data/things/artist.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'),
Expand Down
62 changes: 58 additions & 4 deletions src/data/things/track.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ import {
} from '#composite/wiki-properties';

import {
exitIfRerelease,
exitWithoutUniqueCoverArt,
inferredAdditionalNameList,
inheritContributionListFromOriginalRelease,
Expand Down Expand Up @@ -234,8 +235,6 @@ export class Track extends Thing {
],

contributorContribs: [
inheritContributionListFromOriginalRelease(),

withDate(),

contributionList({
Expand All @@ -244,6 +243,41 @@ export class Track extends Thing {
}),
],

writingContributions: [
exitIfRerelease({
value: input.value([]),
}),

withDate(),

contributionList({
date: '#date',
artistProperty: input.value('trackWritingContributions'),
}),
],

performingContributions: [
exitIfRerelease({
value: input.value([]),
}),

withDate(),

contributionList({
date: '#date',
artistProperty: input.value('performingContributions'),
}),
],

engineeringContributions: [
withDate(),

contributionList({
date: '#date',
artistProperty: input.value('engineeringContributions'),
}),
],

// 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.
Expand Down Expand Up @@ -499,6 +533,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,
Expand All @@ -525,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',
'Writing Contributors',
]},

{message: `Rereleases don't have performing contributors`, fields: [
'Originally Released As',
'Contributors',
'Performing Contributors',
]},

{message: `Rereleases inherit lyrics from the original`, fields: [
Expand Down
18 changes: 15 additions & 3 deletions src/strings-default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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:
#
Expand Down Expand Up @@ -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..."
Expand Down