diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-05-16 11:17:37 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-05-16 11:17:55 -0300 |
commit | 8461875e45c33fdec5a904b8137a9342bafc6c46 (patch) | |
tree | b3d6baae1b1d72abaacf52ebf07d9ff3ec515df2 /src/data/things | |
parent | 1e700dfcc1e31376e1a6809f3c5841560e1e16d7 (diff) |
data: AdditionalFile
Diffstat (limited to 'src/data/things')
-rw-r--r-- | src/data/things/additional-file.js | 36 | ||||
-rw-r--r-- | src/data/things/album.js | 6 | ||||
-rw-r--r-- | src/data/things/index.js | 2 | ||||
-rw-r--r-- | src/data/things/track.js | 16 |
4 files changed, 54 insertions, 6 deletions
diff --git a/src/data/things/additional-file.js b/src/data/things/additional-file.js new file mode 100644 index 00000000..3bf3dce9 --- /dev/null +++ b/src/data/things/additional-file.js @@ -0,0 +1,36 @@ +import {input} from '#composite'; +import Thing from '#thing'; +import {isString, validateArrayItems} from '#validators'; + +import {contentString, simpleString} from '#composite/wiki-properties'; + +import {exposeConstant, exposeUpdateValueOrContinue} + from '#composite/control-flow'; + +export class AdditionalFile extends Thing { + static [Thing.getPropertyDescriptors] = ({}) => ({ + // Update & expose + + title: simpleString(), + + description: contentString(), + + files: [ + exposeUpdateValueOrContinue({ + validate: input.value(validateArrayItems(isString)), + }), + + exposeConstant({ + value: input.value(null), + }), + ], + }); + + static [Thing.yamlDocumentSpec] = { + fields: { + 'Title': {property: 'title'}, + 'Description': {property: 'description'}, + 'Files': {property: 'files'}, + }, + }; +} diff --git a/src/data/things/album.js b/src/data/things/album.js index c71b9820..37d01233 100644 --- a/src/data/things/album.js +++ b/src/data/things/album.js @@ -33,7 +33,6 @@ import {exitWithoutContribs, withDirectory, withCoverArtDate} from '#composite/wiki-data'; import { - additionalFiles, additionalNameList, color, commentatorArtists, @@ -69,6 +68,7 @@ export class Album extends Thing { static [Thing.referenceType] = 'album'; static [Thing.getPropertyDescriptors] = ({ + AdditionalFile, ArtTag, Artwork, CommentaryEntry, @@ -216,7 +216,9 @@ export class Album extends Thing { class: input.value(CreditingSourcesEntry), }), - additionalFiles: additionalFiles(), + additionalFiles: thingList({ + class: input.value(AdditionalFile), + }), trackSections: thingList({ class: input.value(TrackSection), diff --git a/src/data/things/index.js b/src/data/things/index.js index b832ab75..3fda2bd1 100644 --- a/src/data/things/index.js +++ b/src/data/things/index.js @@ -9,6 +9,7 @@ import * as serialize from '#serialize'; import {withEntries} from '#sugar'; import Thing from '#thing'; +import * as additionalFileClasses from './additional-file.js'; import * as albumClasses from './album.js'; import * as artTagClasses from './art-tag.js'; import * as artistClasses from './artist.js'; @@ -26,6 +27,7 @@ import * as trackClasses from './track.js'; import * as wikiInfoClasses from './wiki-info.js'; const allClassLists = { + 'additional-file.js': additionalFileClasses, 'album.js': albumClasses, 'art-tag.js': artTagClasses, 'artist.js': artistClasses, diff --git a/src/data/things/track.js b/src/data/things/track.js index 57aaa90d..2c5e4fd7 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -38,7 +38,6 @@ import { } from '#composite/wiki-data'; import { - additionalFiles, additionalNameList, commentatorArtists, constitutibleArtworkList, @@ -86,6 +85,7 @@ export class Track extends Thing { static [Thing.referenceType] = 'track'; static [Thing.getPropertyDescriptors] = ({ + AdditionalFile, Album, ArtTag, Artwork, @@ -240,9 +240,17 @@ export class Track extends Thing { }), ], - additionalFiles: additionalFiles(), - sheetMusicFiles: additionalFiles(), - midiProjectFiles: additionalFiles(), + additionalFiles: thingList({ + class: input.value(AdditionalFile), + }), + + sheetMusicFiles: thingList({ + class: input.value(AdditionalFile), + }), + + midiProjectFiles: thingList({ + class: input.value(AdditionalFile), + }), mainReleaseTrack: singleReference({ class: input.value(Track), |