diff options
Diffstat (limited to 'src/data')
-rw-r--r-- | src/data/composite/wiki-data/withResolvedSeriesList.js | 28 | ||||
-rw-r--r-- | src/data/composite/wiki-properties/seriesList.js | 10 | ||||
-rw-r--r-- | src/data/things/group.js | 4 |
3 files changed, 37 insertions, 5 deletions
diff --git a/src/data/composite/wiki-data/withResolvedSeriesList.js b/src/data/composite/wiki-data/withResolvedSeriesList.js index 8a4a4f99..bd2b0ecf 100644 --- a/src/data/composite/wiki-data/withResolvedSeriesList.js +++ b/src/data/composite/wiki-data/withResolvedSeriesList.js @@ -1,7 +1,7 @@ import {input, templateCompositeFrom} from '#composite'; import find from '#find'; import {stitchArrays} from '#sugar'; -import {isSeriesList} from '#validators'; +import {isSeriesList, validateThing} from '#validators'; import {raiseOutputWithoutDependency} from '#composite/control-flow'; @@ -18,6 +18,10 @@ export default templateCompositeFrom({ annotation: `withResolvedSeriesList`, inputs: { + group: input({ + validate: validateThing({referenceType: 'group'}), + }), + list: input({ validate: isSeriesList, acceptsNull: true, @@ -84,12 +88,30 @@ export default templateCompositeFrom({ ['#serieses.description']: description, ['#serieses.albums']: albums, }) => continuation({ - ['#resolvedSeriesList']: + ['#seriesProperties']: stitchArrays({ name, description, albums, - }), + }).map(properties => ({ + ...properties, + group: input + })) + }), + }, + + { + dependencies: ['#seriesProperties', input('group')], + compute: (continuation, { + ['#seriesProperties']: seriesProperties, + [input('group')]: group, + }) => continuation({ + ['#resolvedSeriesList']: + seriesProperties + .map(properties => ({ + ...properties, + group, + })), }), }, ], diff --git a/src/data/composite/wiki-properties/seriesList.js b/src/data/composite/wiki-properties/seriesList.js index aadd56c8..2a101b45 100644 --- a/src/data/composite/wiki-properties/seriesList.js +++ b/src/data/composite/wiki-properties/seriesList.js @@ -1,5 +1,5 @@ import {input, templateCompositeFrom} from '#composite'; -import {isSeriesList} from '#validators'; +import {isSeriesList, validateThing} from '#validators'; import {exposeDependency} from '#composite/control-flow'; import {withResolvedSeriesList} from '#composite/wiki-data'; @@ -9,8 +9,16 @@ export default templateCompositeFrom({ compose: false, + inputs: { + group: input({ + validate: validateThing({referenceType: 'group'}), + }), + }, + steps: () => [ withResolvedSeriesList({ + group: input('group'), + list: input.updateValue({ validate: isSeriesList, }), diff --git a/src/data/things/group.js b/src/data/things/group.js index bd8e2fbf..e000e407 100644 --- a/src/data/things/group.js +++ b/src/data/things/group.js @@ -35,7 +35,9 @@ export class Group extends Thing { data: 'albumData', }), - serieses: seriesList(), + serieses: seriesList({ + group: input.myself(), + }), // Update only |