« 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/track.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/things/track.js')
-rw-r--r--src/data/things/track.js29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/data/things/track.js b/src/data/things/track.js
index 0d565086..4a24a9e0 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -76,7 +76,6 @@ import {
   inheritContributionListFromMainRelease,
   inheritFromMainRelease,
   withAllReleases,
-  withContainingTrackSection,
   withCoverArtistContribs,
   withDate,
   withDirectorySuffix,
@@ -92,6 +91,16 @@ import {
 
 export class Track extends Thing {
   static [Thing.referenceType] = 'track';
+  static [Thing.wikiData] = 'trackData';
+
+  static [Thing.constitutibleProperties] = [
+    // Contributions currently aren't being observed for constitution.
+    // 'artistContribs', // from main release or album
+    // 'contributorContribs', // from main release
+    // 'coverArtistContribs', // from main release
+
+    'trackArtworks', // from inline fields
+  ];
 
   static [Thing.getPropertyDescriptors] = ({
     AdditionalFile,
@@ -103,6 +112,7 @@ export class Track extends Thing {
     CreditingSourcesEntry,
     LyricsEntry,
     ReferencingSourcesEntry,
+    TrackSection,
     WikiInfo,
   }) => ({
     // > Update & expose - Internal relationships
@@ -111,6 +121,10 @@ export class Track extends Thing {
       class: input.value(Album),
     }),
 
+    trackSection: thing({
+      class: input.value(TrackSection),
+    }),
+
     // > Update & expose - Identifying metadata
 
     name: name('Unnamed Track'),
@@ -263,10 +277,8 @@ export class Track extends Thing {
         validate: input.value(isBoolean),
       }),
 
-      withContainingTrackSection(),
-
       withPropertyFromObject({
-        object: '#trackSection',
+        object: 'trackSection',
         property: input.value('countTracksInArtistTotals'),
       }),
 
@@ -285,10 +297,8 @@ export class Track extends Thing {
         validate: input.value(isColor),
       }),
 
-      withContainingTrackSection(),
-
       withPropertyFromObject({
-        object: '#trackSection',
+        object: 'trackSection',
         property: input.value('color'),
       }),
 
@@ -510,6 +520,11 @@ export class Track extends Thing {
 
     commentatorArtists: commentatorArtists(),
 
+    directorySuffix: [
+      withDirectorySuffix(),
+      exposeDependency({dependency: '#directorySuffix'}),
+    ],
+
     date: [
       withDate(),
       exposeDependency({dependency: '#date'}),