« 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/album
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/things/album')
-rw-r--r--src/data/things/album/Album.js28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/data/things/album/Album.js b/src/data/things/album/Album.js
index cac435ed..44eb1181 100644
--- a/src/data/things/album/Album.js
+++ b/src/data/things/album/Album.js
@@ -1,6 +1,7 @@
 import {input, V} from '#composite';
 import {empty} from '#sugar';
 import Thing from '#thing';
+import {getKebabCase} from '#wiki-data';
 
 import {
   is,
@@ -10,6 +11,7 @@ import {
   isExcludingURLsReason,
   isDirectory,
   isNumber,
+  isString,
 } from '#validators';
 
 import {
@@ -102,14 +104,37 @@ export class Album extends Thing {
     name: name(V('Unnamed Album')),
     nameDetail: simpleString(),
 
+    nameDetailForTracks: {
+      flags: {update: true, expose: true},
+
+      update: {validate: isString},
+
+      expose: {
+        dependencies: ['name', 'nameDetail'],
+        transform: (value, {name, nameDetail}) =>
+          (value
+            ? value
+         : nameDetail
+            ? `${name}, ${nameDetail}`
+            : name),
+      },
+    },
+
     directory: directory(),
 
+    // note: this is currently strictly "directory suffix for tracks"
     directorySuffix: [
       exposeUpdateValueOrContinue({
         validate: input.value(isDirectory),
       }),
 
-      exposeDependency('directory'),
+      {
+        dependencies: ['directory', 'name', 'nameDetailForTracks'],
+        compute: ({directory, name, nameDetailForTracks}) =>
+          (nameDetailForTracks === name
+            ? directory
+            : getKebabCase(nameDetailForTracks)),
+      },
     ],
 
     alwaysReferenceByDirectory: flag(V(false)),
@@ -612,6 +637,7 @@ export class Album extends Thing {
 
       'Album': {property: 'name'},
       'Name Detail': {property: 'nameDetail'},
+      'Name Detail For Tracks': {property: 'nameDetailForTracks'},
 
       'Directory': {property: 'directory'},
       'Directory Suffix': {property: 'directorySuffix'},