diff options
Diffstat (limited to 'src/data/things')
| -rw-r--r-- | src/data/things/artist.js | 23 | ||||
| -rw-r--r-- | src/data/things/contribution.js | 8 | ||||
| -rw-r--r-- | src/data/things/track.js | 21 |
3 files changed, 38 insertions, 14 deletions
diff --git a/src/data/things/artist.js b/src/data/things/artist.js index a2ed0b74..01eb2172 100644 --- a/src/data/things/artist.js +++ b/src/data/things/artist.js @@ -43,7 +43,7 @@ export class Artist extends Thing { 'avatarArtwork', // from inline fields ]; - static [Thing.getPropertyDescriptors] = () => ({ + static [Thing.getPropertyDescriptors] = ({Contribution}) => ({ // Update & expose name: name(V('Unnamed Artist')), @@ -78,6 +78,27 @@ export class Artist extends Thing { isArtist: exposeConstant(V(true)), + mockSimpleContribution: { + flags: {expose: true}, + expose: { + dependencies: ['directory', '_find'], + compute: ({directory, _find: find}) => + Object.assign(new Contribution, { + artist: 'artist:' + directory, + + // These nulls have no effect, they're only included + // here for clarity. + date: null, + thing: null, + annotation: null, + artistProperty: null, + thingProperty: null, + + find, + }), + }, + }, + trackArtistContributions: reverseReferenceList({ reverse: soupyReverse.input('trackArtistContributionsBy'), }), diff --git a/src/data/things/contribution.js b/src/data/things/contribution.js index 393a60b4..778bc566 100644 --- a/src/data/things/contribution.js +++ b/src/data/things/contribution.js @@ -62,12 +62,12 @@ export class Contribution extends Thing { }, countInContributionTotals: [ - inheritFromContributionPresets(), - exposeUpdateValueOrContinue({ validate: input.value(isBoolean), }), + inheritFromContributionPresets(), + { dependencies: ['thing', input.myself()], compute: (continuation, { @@ -85,12 +85,12 @@ export class Contribution extends Thing { ], countInDurationTotals: [ - inheritFromContributionPresets(), - exposeUpdateValueOrContinue({ validate: input.value(isBoolean), }), + inheritFromContributionPresets(), + withPropertyFromObject('thing', V('duration')), exitWithoutDependency('#thing.duration', { value: input.value(false), diff --git a/src/data/things/track.js b/src/data/things/track.js index f77cfa41..3c4b5409 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -289,12 +289,20 @@ export class Track extends Thing { ], contributorContribs: [ - inheritContributionListFromMainRelease(), - - contributionList({ + withResolvedContribs({ + from: input.updateValue({validate: isContributionList}), date: 'date', - artistProperty: input.value('trackContributorContributions'), + thingProperty: input.thisProperty(), + artistProperty: input.value('trackArtistContributions'), + }).outputs({ + '#resolvedContribs': '#contributorContribs', }), + + exposeDependencyOrContinue('#contributorContribs', V('empty')), + + inheritContributionListFromMainRelease(), + + exposeConstant(V([])), ], // > Update & expose - General configuration @@ -1047,11 +1055,6 @@ export class Track extends Thing { 'Sampled Tracks', ]}, - {message: `Secondary releases inherit contributors from the main one`, fields: [ - 'Main Release', - 'Contributors', - ]}, - { message: ({'Has Cover Art': hasCoverArt}) => (hasCoverArt |