From 161db8862cef023f5076c4495e48202d54d8b84a Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Mon, 2 Oct 2023 19:05:11 -0300 Subject: data: add various art tag properties --- src/data/things/art-tag.js | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) (limited to 'src/data/things/art-tag.js') diff --git a/src/data/things/art-tag.js b/src/data/things/art-tag.js index f6798214..d86800de 100644 --- a/src/data/things/art-tag.js +++ b/src/data/things/art-tag.js @@ -1,9 +1,11 @@ import {input} from '#composite'; import find from '#find'; +import {unique} from '#sugar'; import {isName} from '#validators'; import {sortAlbumsTracksChronologically} from '#wiki-data'; -import {exposeUpdateValueOrContinue} from '#composite/control-flow'; +import {exitWithoutDependency, exposeDependency, exposeUpdateValueOrContinue} + from '#composite/control-flow'; import { color, @@ -11,10 +13,13 @@ import { flag, referenceList, reverseReferenceList, + simpleString, name, wikiData, } from '#composite/wiki-properties'; +import {withAllDescendantTags} from '#composite/things/art-tag'; + import Thing from './thing.js'; export class ArtTag extends Thing { @@ -40,6 +45,8 @@ export class ArtTag extends Thing { }, ], + description: simpleString(), + directDescendantTags: referenceList({ class: input.value(ArtTag), find: input.value(find.artTag), @@ -54,7 +61,20 @@ export class ArtTag extends Thing { // Expose only - taggedInThings: { + descriptionShort: [ + exitWithoutDependency({ + dependency: 'description', + mode: input.value('falsy'), + }), + + { + dependencies: ['description'], + compute: ({description}) => + description.split('
')[0], + }, + ], + + directlyTaggedInThings: { flags: {expose: true}, expose: { @@ -67,6 +87,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({ data: 'artTagData', list: input.value('directDescendantTags'), -- cgit 1.3.0-6-gf8a5