diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2026-05-26 17:51:44 -0300 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2026-05-26 17:51:44 -0300 |
| commit | 3b4fb2fbd12348ee0f98dc18c8f456a72c7876f6 (patch) | |
| tree | 575bf2541d41bb01f27f22b190998f8c0cfbeb95 | |
| parent | fba9084fc2e6650bf448656744595b6b349b2168 (diff) | |
data: Album.nameDetailForTracks
| -rw-r--r-- | src/data/things/Track.js | 8 | ||||
| -rw-r--r-- | src/data/things/album/Album.js | 28 |
2 files changed, 31 insertions, 5 deletions
diff --git a/src/data/things/Track.js b/src/data/things/Track.js index 8cee520d..ae527be6 100644 --- a/src/data/things/Track.js +++ b/src/data/things/Track.js @@ -795,16 +795,16 @@ export class Track extends Thing { ], nameDetailAcrossWiki: [ - withPropertyFromObject('album', V('name')), + withPropertyFromObject('album', V('nameDetailForTracks')), { - dependencies: ['_nameDetail', '#album.name'], + dependencies: ['_nameDetail', '#album.nameDetailForTracks'], compute: ({ ['_nameDetail']: nameDetail, - ['#album.name']: albumName, + ['#album.nameDetailForTracks']: nameDetailFromAlbum, }) => (nameDetail === 'album' - ? albumName + ? nameDetailFromAlbum : nameDetail), }, ], 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'}, |