diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2026-06-04 08:55:25 -0300 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2026-06-04 08:55:25 -0300 |
| commit | aeed300cb9f4fc543a4fdadc294106e455900309 (patch) | |
| tree | 1f317d539dd78b6c5caaad91c65246d9ff3330e2 /src/data/things/Track.js | |
| parent | aee74d1a422ca41a2f7fac7cf4cbc5e9285243a8 (diff) | |
content, data: Track.datePosted, etc
Diffstat (limited to 'src/data/things/Track.js')
| -rw-r--r-- | src/data/things/Track.js | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/data/things/Track.js b/src/data/things/Track.js index 7eff2000..6fc38e5d 100644 --- a/src/data/things/Track.js +++ b/src/data/things/Track.js @@ -282,6 +282,7 @@ export class Track extends Thing { additionalNames: thingList(V(AdditionalName)), dateFirstReleased: simpleDate(), + datePosted: simpleDate(), // > Update & expose - Credits and contributors @@ -721,11 +722,30 @@ export class Track extends Thing { }, exposeDependencyOrContinue('dateFirstReleased'), + exposeDependencyOrContinue('datePosted'), withPropertyFromObject('album', V('date')), exposeDependency('#album.date'), ], + dateStyle: [ + exitWithoutDependency('date'), + + { + dependencies: ['_dateFirstReleased', '_datePosted'], + compute: (continuation, { + ['_dateFirstReleased']: dateFirstReleased, + ['_datePosted']: datePosted, + }) => + (dateFirstReleased ? 'released' + : datePosted ? 'posted' + : continuation()), + }, + + withPropertyFromObject('album', V('dateStyle')), + exposeDependency('#album.dateStyle'), + ], + trackNumber: [ // Zero is the fallback, not one, but in most albums the first track // (and its intended output by this composition) will be one. @@ -1060,10 +1080,8 @@ export class Track extends Thing { transform: parseAdditionalNames, }, - 'Date First Released': { - property: 'dateFirstReleased', - transform: parseDate, - }, + 'Date First Released': {property: 'dateFirstReleased', transform: parseDate}, + 'Date Posted': {property: 'datePosted', transform: parseDate}, // Credits and contributors @@ -1240,6 +1258,11 @@ export class Track extends Thing { ], }, + {message: `Only one unique date per track is supported`, fields: [ + 'Date First Released', + 'Date Posted', + ]}, + {message: `Don't include URLs alongside Excluding URLs, unless Excluding URLs is false`, fields: [ 'URLs', ['Excluding URLs', v => v !== false], |