diff options
Diffstat (limited to 'src/data/things')
-rw-r--r-- | src/data/things/art-tag.js | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/data/things/art-tag.js b/src/data/things/art-tag.js index 8519f7f9..9125c767 100644 --- a/src/data/things/art-tag.js +++ b/src/data/things/art-tag.js @@ -4,9 +4,11 @@ import {input} from '#composite'; import find from '#find'; import {sortAlphabetically, sortAlbumsTracksChronologically} from '#sort'; import Thing from '#thing'; +import {unique} from '#sugar'; import {isName} from '#validators'; -import {exposeUpdateValueOrContinue} from '#composite/control-flow'; +import {exitWithoutDependency, exposeDependency, exposeUpdateValueOrContinue} + from '#composite/control-flow'; import { color, @@ -14,12 +16,15 @@ import { flag, referenceList, reverseReferenceList, + simpleString, name, soupyFind, soupyReverse, wikiData, } from '#composite/wiki-properties'; +import {withAllDescendantTags} from '#composite/things/art-tag'; + export class ArtTag extends Thing { static [Thing.referenceType] = 'tag'; static [Thing.friendlyName] = `Art Tag`; @@ -44,6 +49,8 @@ export class ArtTag extends Thing { }, ], + description: simpleString(), + directDescendantTags: referenceList({ class: input.value(ArtTag), find: soupyFind.input('artTag'), @@ -56,7 +63,20 @@ export class ArtTag extends Thing { // Expose only - taggedInThings: { + descriptionShort: [ + exitWithoutDependency({ + dependency: 'description', + mode: input.value('falsy'), + }), + + { + dependencies: ['description'], + compute: ({description}) => + description.split('<hr class="split">')[0], + }, + ], + + directlyTaggedInThings: { flags: {expose: true}, expose: { @@ -71,6 +91,21 @@ export class ArtTag extends Thing { }, }, + indirectlyTaggedInThings: [ + withAllDescendantTags(), + + { + dependencies: ['#allDescendantTags'], + compute: ({'#allDescendantTags': allDescendantTags}) => + unique(allDescendantTags.flatMap(tag => tag.directlyTaggedInThings)), + }, + ], + + allDescendantTags: [ + withAllDescendantTags(), + exposeDependency({dependency: '#allDescendantTags'}), + ], + directAncestorTags: reverseReferenceList({ reverse: soupyReverse.input('artTagsWhichDirectlyAncestor'), }), @@ -102,6 +137,7 @@ export class ArtTag extends Thing { 'Tag': {property: 'name'}, 'Short Name': {property: 'nameShort'}, 'Directory': {property: 'directory'}, + 'Description': {property: 'description'}, 'Color': {property: 'color'}, 'Is CW': {property: 'isContentWarning'}, |