« get me outta code hell

data, content: GroupCategory.excludeGroupsFromGalleryTabs - 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:
author(quasar) nebula <qznebula@protonmail.com>2025-07-25 05:36:26 -0300
committer(quasar) nebula <qznebula@protonmail.com>2025-07-25 05:36:54 -0300
commitbdb50b9eb0eb25199bec8bb45b69b84c90921e98 (patch)
tree24a226fe4fb16c76bb1eabc5214de547eb242fd3 /src/data
parent614f1f25d47e1c2bb469525e19959e4854c57551 (diff)
data, content: GroupCategory.excludeGroupsFromGalleryTabs preview
Diffstat (limited to 'src/data')
-rw-r--r--src/data/things/group.js44
1 files changed, 41 insertions, 3 deletions
diff --git a/src/data/things/group.js b/src/data/things/group.js
index b491bc8f..0935dc93 100644
--- a/src/data/things/group.js
+++ b/src/data/things/group.js
@@ -5,10 +5,17 @@ import {inspect} from 'node:util';
 import {colors} from '#cli';
 import {input} from '#composite';
 import Thing from '#thing';
-import {is} from '#validators';
+import {is, isBoolean} from '#validators';
 import {parseAnnotatedReferences, parseSerieses} from '#yaml';
 
-import {exposeConstant} from '#composite/control-flow';
+import {withPropertyFromObject} from '#composite/data';
+import {withUniqueReferencingThing} from '#composite/wiki-data';
+
+import {
+  exposeConstant,
+  exposeDependencyOrContinue,
+  exposeUpdateValueOrContinue,
+} from '#composite/control-flow';
 
 import {
   annotatedReferenceList,
@@ -34,7 +41,31 @@ export class Group extends Thing {
     name: name('Unnamed Group'),
     directory: directory(),
 
-    excludeFromGalleryTabs: flag(false),
+    excludeFromGalleryTabs: [
+      exposeUpdateValueOrContinue({
+        validate: input.value(isBoolean),
+      }),
+
+      withUniqueReferencingThing({
+        reverse: soupyReverse.input('groupCategoriesWhichInclude'),
+      }).outputs({
+        '#uniqueReferencingThing': '#category',
+      }),
+
+      withPropertyFromObject({
+        object: '#category',
+        property: input.value('excludeGroupsFromGalleryTabs'),
+      }),
+
+      exposeDependencyOrContinue({
+        dependency: '#category.excludeGroupsFromGalleryTabs',
+      }),
+
+      exposeConstant({
+        value: input.value(false),
+      }),
+    ],
+
     divideAlbumsByStyle: flag(false),
 
     description: contentString(),
@@ -234,6 +265,8 @@ export class GroupCategory extends Thing {
     name: name('Unnamed Group Category'),
     directory: directory(),
 
+    excludeGroupsFromGalleryTabs: flag(false),
+
     color: color(),
 
     groups: referenceList({
@@ -266,7 +299,12 @@ export class GroupCategory extends Thing {
   static [Thing.yamlDocumentSpec] = {
     fields: {
       'Category': {property: 'name'},
+
       'Color': {property: 'color'},
+
+      'Exclude Groups From Gallery Tabs': {
+        property: 'excludeGroupsFromGalleryTabs',
+      },
     },
   };
 }