« get me outta code hell

content, data: Track.previousProductionTracks - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/things/track.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-10-23 19:23:18 -0300
committer(quasar) nebula <qznebula@protonmail.com>2025-10-23 19:23:18 -0300
commit6b9c8cb3615b7ba7b49d1c21b2748d2e75e7ee82 (patch)
tree495d659cd1bbba542b21f364223c4e211ccbb68c /src/data/things/track.js
parent2d8622f8b31df0367ded52a45d7362abfe6d9a7c (diff)
content, data: Track.previousProductionTracks
Diffstat (limited to 'src/data/things/track.js')
-rw-r--r--src/data/things/track.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/data/things/track.js b/src/data/things/track.js
index 93193b6a..64790a61 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -393,6 +393,17 @@ export class Track extends Thing {
 
     // > Update & expose - Referenced tracks
 
+    previousProductionTracks: [
+      inheritFromMainRelease({
+        notFoundValue: input.value([]),
+      }),
+
+      referenceList({
+        class: input.value(Track),
+        find: soupyFind.input('trackMainReleasesOnly'),
+      }),
+    ],
+
     referencedTracks: [
       inheritFromMainRelease({
         notFoundValue: input.value([]),
@@ -563,6 +574,10 @@ export class Track extends Thing {
       }),
     ],
 
+    followingProductionTracks: reverseReferenceList({
+      reverse: soupyReverse.input('tracksWhichAreFollowingProductionsOf'),
+    }),
+
     referencedByTracks: reverseReferenceList({
       reverse: soupyReverse.input('tracksWhichReference'),
     }),
@@ -701,6 +716,7 @@ export class Track extends Thing {
 
       // Referenced tracks
 
+      'Previous Productions': {property: 'previousProductionTracks'},
       'Referenced Tracks': {property: 'referencedTracks'},
       'Sampled Tracks': {property: 'sampledTracks'},
 
@@ -912,6 +928,13 @@ export class Track extends Thing {
       referencing: track => track.isSecondaryRelease ? [track] : [],
       referenced: track => [track.mainReleaseTrack],
     },
+
+    tracksWhichAreFollowingProductionsOf: {
+      bindTo: 'trackData',
+
+      referencing: track => track,
+      referenced: track => track.previousProductionTracks,
+    },
   };
 
   // Track YAML loading is handled in album.js.