« 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/album.js29
-rw-r--r--src/data/things/track.js7
2 files changed, 32 insertions, 4 deletions
diff --git a/src/data/things/album.js b/src/data/things/album.js
index 46dc84c6..777df882 100644
--- a/src/data/things/album.js
+++ b/src/data/things/album.js
@@ -10,8 +10,16 @@ import {traverse} from '#node-utils';
 import {sortAlbumsTracksChronologically, sortChronologically} from '#sort';
 import {empty} from '#sugar';
 import Thing from '#thing';
-import {is, isColor, isContributionList, isDate, isDirectory, isNumber}
-  from '#validators';
+
+import {
+  is,
+  isBoolean,
+  isColor,
+  isContributionList,
+  isDate,
+  isDirectory,
+  isNumber,
+} from '#validators';
 
 import {
   parseAdditionalFiles,
@@ -1051,6 +1059,21 @@ export class TrackSection extends Thing {
 
     dateOriginallyReleased: simpleDate(),
 
+    countTracksInArtistTotals: [
+      exposeUpdateValueOrContinue({
+        validate: input.value(isBoolean),
+      }),
+
+      withAlbum(),
+
+      withPropertyFromObject({
+        object: '#album',
+        property: input.value('countTracksInArtistTotals'),
+      }),
+
+      exposeDependency({dependency: '#album.countTracksInArtistTotals'}),
+    ],
+
     isDefaultTrackSection: flag(false),
 
     description: contentString(),
@@ -1145,6 +1168,8 @@ export class TrackSection extends Thing {
         transform: parseDate,
       },
 
+      'Count Tracks In Artist Totals': {property: 'countTracksInArtistTotals'},
+
       'Description': {property: 'description'},
     },
   };
diff --git a/src/data/things/track.js b/src/data/things/track.js
index b2336a44..9b4a2f18 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -232,11 +232,14 @@ export class Track extends Thing {
         validate: input.value(isBoolean),
       }),
 
-      withPropertyFromAlbum({
+      withContainingTrackSection(),
+
+      withPropertyFromObject({
+        object: '#trackSection',
         property: input.value('countTracksInArtistTotals'),
       }),
 
-      exposeDependency({dependency: '#album.countTracksInArtistTotals'}),
+      exposeDependency({dependency: '#trackSection.countTracksInArtistTotals'}),
     ],
 
     disableUniqueCoverArt: flag(),