From cd4023cdb5dceb6ba5f0cff5ce78c340da468e38 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 3 Feb 2023 02:11:06 +0100 Subject: [PATCH] refactor components to ease adding custom components --- ...nent.svelte => AppDisplayComponent.svelte} | 2 +- .../components/dataDisplay/AppBarChart.svelte | 2 +- .../components/dataDisplay/AppHtml.svelte | 2 +- .../components/dataDisplay/AppPieChart.svelte | 2 +- .../dataDisplay/AppScatterChart.svelte | 2 +- .../components/dataDisplay/AppText.svelte | 18 +- .../dataDisplay/AppTimeseries.svelte | 2 +- .../components/dataDisplay/PlotlyHtml.svelte | 2 +- .../dataDisplay/VegaLiteHtml.svelte | 2 +- .../apps/components/table/AppTable.svelte | 32 +- .../apps/editor/AppComponentInput.svelte | 5 +- .../apps/editor/AppComponentInputs.svelte | 2 +- .../apps/editor/AppEditorHeader.svelte | 3 +- .../components/apps/editor/Component.svelte | 1323 +++++++++++++++++ .../apps/editor/ComponentEditor.svelte | 189 --- .../apps/editor/ComponentHeader.svelte | 3 +- .../components/apps/editor/GridEditor.svelte | 8 +- .../components/apps/editor/TablePanel.svelte | 3 +- .../componentsPanel/ComponentList.svelte | 58 +- .../apps/editor/componentsPanel/data.ts | 597 -------- .../editor/contextPanel/ContextPanel.svelte | 6 +- .../EmptyInlineScript.svelte | 2 +- .../apps/editor/inlineScriptsPanel/utils.ts | 7 +- .../settingsPanel/AlignmentEditor.svelte | 2 +- .../settingsPanel/ComponentPanel.svelte | 3 +- .../editor/settingsPanel/TableActions.svelte | 3 +- .../src/lib/components/apps/editorUtils.ts | 338 ----- frontend/src/lib/components/apps/types.ts | 72 +- frontend/src/lib/components/apps/utils.ts | 125 +- frontend/src/types.d.ts | 2 +- 30 files changed, 1396 insertions(+), 1421 deletions(-) rename frontend/src/lib/components/apps/components/{DisplayComponent.svelte => AppDisplayComponent.svelte} (93%) create mode 100644 frontend/src/lib/components/apps/editor/Component.svelte delete mode 100644 frontend/src/lib/components/apps/editor/ComponentEditor.svelte delete mode 100644 frontend/src/lib/components/apps/editor/componentsPanel/data.ts delete mode 100644 frontend/src/lib/components/apps/editorUtils.ts diff --git a/frontend/src/lib/components/apps/components/DisplayComponent.svelte b/frontend/src/lib/components/apps/components/AppDisplayComponent.svelte similarity index 93% rename from frontend/src/lib/components/apps/components/DisplayComponent.svelte rename to frontend/src/lib/components/apps/components/AppDisplayComponent.svelte index 0acbb65dba..0a5f8d5667 100644 --- a/frontend/src/lib/components/apps/components/DisplayComponent.svelte +++ b/frontend/src/lib/components/apps/components/AppDisplayComponent.svelte @@ -7,7 +7,7 @@ export let id: string export let componentInput: AppInput | undefined - export let initializing + export let initializing: boolean | undefined = undefined const requireHtmlApproval = getContext(IS_APP_PUBLIC_CONTEXT_KEY) let result: any = undefined diff --git a/frontend/src/lib/components/apps/components/dataDisplay/AppBarChart.svelte b/frontend/src/lib/components/apps/components/dataDisplay/AppBarChart.svelte index 86cfb6bc68..2f7f76d720 100644 --- a/frontend/src/lib/components/apps/components/dataDisplay/AppBarChart.svelte +++ b/frontend/src/lib/components/apps/components/dataDisplay/AppBarChart.svelte @@ -18,7 +18,7 @@ export let id: string export let componentInput: AppInput | undefined export let configuration: Record - export let initializing + export let initializing: boolean | undefined = undefined export const staticOutputs: string[] = ['loading', 'result'] diff --git a/frontend/src/lib/components/apps/components/dataDisplay/AppHtml.svelte b/frontend/src/lib/components/apps/components/dataDisplay/AppHtml.svelte index 38881558d8..6b3b7d27f1 100644 --- a/frontend/src/lib/components/apps/components/dataDisplay/AppHtml.svelte +++ b/frontend/src/lib/components/apps/components/dataDisplay/AppHtml.svelte @@ -4,7 +4,7 @@ export let id: string export let componentInput: AppInput | undefined - export let initializing: boolean + export let initializing: boolean | undefined = undefined export const staticOutputs: string[] = ['result', 'loading'] diff --git a/frontend/src/lib/components/apps/components/dataDisplay/AppPieChart.svelte b/frontend/src/lib/components/apps/components/dataDisplay/AppPieChart.svelte index 0e6239865a..87a3f19ecc 100644 --- a/frontend/src/lib/components/apps/components/dataDisplay/AppPieChart.svelte +++ b/frontend/src/lib/components/apps/components/dataDisplay/AppPieChart.svelte @@ -18,7 +18,7 @@ export let id: string export let componentInput: AppInput | undefined export let configuration: Record - export let initializing + export let initializing: boolean | undefined = undefined export const staticOutputs: string[] = ['loading', 'result'] diff --git a/frontend/src/lib/components/apps/components/dataDisplay/AppScatterChart.svelte b/frontend/src/lib/components/apps/components/dataDisplay/AppScatterChart.svelte index e541843ab4..f39e0386c1 100644 --- a/frontend/src/lib/components/apps/components/dataDisplay/AppScatterChart.svelte +++ b/frontend/src/lib/components/apps/components/dataDisplay/AppScatterChart.svelte @@ -19,7 +19,7 @@ export let id: string export let componentInput: AppInput | undefined export let configuration: Record - export let initializing + export let initializing: boolean | undefined = undefined let zoomable = false let pannable = false diff --git a/frontend/src/lib/components/apps/components/dataDisplay/AppText.svelte b/frontend/src/lib/components/apps/components/dataDisplay/AppText.svelte index 7cb1ba867a..7e251e5e39 100644 --- a/frontend/src/lib/components/apps/components/dataDisplay/AppText.svelte +++ b/frontend/src/lib/components/apps/components/dataDisplay/AppText.svelte @@ -13,7 +13,7 @@ export let horizontalAlignment: 'left' | 'center' | 'right' | undefined = 'left' export let verticalAlignment: 'top' | 'center' | 'bottom' | undefined = undefined export let configuration: Record - export let initializing + export let initializing: boolean | undefined = undefined export const staticOutputs: string[] = ['result', 'loading'] @@ -68,25 +68,15 @@ {:else}
- + {String(result)} {#if copyButton && result} - - - Copy to clipboard - + Copy to clipboard {/if}
diff --git a/frontend/src/lib/components/apps/components/dataDisplay/AppTimeseries.svelte b/frontend/src/lib/components/apps/components/dataDisplay/AppTimeseries.svelte index fd17193c9a..d44d2affa4 100644 --- a/frontend/src/lib/components/apps/components/dataDisplay/AppTimeseries.svelte +++ b/frontend/src/lib/components/apps/components/dataDisplay/AppTimeseries.svelte @@ -22,7 +22,7 @@ export let id: string export let componentInput: AppInput | undefined export let configuration: Record - export let initializing + export let initializing: boolean | undefined = undefined export const staticOutputs: string[] = ['loading', 'result'] diff --git a/frontend/src/lib/components/apps/components/dataDisplay/PlotlyHtml.svelte b/frontend/src/lib/components/apps/components/dataDisplay/PlotlyHtml.svelte index 9e5fb8a23a..a7f05e0a32 100644 --- a/frontend/src/lib/components/apps/components/dataDisplay/PlotlyHtml.svelte +++ b/frontend/src/lib/components/apps/components/dataDisplay/PlotlyHtml.svelte @@ -7,7 +7,7 @@ export let id: string export let componentInput: AppInput | undefined export let configuration: Record - export let initializing + export let initializing: boolean | undefined = undefined export const staticOutputs: string[] = ['result', 'loading'] diff --git a/frontend/src/lib/components/apps/components/dataDisplay/VegaLiteHtml.svelte b/frontend/src/lib/components/apps/components/dataDisplay/VegaLiteHtml.svelte index e6bed084ff..52085aa89e 100644 --- a/frontend/src/lib/components/apps/components/dataDisplay/VegaLiteHtml.svelte +++ b/frontend/src/lib/components/apps/components/dataDisplay/VegaLiteHtml.svelte @@ -8,7 +8,7 @@ export let id: string export let componentInput: AppInput | undefined export let configuration: Record - export let initializing + export let initializing: boolean | undefined = undefined export const staticOutputs: string[] = ['result', 'loading'] diff --git a/frontend/src/lib/components/apps/components/table/AppTable.svelte b/frontend/src/lib/components/apps/components/table/AppTable.svelte index 965dfbe3af..8180227c58 100644 --- a/frontend/src/lib/components/apps/components/table/AppTable.svelte +++ b/frontend/src/lib/components/apps/components/table/AppTable.svelte @@ -1,7 +1,7 @@ + + + +
(hover = true)} + on:pointerleave={() => (hover = false)} + class="h-full flex flex-col w-full component" +> + {#if $mode !== 'preview'} + + {/if} + +
{ + // Removed in https://github.com/windmill-labs/windmill/pull/1171 + // In case of a bug, try stopping propagation on the native event + // and dispatch a custom event: `e?.stopPropagation(); dispatch('select');` + // if ($mode === 'preview') { + // e?.stopPropagation() + // } + }} + class={classNames( + 'border h-full bg-white', + selected && $mode !== 'preview' ? 'border-blue-500' : 'border-white', + !selected && $mode !== 'preview' && !component.card ? 'border-gray-100' : '', + $mode !== 'preview' && !$connectingInput.opened ? 'hover:border-blue-500' : '', + component.softWrap ? '' : 'overflow-auto', + $mode != 'preview' ? 'cursor-pointer' : '', + 'relative z-auto' + )} + > + {#if component.type === 'displaycomponent'} + + {:else if component.type === 'barchartcomponent'} + + {:else if component.type === 'timeseriescomponent'} + + {:else if component.type === 'htmlcomponent'} + + {:else if component.type === 'vegalitecomponent'} + + {:else if component.type === 'plotlycomponent'} + + {:else if component.type === 'scatterchartcomponent'} + + {:else if component.type === 'piechartcomponent'} + + {:else if component.type === 'tablecomponent'} + + {:else if component.type === 'textcomponent'} + + {:else if component.type === 'buttoncomponent'} + + {:else if component.type === 'selectcomponent'} + + {:else if component.type === 'formcomponent'} + + {:else if component.type === 'formbuttoncomponent'} + + {:else if component.type === 'checkboxcomponent'} + + {:else if component.type === 'textinputcomponent'} + + {:else if component.type === 'passwordinputcomponent'} + + {:else if component.type === 'dateinputcomponent'} + + {:else if component.type === 'numberinputcomponent'} + + {:else if component.type === 'slidercomponent'} + + {/if} +
+
+{#if initializing} +
+ + Loading +
+{/if} diff --git a/frontend/src/lib/components/apps/editor/ComponentEditor.svelte b/frontend/src/lib/components/apps/editor/ComponentEditor.svelte deleted file mode 100644 index 5a3100d012..0000000000 --- a/frontend/src/lib/components/apps/editor/ComponentEditor.svelte +++ /dev/null @@ -1,189 +0,0 @@ - - -
(hover = true)} - on:pointerleave={() => (hover = false)} - class="h-full flex flex-col w-full component" -> - {#if $mode !== 'preview'} - - {/if} - -
{ - // Removed in https://github.com/windmill-labs/windmill/pull/1171 - // In case of a bug, try stopping propagation on the native event - // and dispatch a custom event: `e?.stopPropagation(); dispatch('select');` - - // if ($mode === 'preview') { - // e?.stopPropagation() - // } - }} - class={classNames( - 'border h-full bg-white', - selected && $mode !== 'preview' ? 'border-blue-500' : 'border-white', - !selected && $mode !== 'preview' && !component.card ? 'border-gray-100' : '', - $mode !== 'preview' && !$connectingInput.opened ? 'hover:border-blue-500' : '', - component.softWrap ? '' : 'overflow-auto', - $mode != 'preview' ? 'cursor-pointer' : '', - 'relative z-auto' - )} - > - {#if component.type === 'displaycomponent'} - - {:else if component.type === 'barchartcomponent'} - - {:else if component.type === 'timeseriescomponent'} - - {:else if component.type === 'htmlcomponent'} - - {:else if component.type === 'vegalitecomponent'} - - {:else if component.type === 'plotlycomponent'} - - {:else if component.type === 'scatterchartcomponent'} - - {:else if component.type === 'piechartcomponent'} - - {:else if component.type === 'tablecomponent'} - - {:else if component.type === 'textcomponent'} - - {:else if component.type === 'buttoncomponent'} - - {:else if component.type === 'selectcomponent'} - - {:else if component.type === 'formcomponent'} - - {:else if component.type === 'formbuttoncomponent'} - - {:else if component.type === 'checkboxcomponent'} - - {:else if component.type === 'textinputcomponent'} - - {:else if component.type === 'passwordinputcomponent'} - - {:else if component.type === 'dateinputcomponent'} - - {:else if component.type === 'numberinputcomponent'} - - {:else if component.type === 'slidercomponent'} - - {/if} -
-
-{#if initializing} -
- - Loading -
-{/if} diff --git a/frontend/src/lib/components/apps/editor/ComponentHeader.svelte b/frontend/src/lib/components/apps/editor/ComponentHeader.svelte index d0fe181c5a..5f67baf2c3 100644 --- a/frontend/src/lib/components/apps/editor/ComponentHeader.svelte +++ b/frontend/src/lib/components/apps/editor/ComponentHeader.svelte @@ -1,10 +1,11 @@