From 8214792f01d27a373afaf8de83903db25f80e573 Mon Sep 17 00:00:00 2001 From: Samuel Andert Date: Fri, 4 Aug 2023 17:34:39 +0200 Subject: [PATCH] refactoring next part --- .../components/refactor/ComposerCharly.svelte | 71 ++++++++++++++----- .../components/refactor/ComposerWrap.svelte | 14 ++-- src/lib/core/refactor/ComposerComponent.svelt | 0 .../core/refactor/ComposerComponent.svelte | 38 ++++++++++ src/lib/core/refactor/coreServices.ts | 16 ++--- src/lib/core/refactor/dataLoader.ts | 16 +++++ src/lib/data/queryTodos.ts | 9 ++- 7 files changed, 127 insertions(+), 37 deletions(-) create mode 100644 src/lib/core/refactor/ComposerComponent.svelt create mode 100644 src/lib/core/refactor/ComposerComponent.svelte create mode 100644 src/lib/core/refactor/dataLoader.ts diff --git a/src/lib/components/refactor/ComposerCharly.svelte b/src/lib/components/refactor/ComposerCharly.svelte index ae0b6de..a0296b1 100644 --- a/src/lib/components/refactor/ComposerCharly.svelte +++ b/src/lib/components/refactor/ComposerCharly.svelte @@ -1,29 +1,64 @@ -
-

My ID is: {me.id}

- my state is {$data.state} -

I am charly

- my data.context.hello prop: {JSON.stringify($data.context.hello)} -
- -
- {#if $data.context.messages} - {#each $data.context.messages as message} +
+
+ {#if $data.store.todos} + {#each $data.store.todos as todo} +

{todo.text}

+ {/each} + {/if} +
+
+ {#if $data.store.messages} + {#each $data.store.messages as message}

{message.text}

{/each} {/if} -
+ +
diff --git a/src/lib/components/refactor/ComposerWrap.svelte b/src/lib/components/refactor/ComposerWrap.svelte index 7acf2d0..582fe73 100644 --- a/src/lib/components/refactor/ComposerWrap.svelte +++ b/src/lib/components/refactor/ComposerWrap.svelte @@ -3,6 +3,7 @@ import { assign } from 'xstate'; import { queryMessages } from '$lib/data/queryMessages'; import { get } from 'svelte/store'; + import { coreServices } from '$lib/core/refactor/coreServices'; let composer = { id: 'ComposerParent', @@ -30,18 +31,15 @@ id: 'ComposerCharly', component: 'ComposerCharly', slot: 'aside', - data: {}, machine: { initial: 'LOADING', - context: { - hello: 'start', - messages: [] - }, + // context: { + // hello: 'start', + // messages: [] + // }, states: { LOADING: { - entry: assign({ - messages: (context, event) => get(queryMessages) - }), + entry: () => {}, on: { TOGGLE: { target: 'READY' diff --git a/src/lib/core/refactor/ComposerComponent.svelt b/src/lib/core/refactor/ComposerComponent.svelt new file mode 100644 index 0000000..e69de29 diff --git a/src/lib/core/refactor/ComposerComponent.svelte b/src/lib/core/refactor/ComposerComponent.svelte new file mode 100644 index 0000000..d8ab0f4 --- /dev/null +++ b/src/lib/core/refactor/ComposerComponent.svelte @@ -0,0 +1,38 @@ + + + diff --git a/src/lib/core/refactor/coreServices.ts b/src/lib/core/refactor/coreServices.ts index d511078..9d94b5e 100644 --- a/src/lib/core/refactor/coreServices.ts +++ b/src/lib/core/refactor/coreServices.ts @@ -2,14 +2,14 @@ import { getComposerStore } from './composerStores'; export const coreServices = { - // mutateData: (storeID: string, value: any) => { - // const store = getComposerStore(storeID); - // console.log(`mutateData called with storeID: ${storeID} and value: ${JSON.stringify(value)}`); - // store.update(storeData => { - // storeData.context = value; - // return storeData; - // }); - // }, + mutateStore: (storeID: string, value: any) => { + const store = getComposerStore(storeID); + console.log(`mutateData called with storeID: ${storeID} and value: ${JSON.stringify(value)}`); + store.update(storeData => { + storeData.store = { ...storeData.store, ...value }; + return storeData; + }); + }, subscribeData: (storeID: string) => { const store = getComposerStore(storeID); return store; diff --git a/src/lib/core/refactor/dataLoader.ts b/src/lib/core/refactor/dataLoader.ts new file mode 100644 index 0000000..d537c26 --- /dev/null +++ b/src/lib/core/refactor/dataLoader.ts @@ -0,0 +1,16 @@ +// dataLoader.ts +import { writable } from 'svelte/store'; +import dataSources from 'virtual:data-sources-list'; + +// The store that holds the data sets +export const dataStore = writable({}); + +// Dynamically import the data modules and assign them to the store +dataSources.forEach(src => { + import(`/src/lib/data/${src}.ts`).then(module => { + // Here, explicitly extract the required data or function from the module + const moduleData = module[src] || module.default; + + dataStore.update(store => ({ ...store, [src]: moduleData })); + }); +}); \ No newline at end of file diff --git a/src/lib/data/queryTodos.ts b/src/lib/data/queryTodos.ts index f3539d9..637810d 100644 --- a/src/lib/data/queryTodos.ts +++ b/src/lib/data/queryTodos.ts @@ -4,14 +4,17 @@ import { writable } from 'svelte/store'; export const queryTodos = writable([ { id: "id1", - text: "todo 1" + text: "todo 1", + type: "x" }, { id: "id2", - text: "todo 2" + text: "todo 2", + type: "x" }, { id: "id3", - text: "todo 3" + text: "todo 3", + type: "z" } ]);