« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/things
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/things')
-rw-r--r--src/data/things/track.js32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/data/things/track.js b/src/data/things/track.js
index 3c72468a..62333136 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -83,7 +83,6 @@ import {
   inheritFromMainRelease,
   withAllReleases,
   withCoverArtistContribs,
-  withDate,
   withDirectorySuffix,
   withMainRelease,
   withMainReleaseTrack,
@@ -227,13 +226,11 @@ export class Track extends Thing {
     ],
 
     artistContribs: [
-      withDate(),
-
       withResolvedContribs({
         from: input.updateValue({validate: isContributionList}),
         thingProperty: input.thisProperty(),
         artistProperty: input.value('trackArtistContributions'),
-        date: '#date',
+        date: 'date',
       }).outputs({
         '#resolvedContribs': '#artistContribs',
       }),
@@ -258,7 +255,7 @@ export class Track extends Thing {
 
       withRedatedContributionList({
         list: '#album.trackArtistContribs',
-        date: '#date',
+        date: 'date',
       }),
 
       exposeDependency({dependency: '#album.trackArtistContribs'}),
@@ -267,10 +264,8 @@ export class Track extends Thing {
     contributorContribs: [
       inheritContributionListFromMainRelease(),
 
-      withDate(),
-
       contributionList({
-        date: '#date',
+        date: 'date',
         artistProperty: input.value('trackContributorContributions'),
       }),
     ],
@@ -531,8 +526,25 @@ export class Track extends Thing {
     ],
 
     date: [
-      withDate(),
-      exposeDependency({dependency: '#date'}),
+      {
+        dependencies: ['disableDate'],
+        compute: (continuation, {disableDate}) =>
+          (disableDate
+            ? null
+            : continuation()),
+      },
+
+      exposeDependencyOrContinue({
+        dependency: 'dateFirstReleased',
+      }),
+
+      withPropertyFromAlbum({
+        property: input.value('date'),
+      }),
+
+      exposeDependency({
+        dependency: '#album.date',
+      }),
     ],
 
     trackNumber: [