diff --git a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte index b45aba20b1..49b0f4dfcb 100644 --- a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte +++ b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte @@ -7,9 +7,8 @@ import TestJobLoader from '$lib/components/TestJobLoader.svelte' import { AppService, type CompletedJob } from '$lib/gen' import { workspaceStore } from '$lib/stores' - import { faArrowsRotate, faRefresh } from '@fortawesome/free-solid-svg-icons' + import { faRefresh } from '@fortawesome/free-solid-svg-icons' import { getContext } from 'svelte' - import Icon from 'svelte-awesome' import type { Output } from '../../rx' import type { AppEditorContext, InputsSpec } from '../../types' import { loadSchema, schemaToInputsSpec } from '../../utils' @@ -200,11 +199,15 @@ bind:this={testJobLoader} /> -{#if schemaStripped !== undefined} +{#if schemaStripped !== undefined && autoRefresh} {/if} -{#if autoRefresh === true} +{#if inlineScriptName === undefined && path === undefined && runType === undefined && autoRefresh} + + Please select a runnable + +{:else if autoRefresh === true} {#if isValid}
- {#if isOpen} -
- {#if components.length} -
- {#each components as item, componentIndex (componentIndex)} - + {#if isOpen} +
+ {#if components.length} +
+ {#each components as item, componentIndex (componentIndex)} + - {/each} -
- {:else} -
- There are no components in this group yet -
- {/if} -
- {/if} - + > + +
{displayData[item.type].name}
+ + {/each} +
+ {:else} +
+ There are no components in this group yet +
+ {/if} +
+ {/if} + {/each} diff --git a/frontend/src/lib/components/apps/editor/componentsPanel/data.ts b/frontend/src/lib/components/apps/editor/componentsPanel/data.ts index 71c5c3bf29..33f9730b96 100644 --- a/frontend/src/lib/components/apps/editor/componentsPanel/data.ts +++ b/frontend/src/lib/components/apps/editor/componentsPanel/data.ts @@ -23,16 +23,12 @@ const windmillComponents: ComponentSet = { const textInputs: ComponentSet = { title: 'Text Inputs', - components: [ - - ] + components: [] } const numberInputs: ComponentSet = { title: 'Number Inputs', - components: [ - - ] + components: [] } const buttons: ComponentSet = { @@ -67,8 +63,9 @@ const buttons: ComponentSet = { defaultValue: 'md' } }, - runnable: true - }, + runnable: true, + card: false + } ] } @@ -88,16 +85,15 @@ const selectInputs: ComponentSet = { fieldType: 'textarea', defaultValue: 'Lorem ipsum' } - } + }, + card: false } ] } const dateTimeInputs: ComponentSet = { title: 'Date and Time Inputs', - components: [ - - ] + components: [] } const dataDisplay: ComponentSet = { @@ -155,16 +151,10 @@ const dataDisplay: ComponentSet = { type: 'barchartcomponent', runnable: true, card: true - }, + } ] } - - - - - - const componentSets = [ windmillComponents, textInputs, diff --git a/frontend/src/lib/components/apps/editor/contextPanel/ContextPanel.svelte b/frontend/src/lib/components/apps/editor/contextPanel/ContextPanel.svelte index 80ec7f454f..fafc2a6775 100644 --- a/frontend/src/lib/components/apps/editor/contextPanel/ContextPanel.svelte +++ b/frontend/src/lib/components/apps/editor/contextPanel/ContextPanel.svelte @@ -17,7 +17,7 @@ export let appPath: string - const { connectingInput, staticOutputs, app, worldStore } = + const { connectingInput, staticOutputs, app, worldStore, selectedComponent } = getContext('AppEditorContext') let newScriptPath: string let ignorePathError = false @@ -57,7 +57,7 @@ [newScriptPath]: inlineScript } } - scriptCreationDrawer.closeDrawer() + closeDrawer() } function afterCreateScript() { @@ -70,16 +70,17 @@ | undefined = undefined let scriptEditorDrawer: Drawer - let scriptCreationDrawer: Drawer + let scriptCreationDrawer: Drawer | undefined = undefined + + function closeDrawer() { + if (scriptEditorDrawer.closeDrawer) { + scriptEditorDrawer.closeDrawer() + } + } - { - scriptCreationDrawer.closeDrawer() - }} - > +
@@ -88,7 +89,7 @@ id="pathInput" class="grow min-w-[150px]" bind:value={newScriptPath} - on:keypress={e => e.key === 'Enter' && createScript()} + on:keypress={(e) => e.key === 'Enter' && createScript()} /> + iconOnly + />
@@ -157,7 +148,7 @@ on:click={() => { if (value) { selectedScript = value - scriptEditorDrawer.openDrawer() + scriptEditorDrawer.openDrawer && scriptEditorDrawer.openDrawer() } }} /> @@ -185,7 +176,14 @@ {#if outputs.length > 0 && $worldStore?.outputsById[componentId]} Component: {componentId} -
+
void) | undefined = undefined @@ -34,9 +37,11 @@ // Delete static inputs } else { if (component) { - const COLS = 6 $app.grid = $app.grid.filter((gridComponent) => gridComponent.data.id !== component?.id) - $app.grid = gridHelp.adjust($app.grid, COLS) + + gridColumns.forEach((colIndex) => { + $app.grid = gridHelp.adjust($app.grid, colIndex) + }) // Delete static inputs delete $staticOutputs[component.id] @@ -50,27 +55,39 @@
{#if component.runnable} - {#if component['inlineScriptName']} - {component['inlineScriptName']} -
+ {#if component.runnable && component['inlineScriptName']} +
+ {component['inlineScriptName']} +
+ {/if} + {#if component.runnable && component['path']} +
+
+ {capitalize(component['runType'])} + {component['path']} +
+ + ({ summary }))} + on:pick={({ detail }) => { + if (component?.runnable) { + // @ts-ignore + component.inlineScriptName = detail.summary + } + }} + /> +
+ +
Pick from workspace:
+
+ { + if (component?.runnable) { + component['path'] = detail.path + component['runType'] = 'script' + } + }} + /> + { + if (component?.runnable) { + component['path'] = detail.path + component['runType'] = 'flow' + } + }} + /> +
{/if} {/if} diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte index 02c6dca35b..3716e16e41 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte @@ -51,9 +51,8 @@
{ diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/PickFlow.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/PickFlow.svelte index 53248b0b3a..4c6bd09338 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/PickFlow.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/PickFlow.svelte @@ -4,6 +4,7 @@ import { workspaceStore } from '$lib/stores' import { createEventDispatcher } from 'svelte' import Button from '$lib/components/common/button/Button.svelte' + import { Wind } from 'svelte-lucide' type Item = { summary: String; path: String; version?: String } @@ -25,6 +26,17 @@ {loadItems} /> - diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/PickInlineScript.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/PickInlineScript.svelte index 4195edaa17..33c8951f61 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/PickInlineScript.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/PickInlineScript.svelte @@ -2,6 +2,7 @@ import ItemPicker from '$lib/components/ItemPicker.svelte' import { createEventDispatcher } from 'svelte' import Button from '$lib/components/common/button/Button.svelte' + import { MousePointerClick } from 'svelte-lucide' export let scripts: Item[] @@ -27,6 +28,17 @@ {loadItems} /> - diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/TableActions.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/TableActions.svelte index 47bbf136f7..d9ae98d76d 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/TableActions.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/TableActions.svelte @@ -1,6 +1,9 @@ - + 0 ? `(${components.length})` : ''}`}> - + itemPicker.openDrawer()} + btnClasses="w-24 truncate" + size="sm" + spacingSize="md" + variant="border" + color="light" > +
+ + + Script +
+ diff --git a/frontend/src/lib/components/sidebar/SidebarContent.svelte b/frontend/src/lib/components/sidebar/SidebarContent.svelte index 2c6dced6e7..a4ebf05407 100644 --- a/frontend/src/lib/components/sidebar/SidebarContent.svelte +++ b/frontend/src/lib/components/sidebar/SidebarContent.svelte @@ -12,7 +12,7 @@ faCog, faStar } from '@fortawesome/free-solid-svg-icons' - import { faDiscord, faGithub } from '@fortawesome/free-brands-svg-icons' + import { faAppStore, faDiscord, faGithub } from '@fortawesome/free-brands-svg-icons' import MenuLink from './MenuLink.svelte' import { starStore, userStore, workspaceStore } from '$lib/stores' import { FlowService, ScriptService } from '$lib/gen' diff --git a/frontend/src/routes/apps.svelte b/frontend/src/routes/apps.svelte index a329cda11d..954494ad81 100644 --- a/frontend/src/routes/apps.svelte +++ b/frontend/src/routes/apps.svelte @@ -1,24 +1,66 @@ + + @@ -79,57 +111,114 @@ + x.summary + ' (' + x.path + ')'} +/> + - - -
- {#if !apps} -
- {#each new Array(3) as _} - - {/each} -
- {:else if apps?.length == 0} -

No scripts yet

- {:else if apps} -
- {#each apps as { summary, path, extra_perms }} - -
- -
- {!summary || summary.length == 0 ? path : summary} +
+ + + +
+ {#each owners as owner} + { + ownerFilter = ownerFilter == owner ? undefined : owner + }} + color={owner === ownerFilter ? 'blue' : 'gray'} + > + {owner} + {#if owner === ownerFilter}✗{/if} + + {/each} +
+
diff --git a/frontend/src/routes/apps/edit/[...path].svelte b/frontend/src/routes/apps/edit/[...path].svelte index 46f9497680..31374a5751 100644 --- a/frontend/src/routes/apps/edit/[...path].svelte +++ b/frontend/src/routes/apps/edit/[...path].svelte @@ -4,6 +4,8 @@ import { workspaceStore } from '$lib/stores' import { page } from '$app/stores' + import gridHelp from 'svelte-grid/build/helper/index.mjs' + let app: AppWithLastVersion | undefined = undefined let path = $page.params.path diff --git a/frontend/src/routes/apps/get/[...path].svelte b/frontend/src/routes/apps/get/[...path].svelte index 26efa0d1b0..36e6e0c1b5 100644 --- a/frontend/src/routes/apps/get/[...path].svelte +++ b/frontend/src/routes/apps/get/[...path].svelte @@ -8,16 +8,21 @@