diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/data/things.js | 27 | ||||
-rwxr-xr-x | src/upd8.js | 10 |
2 files changed, 32 insertions, 5 deletions
diff --git a/src/data/things.js b/src/data/things.js index b5d6f109..e061d581 100644 --- a/src/data/things.js +++ b/src/data/things.js @@ -252,6 +252,9 @@ Thing.common = { }) }; +// Get a reference to a thing (e.g. track:showtime-piano-refrain), using its +// constructor's [Thing.referenceType] as the prefix. This will throw an error +// if the thing's directory isn't yet provided/computable. Thing.getReference = function(thing) { if (!thing.constructor[Thing.referenceType]) throw TypeError(`Passed Thing is ${thing.constructor.name}, which provides no [Thing.referenceType]`); @@ -398,7 +401,6 @@ Track.propertyDescriptors = { urls: Thing.common.urls(), dateFirstReleased: Thing.common.simpleDate(), - coverArtDate: Thing.common.simpleDate(), hasCoverArt: Thing.common.flag(true), hasURLs: Thing.common.flag(true), @@ -451,9 +453,32 @@ Track.propertyDescriptors = { } }, + coverArtDate: { + flags: {update: true, expose: true}, + + update: {validate: isDate}, + + expose: { + dependencies: ['albumData', 'dateFirstReleased'], + transform: (coverArtDate, { albumData, dateFirstReleased, [Track.instance]: track }) => ( + coverArtDate ?? + dateFirstReleased ?? + albumData?.find(album => album.tracks.includes(track))?.trackArtDate ?? + albumData?.find(album => album.tracks.includes(track))?.date ?? + null + ) + } + }, + // Previously known as: (track).artists artistContribs: Thing.common.dynamicContribs('artistContribsByRef'), + // Previously known as: (track).contributors + contributorContribs: Thing.common.dynamicContribs('contributorContribsByRef'), + + // Previously known as: (track).coverArtists + coverArtistContribs: Thing.common.dynamicContribs('coverArtistContribsByRef'), + artTags: { flags: {expose: true}, diff --git a/src/upd8.js b/src/upd8.js index de79a0fb..d2f1b08d 100755 --- a/src/upd8.js +++ b/src/upd8.js @@ -2780,10 +2780,12 @@ async function main() { console.log(WD.trackData[0].name, WD.trackData[0].album.name); console.log(WD.albumData[0].name, WD.albumData[0].tracks[0].name); console.log(WD.trackData[0].artistContribs[0].who.name); - console.log( - (WD.albumData - .find(album => album.name === 'Alternia') - .artistContribs[0].who.name)); + const demoAlbum1 = WD.albumData.find(album => album.name === 'Alternia'); + const demoAlbum2 = WD.albumData.find(album => album.name === 'Homestuck Vol. 5'); + console.log(demoAlbum1.artistContribs[0]?.who.name); + console.log(demoAlbum2.tracks[0].name, + demoAlbum2.tracks[0].date, + demoAlbum2.tracks[0].coverArtDate); return; |