diff options
Diffstat (limited to 'src/data/things')
| -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'}, |