From 75691866ed68b9261dd920b79d4ab214df3f049b Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 22 Aug 2023 13:02:19 -0300 Subject: data: filter only requested deps, require requesting 'this' * Thing.composite.from() only provides the dependencies specified in each step and the base, and prevents '#'-prefixed keys from being specified on the main (composite) dependency list. * CacheableObject no longer provides a "reflection" dependency to every compute/transform function, and now requires the property 'this' to be specified instead of the constructor.instance symbol. (The static CacheableObject.instance, inherited by all subclasses, was also removed.) * Also minor improvements to sugar.js data processing utility functions. --- src/data/things/flash.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index 6eb5234f..445fd07c 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -77,9 +77,9 @@ export class Flash extends Thing { flags: {expose: true}, expose: { - dependencies: ['flashActData'], + dependencies: ['this', 'flashActData'], - compute: ({flashActData, [Flash.instance]: flash}) => + compute: ({this: flash, flashActData}) => flashActData.find((act) => act.flashes.includes(flash)) ?? null, }, }, @@ -88,9 +88,9 @@ export class Flash extends Thing { flags: {expose: true}, expose: { - dependencies: ['flashActData'], + dependencies: ['this', 'flashActData'], - compute: ({flashActData, [Flash.instance]: flash}) => + compute: ({this: flash, flashActData}) => flashActData.find((act) => act.flashes.includes(flash))?.color ?? null, }, }, -- cgit 1.3.0-6-gf8a5 From 5e5c2d9e1ee9dbe1c715e4d53bcb244ffcf606b0 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Thu, 31 Aug 2023 11:05:58 -0300 Subject: data: misc. style consistency tweaks --- src/data/things/flash.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index 445fd07c..3f870c51 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -141,10 +141,6 @@ export class FlashAct extends Thing { // Expose only - flashes: Thing.common.dynamicThingsFromReferenceList( - 'flashesByRef', - 'flashData', - find.flash - ), + flashes: Thing.common.dynamicThingsFromReferenceList('flashesByRef', 'flashData', find.flash), }) } -- cgit 1.3.0-6-gf8a5 From 2d7c536ee91a8f5bf8f16db1fc2d0a4d8bb4fc85 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Wed, 6 Sep 2023 15:22:58 -0300 Subject: data: dynamicThingsFromReferenceList -> resolvedReferenceList --- src/data/things/flash.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index 3f870c51..baef23d8 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -67,11 +67,11 @@ export class Flash extends Thing { contributorContribs: Thing.common.dynamicContribs('contributorContribsByRef'), - featuredTracks: Thing.common.dynamicThingsFromReferenceList( - 'featuredTracksByRef', - 'trackData', - find.track - ), + featuredTracks: Thing.common.resolvedReferenceList({ + list: 'featuredTracksByRef', + data: 'trackData', + find: find.track, + }), act: { flags: {expose: true}, @@ -141,6 +141,10 @@ export class FlashAct extends Thing { // Expose only - flashes: Thing.common.dynamicThingsFromReferenceList('flashesByRef', 'flashData', find.flash), + flashes: Thing.common.resolvedReferenceList({ + list: 'flashesByRef', + data: 'flashData', + find: find.flash, + }), }) } -- cgit 1.3.0-6-gf8a5 From 6889c764caef5542ba9ad8362acf6e8b7b879ea9 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Thu, 7 Sep 2023 12:06:06 -0300 Subject: data, infra: import validators directly --- src/data/things/flash.js | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index baef23d8..ce2e7fac 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -1,22 +1,19 @@ import find from '#find'; +import { + isColor, + isDirectory, + isNumber, + isString, + oneOf, +} from '#validators'; + import Thing from './thing.js'; export class Flash extends Thing { static [Thing.referenceType] = 'flash'; - static [Thing.getPropertyDescriptors] = ({ - Artist, - Track, - FlashAct, - - validators: { - isDirectory, - isNumber, - isString, - oneOf, - }, - }) => ({ + static [Thing.getPropertyDescriptors] = ({Artist, Track, FlashAct}) => ({ // Update & expose name: Thing.common.name('Unnamed Flash'), @@ -111,11 +108,7 @@ export class Flash extends Thing { } export class FlashAct extends Thing { - static [Thing.getPropertyDescriptors] = ({ - validators: { - isColor, - }, - }) => ({ + static [Thing.getPropertyDescriptors] = () => ({ // Update & expose name: Thing.common.name('Unnamed Flash Act'), -- cgit 1.3.0-6-gf8a5 From eb00f2993a1aaaba171ad6c918656552f80bb748 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Thu, 7 Sep 2023 12:38:34 -0300 Subject: data: import Thing.common utilities directly Also rename 'color' (from #cli) to 'colors'. --- src/data/things/flash.js | 50 ++++++++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 19 deletions(-) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index ce2e7fac..4e640dac 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -8,7 +8,19 @@ import { oneOf, } from '#validators'; -import Thing from './thing.js'; +import Thing, { + dynamicContribs, + color, + contribsByRef, + fileExtension, + name, + referenceList, + resolvedReferenceList, + simpleDate, + simpleString, + urls, + wikiData, +} from './thing.js'; export class Flash extends Thing { static [Thing.referenceType] = 'flash'; @@ -16,7 +28,7 @@ export class Flash extends Thing { static [Thing.getPropertyDescriptors] = ({Artist, Track, FlashAct}) => ({ // Update & expose - name: Thing.common.name('Unnamed Flash'), + name: name('Unnamed Flash'), directory: { flags: {update: true, expose: true}, @@ -44,27 +56,27 @@ export class Flash extends Thing { }, }, - date: Thing.common.simpleDate(), + date: simpleDate(), - coverArtFileExtension: Thing.common.fileExtension('jpg'), + coverArtFileExtension: fileExtension('jpg'), - contributorContribsByRef: Thing.common.contribsByRef(), + contributorContribsByRef: contribsByRef(), - featuredTracksByRef: Thing.common.referenceList(Track), + featuredTracksByRef: referenceList(Track), - urls: Thing.common.urls(), + urls: urls(), // Update only - artistData: Thing.common.wikiData(Artist), - trackData: Thing.common.wikiData(Track), - flashActData: Thing.common.wikiData(FlashAct), + artistData: wikiData(Artist), + trackData: wikiData(Track), + flashActData: wikiData(FlashAct), // Expose only - contributorContribs: Thing.common.dynamicContribs('contributorContribsByRef'), + contributorContribs: dynamicContribs('contributorContribsByRef'), - featuredTracks: Thing.common.resolvedReferenceList({ + featuredTracks: resolvedReferenceList({ list: 'featuredTracksByRef', data: 'trackData', find: find.track, @@ -111,10 +123,10 @@ export class FlashAct extends Thing { static [Thing.getPropertyDescriptors] = () => ({ // Update & expose - name: Thing.common.name('Unnamed Flash Act'), - color: Thing.common.color(), - anchor: Thing.common.simpleString(), - jump: Thing.common.simpleString(), + name: name('Unnamed Flash Act'), + color: color(), + anchor: simpleString(), + jump: simpleString(), jumpColor: { flags: {update: true, expose: true}, @@ -126,15 +138,15 @@ export class FlashAct extends Thing { } }, - flashesByRef: Thing.common.referenceList(Flash), + flashesByRef: referenceList(Flash), // Update only - flashData: Thing.common.wikiData(Flash), + flashData: wikiData(Flash), // Expose only - flashes: Thing.common.resolvedReferenceList({ + flashes: resolvedReferenceList({ list: 'flashesByRef', data: 'flashData', find: find.flash, -- cgit 1.3.0-6-gf8a5 From bbccaf51222cb4bed73466164496f5bc1030292c Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Thu, 7 Sep 2023 17:30:54 -0300 Subject: data: roll paired "byRef" and "dynamic" properties into one --- src/data/things/flash.js | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index 4e640dac..eb16d29e 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -9,13 +9,11 @@ import { } from '#validators'; import Thing, { - dynamicContribs, color, - contribsByRef, + contributionList, fileExtension, name, referenceList, - resolvedReferenceList, simpleDate, simpleString, urls, @@ -60,9 +58,13 @@ export class Flash extends Thing { coverArtFileExtension: fileExtension('jpg'), - contributorContribsByRef: contribsByRef(), + contributorContribs: contributionList(), - featuredTracksByRef: referenceList(Track), + featuredTracks: referenceList({ + class: Track, + find: find.track, + data: 'trackData', + }), urls: urls(), @@ -74,14 +76,6 @@ export class Flash extends Thing { // Expose only - contributorContribs: dynamicContribs('contributorContribsByRef'), - - featuredTracks: resolvedReferenceList({ - list: 'featuredTracksByRef', - data: 'trackData', - find: find.track, - }), - act: { flags: {expose: true}, @@ -138,18 +132,14 @@ export class FlashAct extends Thing { } }, - flashesByRef: referenceList(Flash), + flashes: referenceList({ + class: Flash, + data: 'flashData', + find: find.flash, + }), // Update only flashData: wikiData(Flash), - - // Expose only - - flashes: resolvedReferenceList({ - list: 'flashesByRef', - data: 'flashData', - find: find.flash, - }), }) } -- cgit 1.3.0-6-gf8a5 From cc4bf401f4d1df63ce33191ae82af6327c7da568 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Wed, 20 Sep 2023 17:33:50 -0300 Subject: data: fix many validation errors --- src/data/things/flash.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index eb16d29e..c3f90260 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -1,3 +1,4 @@ +import {input} from '#composite'; import find from '#find'; import { @@ -61,8 +62,8 @@ export class Flash extends Thing { contributorContribs: contributionList(), featuredTracks: referenceList({ - class: Track, - find: find.track, + class: input.value(Track), + find: input.value(find.track), data: 'trackData', }), @@ -133,9 +134,9 @@ export class FlashAct extends Thing { }, flashes: referenceList({ - class: Flash, + class: input.value(Flash), + find: input.value(find.flash), data: 'flashData', - find: find.flash, }), // Update only -- cgit 1.3.0-6-gf8a5 From ab7591e45e7e31b4e2c0e2f81e224672145993fa Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sun, 1 Oct 2023 17:01:21 -0300 Subject: data, test: refactor utilities into own file Primarily for more precies test coverage mapping, but also to make navigation a bit easier and consolidate complex functions with lots of imports out of the same space as other, more simple or otherwise specialized files. --- src/data/things/flash.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index c3f90260..8fb1edfa 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -9,7 +9,7 @@ import { oneOf, } from '#validators'; -import Thing, { +import { color, contributionList, fileExtension, @@ -19,7 +19,9 @@ import Thing, { simpleString, urls, wikiData, -} from './thing.js'; +} from '#composite/wiki-properties'; + +import Thing from './thing.js'; export class Flash extends Thing { static [Thing.referenceType] = 'flash'; -- cgit 1.3.0-6-gf8a5 From 3a871cf43a11b87392d26320c736b516925da684 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Wed, 11 Oct 2023 14:32:28 -0300 Subject: implement flash act pages, rework flash sidebar layout --- src/data/things/flash.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index 8fb1edfa..52e30f88 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -12,6 +12,7 @@ import { import { color, contributionList, + directory, fileExtension, name, referenceList, @@ -117,12 +118,15 @@ export class Flash extends Thing { } export class FlashAct extends Thing { + static [Thing.referenceType] = 'flash-act'; + static [Thing.getPropertyDescriptors] = () => ({ // Update & expose name: name('Unnamed Flash Act'), + directory: directory(), color: color(), - anchor: simpleString(), + jump: simpleString(), jumpColor: { -- cgit 1.3.0-6-gf8a5 From 4e2dae523e7bf8b49272bd6afcba86a8157af4a1 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Wed, 18 Oct 2023 14:25:27 -0300 Subject: data: add [Thing.friendlyName] property to some Thing subclasses --- src/data/things/flash.js | 1 + 1 file changed, 1 insertion(+) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index 52e30f88..e3ef9f5c 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -119,6 +119,7 @@ export class Flash extends Thing { export class FlashAct extends Thing { static [Thing.referenceType] = 'flash-act'; + static [Thing.friendlyName] = `Flash Act`; static [Thing.getPropertyDescriptors] = () => ({ // Update & expose -- cgit 1.3.0-6-gf8a5 From f461941ac3d39b307ac32e21f9ff41b47fba638b Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 24 Oct 2023 10:47:40 -0300 Subject: data, yaml: new flash act field List Termonology / listTerminology --- src/data/things/flash.js | 1 + 1 file changed, 1 insertion(+) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index e3ef9f5c..511ff19c 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -127,6 +127,7 @@ export class FlashAct extends Thing { name: name('Unnamed Flash Act'), directory: directory(), color: color(), + listTerminology: simpleString(), jump: simpleString(), -- cgit 1.3.0-6-gf8a5 From a80dcfd176c41cef1995f5349a1464d4746badbd Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 24 Oct 2023 11:33:25 -0300 Subject: data, yaml: new flash Color / color field --- src/data/things/flash.js | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index 511ff19c..71174931 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -9,6 +9,10 @@ import { oneOf, } from '#validators'; +import { + exposeUpdateValueOrContinue, +} from '#composite/control-flow'; + import { color, contributionList, @@ -58,6 +62,19 @@ export class Flash extends Thing { }, }, + color: [ + exposeUpdateValueOrContinue({ + validate: input.value(isColor), + }), + + { + flags: {expose: true}, + dependencies: ['this', 'flashActData'], + compute: ({this: flash, flashActData}) => + flashActData.find((act) => act.flashes.includes(flash))?.color ?? null, + }, + ], + date: simpleDate(), coverArtFileExtension: fileExtension('jpg'), @@ -90,17 +107,6 @@ export class Flash extends Thing { flashActData.find((act) => act.flashes.includes(flash)) ?? null, }, }, - - color: { - flags: {expose: true}, - - expose: { - dependencies: ['this', 'flashActData'], - - compute: ({this: flash, flashActData}) => - flashActData.find((act) => act.flashes.includes(flash))?.color ?? null, - }, - }, }); static [Thing.getSerializeDescriptors] = ({ -- cgit 1.3.0-6-gf8a5 From 991386372f418b165a192a3ad36fb9b6cecc4d76 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Thu, 26 Oct 2023 19:32:14 -0300 Subject: data: Flash.color: replace erroneous syntax w/ composite definition --- src/data/things/flash.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'src/data/things/flash.js') diff --git a/src/data/things/flash.js b/src/data/things/flash.js index 71174931..e2afcef4 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -9,9 +9,9 @@ import { oneOf, } from '#validators'; -import { - exposeUpdateValueOrContinue, -} from '#composite/control-flow'; +import {exposeDependency, exposeUpdateValueOrContinue} + from '#composite/control-flow'; +import {withPropertyFromObject} from '#composite/data'; import { color, @@ -26,6 +26,8 @@ import { wikiData, } from '#composite/wiki-properties'; +import {withFlashAct} from '#composite/things/flash'; + import Thing from './thing.js'; export class Flash extends Thing { @@ -67,12 +69,14 @@ export class Flash extends Thing { validate: input.value(isColor), }), - { - flags: {expose: true}, - dependencies: ['this', 'flashActData'], - compute: ({this: flash, flashActData}) => - flashActData.find((act) => act.flashes.includes(flash))?.color ?? null, - }, + withFlashAct(), + + withPropertyFromObject({ + object: '#flashAct', + property: input.value('color'), + }), + + exposeDependency({dependency: '#flashAct.color'}), ], date: simpleDate(), -- cgit 1.3.0-6-gf8a5