« get me outta code hell

data: Contribution: divide previous/next by dated/dateless - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-03-22 15:16:16 -0300
committer(quasar) nebula <qznebula@protonmail.com>2025-03-22 15:16:16 -0300
commit152d706bb3d7a6a03e0dd0d74e7de6bfe5982b59 (patch)
treec4c365317b75b5204d22693df3af454c49536a56
parent06d65e2ef80ff5564cbce8ffdc854dc46181b3e5 (diff)
data: Contribution: divide previous/next by dated/dateless
-rw-r--r--src/data/composite/things/contribution/withContainingReverseContributionList.js26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/data/composite/things/contribution/withContainingReverseContributionList.js b/src/data/composite/things/contribution/withContainingReverseContributionList.js
index 56704c8b..dc990ca5 100644
--- a/src/data/composite/things/contribution/withContainingReverseContributionList.js
+++ b/src/data/composite/things/contribution/withContainingReverseContributionList.js
@@ -1,8 +1,11 @@
-// Get the artist's contribution list containing this property.
+// Get the artist's contribution list containing this property. Although that
+// list literally includes both dated and un-dated contributions, here the list
+// is filtered including only the matching subset (has dates vs dateless).
 
 import {input, templateCompositeFrom} from '#composite';
 
-import {raiseOutputWithoutDependency} from '#composite/control-flow';
+import {raiseOutputWithoutDependency, withResultOfAvailabilityCheck}
+  from '#composite/control-flow';
 import {withPropertyFromObject} from '#composite/data';
 
 import withContributionArtist from './withContributionArtist.js';
@@ -34,7 +37,24 @@ export default templateCompositeFrom({
       object: '#artist',
       property: input('artistProperty'),
     }).outputs({
-      ['#value']: '#containingReverseContributionList',
+      ['#value']: '#list',
     }),
+
+    withResultOfAvailabilityCheck({
+      from: 'date',
+    }).outputs({
+      ['#availability']: '#hasDate',
+    }),
+
+    {
+      dependencies: ['#hasDate', '#list'],
+      compute: (continuation, {
+        ['#hasDate']: hasDate,
+        ['#list']: list,
+      }) => continuation({
+        ['#containingReverseContributionList']:
+          list.filter(contribution => !!contribution.date === hasDate),
+      }),
+    },
   ],
 });