From 3b4fb2fbd12348ee0f98dc18c8f456a72c7876f6 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 26 May 2026 17:51:44 -0300 Subject: data: Album.nameDetailForTracks --- src/data/things/album/Album.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src/data/things/album') 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'}, -- cgit 1.3.0-6-gf8a5