From 9f681821fd4f208024a93cad7cbd20f5714680c2 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Mon, 2 Oct 2023 16:59:30 -0300 Subject: data: draft art tags Two --- src/data/things/art-tag.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/data/things') diff --git a/src/data/things/art-tag.js b/src/data/things/art-tag.js index 9842c887..8519f7f9 100644 --- a/src/data/things/art-tag.js +++ b/src/data/things/art-tag.js @@ -1,6 +1,7 @@ export const ART_TAG_DATA_FILE = 'tags.yaml'; import {input} from '#composite'; +import find from '#find'; import {sortAlphabetically, sortAlbumsTracksChronologically} from '#sort'; import Thing from '#thing'; import {isName} from '#validators'; @@ -11,7 +12,10 @@ import { color, directory, flag, + referenceList, + reverseReferenceList, name, + soupyFind, soupyReverse, wikiData, } from '#composite/wiki-properties'; @@ -40,8 +44,14 @@ export class ArtTag extends Thing { }, ], + directDescendantTags: referenceList({ + class: input.value(ArtTag), + find: soupyFind.input('artTag'), + }), + // Update only + find: soupyFind(), reverse: soupyReverse(), // Expose only @@ -60,6 +70,10 @@ export class ArtTag extends Thing { {getDate: thing => thing.coverArtDate ?? thing.date}), }, }, + + directAncestorTags: reverseReferenceList({ + reverse: soupyReverse.input('artTagsWhichDirectlyAncestor'), + }), }); static [Thing.findSpecs] = { @@ -74,6 +88,15 @@ export class ArtTag extends Thing { }, }; + static [Thing.reverseSpecs] = { + artTagsWhichDirectlyAncestor: { + bindTo: 'artTagData', + + referencing: artTag => [artTag], + referenced: artTag => artTag.directDescendantTags, + }, + }; + static [Thing.yamlDocumentSpec] = { fields: { 'Tag': {property: 'name'}, @@ -82,6 +105,8 @@ export class ArtTag extends Thing { 'Color': {property: 'color'}, 'Is CW': {property: 'isContentWarning'}, + + 'Direct Descendant Tags': {property: 'directDescendantTags'}, }, }; -- cgit 1.3.0-6-gf8a5