diff options
Diffstat (limited to 'src/data/things/artwork.js')
-rw-r--r-- | src/data/things/artwork.js | 51 |
1 files changed, 46 insertions, 5 deletions
diff --git a/src/data/things/artwork.js b/src/data/things/artwork.js index 65032d86..2a97fd6d 100644 --- a/src/data/things/artwork.js +++ b/src/data/things/artwork.js @@ -3,7 +3,6 @@ import {inspect} from 'node:util'; import {input} from '#composite'; import find from '#find'; import Thing from '#thing'; -import {parseAnnotatedReferences, parseContributors, parseDate} from '#yaml'; import { isContentString, @@ -18,6 +17,13 @@ import { validateReferenceList, } from '#validators'; +import { + parseAnnotatedReferences, + parseContributors, + parseDate, + parseDimensions, +} from '#yaml'; + import {withPropertyFromObject} from '#composite/data'; import { @@ -132,6 +138,11 @@ export class Artwork extends Thing { ['#value']: '#dimensionsFromThing', }), + exitWithoutDependency({ + dependency: 'dimensionsFromThingProperty', + value: input.value(null), + }), + exposeDependencyOrContinue({ dependency: '#dimensionsFromThing', }), @@ -179,6 +190,8 @@ export class Artwork extends Thing { }), ], + artTagsFromThingProperty: simpleString(), + artTags: [ withResolvedReferenceList({ list: input.updateValue({ @@ -194,13 +207,20 @@ export class Artwork extends Thing { mode: input.value('empty'), }), + exitWithoutDependency({ + dependency: 'artTagsFromThingProperty', + value: input.value([]), + }), + withPropertyFromObject({ object: 'thing', - property: input.value('artTags'), + property: 'artTagsFromThingProperty', + }).outputs({ + ['#value']: '#artTags', }), exposeDependencyOrContinue({ - dependency: '#thing.artTags', + dependency: '#artTags', }), exposeConstant({ @@ -208,6 +228,8 @@ export class Artwork extends Thing { }), ], + referencedArtworksFromThingProperty: simpleString(), + referencedArtworks: [ { compute: (continuation) => continuation({ @@ -244,13 +266,20 @@ export class Artwork extends Thing { mode: input.value('empty'), }), + exitWithoutDependency({ + dependency: 'referencedArtworksFromThingProperty', + value: input.value([]), + }), + withPropertyFromObject({ object: 'thing', - property: input.value('referencedArtworks'), + property: 'referencedArtworksFromThingProperty', + }).outputs({ + ['#value']: '#referencedArtworks', }), exposeDependencyOrContinue({ - dependency: '#thing.referencedArtworks', + dependency: '#referencedArtworks', }), exposeConstant({ @@ -280,6 +309,11 @@ export class Artwork extends Thing { 'Directory': {property: 'unqualifiedDirectory'}, 'File Extension': {property: 'fileExtension'}, + 'Dimensions': { + property: 'dimensions', + transform: parseDimensions, + }, + 'Label': {property: 'label'}, 'Source': {property: 'source'}, @@ -323,6 +357,13 @@ export class Artwork extends Thing { date: ({artwork}) => artwork.date, }, + + artworksWhichFeature: { + bindTo: 'artworkData', + + referencing: artwork => [artwork], + referenced: artwork => artwork.artTags, + }, }; get path() { |