From 6cf0bb17a0e8205a461988914deebfbe7f80c6b1 Mon Sep 17 00:00:00 2001 From: Faton Ramadani Date: Tue, 22 Nov 2022 15:45:10 +0100 Subject: [PATCH] Runnable refactor (#929) * fix(frontend): Support runnable everywhere * fix(frontend): Runnable component working --- frontend/src/lib/components/SchemaForm.svelte | 7 +- .../charts/PieChartComponent.svelte | 49 ++--- .../helpers/RunnableComponent.svelte | 168 ++++++++++-------- .../helpers/RunnableInputValue.svelte | 27 +++ .../apps/editor/ComponentEditor.svelte | 6 +- .../apps/editor/componentsPanel/data.ts | 9 +- .../contextPanel/ComponentOutputViewer.svelte | 1 - frontend/src/lib/components/apps/rx.ts | 1 - frontend/src/lib/components/apps/types.ts | 2 +- .../lib/components/common/alert/Alert.svelte | 10 +- 10 files changed, 156 insertions(+), 124 deletions(-) create mode 100644 frontend/src/lib/components/apps/components/helpers/RunnableInputValue.svelte diff --git a/frontend/src/lib/components/SchemaForm.svelte b/frontend/src/lib/components/SchemaForm.svelte index 5b67ee7360..dbd76eaf6a 100644 --- a/frontend/src/lib/components/SchemaForm.svelte +++ b/frontend/src/lib/components/SchemaForm.svelte @@ -16,6 +16,9 @@ export let extraLib: string = 'missing extraLib' export let autofocus = false export let previousModuleId: string | undefined = undefined + + export let shouldHideNoInputs: boolean = false + let clazz: string = '' export { clazz as class } @@ -73,7 +76,7 @@ {/if} {/each} - {:else} -

No inputs

+ {:else if !shouldHideNoInputs} +
No inputs
{/if} diff --git a/frontend/src/lib/components/apps/components/charts/PieChartComponent.svelte b/frontend/src/lib/components/apps/components/charts/PieChartComponent.svelte index 1a771079cf..ff98625c12 100644 --- a/frontend/src/lib/components/apps/components/charts/PieChartComponent.svelte +++ b/frontend/src/lib/components/apps/components/charts/PieChartComponent.svelte @@ -13,11 +13,16 @@ ArcElement } from 'chart.js' import type { ChartData } from 'chart.js' - import ComponentInputValue from '../helpers/ComponentInputValue.svelte' - import type { ComponentInputsSpec } from '../../types' + import type { InputsSpec } from '../../types' + import RunnableComponent from '../helpers/RunnableComponent.svelte' - export let componentInputs: ComponentInputsSpec - export const staticOutputs: string[] = [] + export let id: string + export let inputs: InputsSpec + export let path: string | undefined = undefined + export let runType: 'script' | 'flow' | undefined = undefined + export let inlineScriptName: string | undefined = undefined + + export const staticOutputs: string[] = ['loading', 'result'] ChartJS.register( Title, @@ -34,33 +39,13 @@ responsive: true } - let dataSetValue: Record | undefined = undefined - - let data: ChartData<'pie', number[], unknown> = { datasets: [], labels: [] } - - function populateDataSet() { - if (dataSetValue) { - data.datasets = [ - { - data: Object.values(dataSetValue).filter((val) => typeof val === 'number'), - backgroundColor: ['#F7464A', '#46BFBD', '#FDB45C', '#949FB1', '#4D5360', '#AC64AD'], - hoverBackgroundColor: ['#FF5A5E', '#5AD3D1', '#FFC870', '#A8B3C5', '#616774', '#DA92DB'] - } - ] - data.labels = Object.keys(dataSetValue) - .filter((key) => typeof dataSetValue?.[key] === 'number') - .map((s) => s.replace(/([A-Z]+)*([A-Z][a-z])/g, '$1 $2')) - - data = data - } - } - - $: dataSetValue && populateDataSet() + let result: ChartData<'pie', number[], unknown> | undefined = undefined - -{#if data.datasets.length > 0} - -{:else} - No dataset -{/if} + + {#if result} + + {:else} + No dataset + {/if} + diff --git a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte index ee65b99fa9..c433449976 100644 --- a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte +++ b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte @@ -1,6 +1,7 @@ +{#each Object.keys(inputs) as key} + +{/each} + { if (testJob) { @@ -156,18 +172,24 @@ bind:this={testJobLoader} /> -{#if schemaClone !== undefined} - +{#if schemaStripped !== undefined} + {/if} {#if shouldTick === undefined} - + {#if isValid} + + + {:else} + + Please fill in all the inputs + + {/if} {/if} - diff --git a/frontend/src/lib/components/apps/components/helpers/RunnableInputValue.svelte b/frontend/src/lib/components/apps/components/helpers/RunnableInputValue.svelte new file mode 100644 index 0000000000..72a0704aad --- /dev/null +++ b/frontend/src/lib/components/apps/components/helpers/RunnableInputValue.svelte @@ -0,0 +1,27 @@ + diff --git a/frontend/src/lib/components/apps/editor/ComponentEditor.svelte b/frontend/src/lib/components/apps/editor/ComponentEditor.svelte index 1951f55ff3..84a6fe4bc6 100644 --- a/frontend/src/lib/components/apps/editor/ComponentEditor.svelte +++ b/frontend/src/lib/components/apps/editor/ComponentEditor.svelte @@ -47,7 +47,11 @@ {:else if component.type === 'barchartcomponent'} {:else if component.type === 'piechartcomponent'} - + {:else if component.type === 'tablecomponent'} { - console.log({ output }) $worldStore?.outputsById[componentId][output].subscribe({ next: (value) => { object[output] = value diff --git a/frontend/src/lib/components/apps/rx.ts b/frontend/src/lib/components/apps/rx.ts index cb4c6fb3f7..1321c5ca93 100644 --- a/frontend/src/lib/components/apps/rx.ts +++ b/frontend/src/lib/components/apps/rx.ts @@ -21,7 +21,6 @@ export type World = { } export function buildWorld(components: Record) { - console.log({ components }) const newWorld = buildObservableWorld() const outputsById: Record>> = {} diff --git a/frontend/src/lib/components/apps/types.ts b/frontend/src/lib/components/apps/types.ts index ca08699255..6ec1c5cc01 100644 --- a/frontend/src/lib/components/apps/types.ts +++ b/frontend/src/lib/components/apps/types.ts @@ -59,7 +59,7 @@ export type BarChartComponent = { type: 'barchartcomponent' } -export type PieChartComponent = { +export type PieChartComponent = Runnable & { type: 'piechartcomponent' } diff --git a/frontend/src/lib/components/common/alert/Alert.svelte b/frontend/src/lib/components/common/alert/Alert.svelte index 6096d88136..55a4de16a9 100644 --- a/frontend/src/lib/components/common/alert/Alert.svelte +++ b/frontend/src/lib/components/common/alert/Alert.svelte @@ -21,25 +21,25 @@ const classes: Record> = { info: { - bgClass: 'bg-blue-50', + bgClass: 'bg-blue-50 border-blue-200 border', iconClass: 'text-blue-500', titleClass: 'text-blue-800', descriptionClass: 'text-blue-700' }, warning: { - bgClass: 'bg-yellow-50', + bgClass: 'bg-yellow-50 border-yellow-200 border', iconClass: 'text-yellow-500', titleClass: 'text-yellow-800', descriptionClass: 'text-yellow-700' }, error: { - bgClass: 'bg-red-50', + bgClass: 'bg-red-50 border-red-200 border', iconClass: 'text-red-500', titleClass: 'text-red-800', descriptionClass: 'text-red-700' }, success: { - bgClass: 'bg-green-50', + bgClass: 'bg-green-50 border-green-200 border', iconClass: 'text-green-500', titleClass: 'text-green-800', descriptionClass: 'text-green-700' @@ -47,7 +47,7 @@ } -
+