diff options
Diffstat (limited to 'src/data/composite')
4 files changed, 44 insertions, 1 deletions
diff --git a/src/data/composite/wiki-data/withResolvedAnnotatedReferenceList.js b/src/data/composite/wiki-data/withResolvedAnnotatedReferenceList.js index e2b8a0a1..789a8844 100644 --- a/src/data/composite/wiki-data/withResolvedAnnotatedReferenceList.js +++ b/src/data/composite/wiki-data/withResolvedAnnotatedReferenceList.js @@ -1,6 +1,6 @@ import {input, templateCompositeFrom} from '#composite'; import {stitchArrays} from '#sugar'; -import {isObject, validateArrayItems} from '#validators'; +import {isDate, isObject, validateArrayItems} from '#validators'; import {withPropertyFromList} from '#composite/data'; @@ -24,6 +24,11 @@ export default templateCompositeFrom({ acceptsNull: true, }), + date: input({ + validate: isDate, + acceptsNull: true, + }), + reference: input({type: 'string', defaultValue: 'reference'}), annotation: input({type: 'string', defaultValue: 'annotation'}), thing: input({type: 'string', defaultValue: 'thing'}), @@ -93,6 +98,17 @@ export default templateCompositeFrom({ }), }, + { + dependencies: ['#matches', input('date')], + compute: (continuation, { + ['#matches']: matches, + [input('date')]: date, + }) => continuation({ + ['#matches']: + matches.map(match => ({...match, date})), + }), + }, + withAvailabilityFilter({ from: '#resolvedReferenceList', }), diff --git a/src/data/composite/wiki-data/withReverseAnnotatedReferenceList.js b/src/data/composite/wiki-data/withReverseAnnotatedReferenceList.js index debc68e4..feae9ccb 100644 --- a/src/data/composite/wiki-data/withReverseAnnotatedReferenceList.js +++ b/src/data/composite/wiki-data/withReverseAnnotatedReferenceList.js @@ -67,12 +67,20 @@ export default withReverseList_template({ '#values': '#annotations', }), + withPropertyFromList({ + list: '#references', + property: input.value('date'), + }).outputs({ + '#references.date': '#dates', + }), + { dependencies: [ input('backward'), input('annotation'), '#things', '#annotations', + '#dates', ], compute: (continuation, { @@ -80,11 +88,13 @@ export default withReverseList_template({ [input('annotation')]: annotationProperty, ['#things']: things, ['#annotations']: annotations, + ['#dates']: dates, }) => continuation({ '#referencingThings': stitchArrays({ [thingProperty]: things, [annotationProperty]: annotations, + date: dates, }), }), }, diff --git a/src/data/composite/wiki-properties/annotatedReferenceList.js b/src/data/composite/wiki-properties/annotatedReferenceList.js index 860f3c3d..d6364475 100644 --- a/src/data/composite/wiki-properties/annotatedReferenceList.js +++ b/src/data/composite/wiki-properties/annotatedReferenceList.js @@ -4,6 +4,7 @@ import {combineWikiDataArrays} from '#wiki-data'; import { isContentString, + isDate, optional, validateArrayItems, validateProperties, @@ -28,6 +29,11 @@ export default templateCompositeFrom({ data: inputWikiData({allowMixedTypes: true}), find: input({type: 'function'}), + date: input({ + validate: isDate, + acceptsNull: true, + }), + reference: input.staticValue({type: 'string', defaultValue: 'reference'}), annotation: input.staticValue({type: 'string', defaultValue: 'annotation'}), thing: input.staticValue({type: 'string', defaultValue: 'thing'}), @@ -53,6 +59,8 @@ export default templateCompositeFrom({ withResolvedAnnotatedReferenceList({ list: input.updateValue(), + date: input('date'), + reference: input('reference'), annotation: input('annotation'), thing: input('thing'), diff --git a/src/data/composite/wiki-properties/referencedArtworkList.js b/src/data/composite/wiki-properties/referencedArtworkList.js index a242af2c..819b2f43 100644 --- a/src/data/composite/wiki-properties/referencedArtworkList.js +++ b/src/data/composite/wiki-properties/referencedArtworkList.js @@ -1,5 +1,6 @@ import {input, templateCompositeFrom} from '#composite'; import find from '#find'; +import {isDate} from '#validators'; import {combineWikiDataArrays} from '#wiki-data'; import annotatedReferenceList from './annotatedReferenceList.js'; @@ -9,6 +10,13 @@ export default templateCompositeFrom({ compose: false, + inputs: { + date: input({ + validate: isDate, + acceptsNull: true, + }), + }, + steps: () => [ { dependencies: [ @@ -42,6 +50,7 @@ export default templateCompositeFrom({ referenceType: input.value(['album', 'track']), data: '#data', find: '#find', + date: input('date'), }), ], }); |