« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data
diff options
context:
space:
mode:
Diffstat (limited to 'src/data')
-rw-r--r--src/data/things/art-tag.js21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/data/things/art-tag.js b/src/data/things/art-tag.js
index f023eb76..fe4c77b2 100644
--- a/src/data/things/art-tag.js
+++ b/src/data/things/art-tag.js
@@ -6,11 +6,13 @@ import {sortAlphabetically, sortAlbumsTracksChronologically} from '#sort';
 import Thing from '#thing';
 import {unique} from '#sugar';
 import {isName} from '#validators';
+import {parseAnnotatedReferences} from '#yaml';
 
 import {exitWithoutDependency, exposeDependency, exposeUpdateValueOrContinue}
   from '#composite/control-flow';
 
 import {
+  annotatedReferenceList,
   color,
   directory,
   flag,
@@ -59,6 +61,16 @@ export class ArtTag extends Thing {
       find: soupyFind.input('artTag'),
     }),
 
+    relatedArtTags: annotatedReferenceList({
+      class: input.value(ArtTag),
+      find: soupyFind.input('artTag'),
+
+      date: input.value(null),
+
+      reference: input.value('artTag'),
+      thing: input.value('artTag'),
+    }),
+
     // Update only
 
     find: soupyFind(),
@@ -154,6 +166,15 @@ export class ArtTag extends Thing {
       'Is CW': {property: 'isContentWarning'},
 
       'Direct Descendant Tags': {property: 'directDescendantArtTags'},
+
+      'Related Tags': {
+        property: 'relatedArtTags',
+        transform: entries =>
+          parseAnnotatedReferences(entries, {
+            referenceField: 'Tag',
+            referenceProperty: 'artTag',
+          }),
+      },
     },
   };