diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2025-11-26 19:00:58 -0400 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2025-11-26 20:20:19 -0400 |
| commit | 8835c9c03c837b2f8567730f94b5a85aa7ffdf2c (patch) | |
| tree | d8b3a648b7c4ce030af9d9138c426655bee3ba20 /src | |
| parent | 342c028a597aa42c5ddf0f47a4fd1b2111289dd7 (diff) | |
data: TrackSection: chop with{Start,Continue}CountingFrom
Diffstat (limited to 'src')
4 files changed, 43 insertions, 95 deletions
diff --git a/src/data/composite/things/track-section/index.js b/src/data/composite/things/track-section/index.js deleted file mode 100644 index 1da49ea4..00000000 --- a/src/data/composite/things/track-section/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export {default as withContinueCountingFrom} from './withContinueCountingFrom.js'; -export {default as withStartCountingFrom} from './withStartCountingFrom.js'; diff --git a/src/data/composite/things/track-section/withContinueCountingFrom.js b/src/data/composite/things/track-section/withContinueCountingFrom.js deleted file mode 100644 index 0ca52b6c..00000000 --- a/src/data/composite/things/track-section/withContinueCountingFrom.js +++ /dev/null @@ -1,25 +0,0 @@ -import {templateCompositeFrom} from '#composite'; - -import withStartCountingFrom from './withStartCountingFrom.js'; - -export default templateCompositeFrom({ - annotation: `withContinueCountingFrom`, - - outputs: ['#continueCountingFrom'], - - steps: () => [ - withStartCountingFrom(), - - { - dependencies: ['#startCountingFrom', 'tracks'], - compute: (continuation, { - ['#startCountingFrom']: startCountingFrom, - ['tracks']: tracks, - }) => continuation({ - ['#continueCountingFrom']: - startCountingFrom + - tracks.length, - }), - }, - ], -}); diff --git a/src/data/composite/things/track-section/withStartCountingFrom.js b/src/data/composite/things/track-section/withStartCountingFrom.js deleted file mode 100644 index 6cf03802..00000000 --- a/src/data/composite/things/track-section/withStartCountingFrom.js +++ /dev/null @@ -1,60 +0,0 @@ -import {input, templateCompositeFrom} from '#composite'; - -import {raiseOutputWithoutDependency} from '#composite/control-flow'; -import {withNearbyItemFromList, withPropertyFromObject} from '#composite/data'; - -export default templateCompositeFrom({ - annotation: `withStartCountingFrom`, - - inputs: { - from: input({ - type: 'number', - defaultDependency: '_startCountingFrom', - acceptsNull: true, - }), - }, - - outputs: ['#startCountingFrom'], - - steps: () => [ - { - dependencies: [input('from')], - compute: (continuation, { - [input('from')]: from, - }) => - (from === null - ? continuation() - : continuation.raiseOutput({'#startCountingFrom': from})), - }, - - raiseOutputWithoutDependency({ - dependency: 'album', - output: input.value({'#startCountingFrom': 1}), - }), - - withPropertyFromObject({ - object: 'album', - property: input.value('trackSections'), - }), - - withNearbyItemFromList({ - list: '#album.trackSections', - item: input.myself(), - offset: input.value(-1), - }).outputs({ - '#nearbyItem': '#previousTrackSection', - }), - - raiseOutputWithoutDependency({ - dependency: '#previousTrackSection', - output: input.value({'#startCountingFrom': 1}), - }), - - withPropertyFromObject({ - object: '#previousTrackSection', - property: input.value('continueCountingFrom'), - }).outputs({ - '#previousTrackSection.continueCountingFrom': '#startCountingFrom', - }), - ], -}); diff --git a/src/data/things/album.js b/src/data/things/album.js index 42db1773..cf021080 100644 --- a/src/data/things/album.js +++ b/src/data/things/album.js @@ -44,6 +44,8 @@ import { import { withFlattenedList, + withLengthOfList, + withNearbyItemFromList, withPropertyFromList, withPropertyFromObject, } from '#composite/data'; @@ -81,9 +83,6 @@ import { wikiData, } from '#composite/wiki-properties'; -import {withContinueCountingFrom, withStartCountingFrom} - from '#composite/things/track-section'; - export class Album extends Thing { static [Thing.referenceType] = 'album'; static [Thing.wikiData] = 'albumData'; @@ -1046,11 +1045,41 @@ export class TrackSection extends Thing { ], startCountingFrom: [ - withStartCountingFrom({ - from: input.updateValue({validate: isNumber}), + exposeUpdateValueOrContinue({ + validate: input.value(isNumber), + }), + + exitWithoutDependency({ + dependency: 'album', + value: input.value(1), + }), + + withPropertyFromObject({ + object: 'album', + property: input.value('trackSections'), + }), + + withNearbyItemFromList({ + list: '#album.trackSections', + item: input.myself(), + offset: input.value(-1), + }).outputs({ + '#nearbyItem': '#previousTrackSection', + }), + + exitWithoutDependency({ + dependency: '#previousTrackSection', + value: input.value(1), + }), + + withPropertyFromObject({ + object: '#previousTrackSection', + property: input.value('continueCountingFrom'), }), - exposeDependency({dependency: '#startCountingFrom'}), + exposeDependency({ + dependency: '#previousTrackSection.continueCountingFrom', + }), ], dateOriginallyReleased: simpleDate(), @@ -1115,9 +1144,15 @@ export class TrackSection extends Thing { ], continueCountingFrom: [ - withContinueCountingFrom(), + withLengthOfList({ + list: 'tracks', + }), - exposeDependency({dependency: '#continueCountingFrom'}), + { + dependencies: ['startCountingFrom', '#tracks.length'], + compute: ({startCountingFrom, '#tracks.length': tracks}) => + startCountingFrom + tracks, + }, ], }); |