From 3d873ed51c769005981a8d8dfb95faa3ca33bb83 Mon Sep 17 00:00:00 2001 From: Faton Ramadani Date: Thu, 19 Jan 2023 14:08:32 +0100 Subject: [PATCH 01/16] fix(frontend): add missing condition to properly select first row (#1128) --- .../src/lib/components/apps/components/table/AppTable.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/lib/components/apps/components/table/AppTable.svelte b/frontend/src/lib/components/apps/components/table/AppTable.svelte index 606962dc41..4d9f54a48e 100644 --- a/frontend/src/lib/components/apps/components/table/AppTable.svelte +++ b/frontend/src/lib/components/apps/components/table/AppTable.svelte @@ -65,6 +65,7 @@ result.length > 0 && // We need to wait until the component is mounted so the world is created mounted && + outputs && toggleRow({ original: result[0] }, 0) function setOptions(filteredResult: Array>) { From ee14bed3d93da9120e16c742443d2414f68634da Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 19 Jan 2023 14:34:59 +0100 Subject: [PATCH 02/16] relax nsjail limits --- backend/windmill-worker/nsjail/run.bash.config.proto | 8 ++------ backend/windmill-worker/nsjail/run.deno.config.proto | 6 +----- backend/windmill-worker/nsjail/run.go.config.proto | 6 +----- backend/windmill-worker/nsjail/run.python3.config.proto | 6 +----- 4 files changed, 5 insertions(+), 21 deletions(-) diff --git a/backend/windmill-worker/nsjail/run.bash.config.proto b/backend/windmill-worker/nsjail/run.bash.config.proto index e93e6b4557..1862ac6b8d 100644 --- a/backend/windmill-worker/nsjail/run.bash.config.proto +++ b/backend/windmill-worker/nsjail/run.bash.config.proto @@ -3,12 +3,8 @@ name: "bash run script" mode: ONCE hostname: "bash" log_level: ERROR -time_limit: 300 -rlimit_as: 2048 -rlimit_cpu: 1000 -rlimit_fsize: 1024 -rlimit_nofile: 64 +rlimit_nofile: 10000 cwd: "/tmp" @@ -87,4 +83,4 @@ iface_no_lo: true {SHARED_MOUNT} - +envar: "HOME=/tmp" diff --git a/backend/windmill-worker/nsjail/run.deno.config.proto b/backend/windmill-worker/nsjail/run.deno.config.proto index 9f106c231f..7ea972d8a7 100644 --- a/backend/windmill-worker/nsjail/run.deno.config.proto +++ b/backend/windmill-worker/nsjail/run.deno.config.proto @@ -3,12 +3,8 @@ name: "deno run script" mode: ONCE hostname: "deno" log_level: ERROR -time_limit: 300 -rlimit_as: 16000 -rlimit_cpu: 1000 -rlimit_fsize: 1024 -rlimit_nofile: 64 +rlimit_nofile: 10000 cwd: "/tmp" diff --git a/backend/windmill-worker/nsjail/run.go.config.proto b/backend/windmill-worker/nsjail/run.go.config.proto index 3af548d18c..116c861b07 100644 --- a/backend/windmill-worker/nsjail/run.go.config.proto +++ b/backend/windmill-worker/nsjail/run.go.config.proto @@ -3,12 +3,8 @@ name: "go run script" mode: ONCE hostname: "go" log_level: ERROR -time_limit: 300 -rlimit_as: 2048 -rlimit_cpu: 1000 -rlimit_fsize: 1024 -rlimit_nofile: 64 +rlimit_nofile: 10000 cwd: "/tmp/go" diff --git a/backend/windmill-worker/nsjail/run.python3.config.proto b/backend/windmill-worker/nsjail/run.python3.config.proto index 5747d3cb3f..80865ac0c4 100644 --- a/backend/windmill-worker/nsjail/run.python3.config.proto +++ b/backend/windmill-worker/nsjail/run.python3.config.proto @@ -3,12 +3,8 @@ name: "python run script" mode: ONCE hostname: "python" log_level: ERROR -time_limit: 300 -rlimit_as: 2048 -rlimit_cpu: 1000 -rlimit_fsize: 1024 -rlimit_nofile: 64 +rlimit_nofile: 10000 cwd: "/tmp" From e371fda1ce95bfab090dc115117cb0fb41f80b51 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 19 Jan 2023 14:51:43 +0100 Subject: [PATCH 03/16] relax nsjail limits --- backend/windmill-worker/nsjail/run.bash.config.proto | 3 +++ backend/windmill-worker/nsjail/run.deno.config.proto | 3 +++ backend/windmill-worker/nsjail/run.go.config.proto | 3 +++ backend/windmill-worker/nsjail/run.python3.config.proto | 3 +++ 4 files changed, 12 insertions(+) diff --git a/backend/windmill-worker/nsjail/run.bash.config.proto b/backend/windmill-worker/nsjail/run.bash.config.proto index 1862ac6b8d..b18a521ee5 100644 --- a/backend/windmill-worker/nsjail/run.bash.config.proto +++ b/backend/windmill-worker/nsjail/run.bash.config.proto @@ -4,6 +4,9 @@ mode: ONCE hostname: "bash" log_level: ERROR +rlimit_as: 4096 +rlimit_cpu: 1000 +rlimit_fsize: 1000 rlimit_nofile: 10000 cwd: "/tmp" diff --git a/backend/windmill-worker/nsjail/run.deno.config.proto b/backend/windmill-worker/nsjail/run.deno.config.proto index 7ea972d8a7..b8a904d773 100644 --- a/backend/windmill-worker/nsjail/run.deno.config.proto +++ b/backend/windmill-worker/nsjail/run.deno.config.proto @@ -4,6 +4,9 @@ mode: ONCE hostname: "deno" log_level: ERROR +rlimit_as: 4096 +rlimit_cpu: 1000 +rlimit_fsize: 1000 rlimit_nofile: 10000 cwd: "/tmp" diff --git a/backend/windmill-worker/nsjail/run.go.config.proto b/backend/windmill-worker/nsjail/run.go.config.proto index 116c861b07..7bc44b6a4c 100644 --- a/backend/windmill-worker/nsjail/run.go.config.proto +++ b/backend/windmill-worker/nsjail/run.go.config.proto @@ -4,6 +4,9 @@ mode: ONCE hostname: "go" log_level: ERROR +rlimit_as: 4096 +rlimit_cpu: 1000 +rlimit_fsize: 1000 rlimit_nofile: 10000 cwd: "/tmp/go" diff --git a/backend/windmill-worker/nsjail/run.python3.config.proto b/backend/windmill-worker/nsjail/run.python3.config.proto index 80865ac0c4..ef4e9a77d8 100644 --- a/backend/windmill-worker/nsjail/run.python3.config.proto +++ b/backend/windmill-worker/nsjail/run.python3.config.proto @@ -4,6 +4,9 @@ mode: ONCE hostname: "python" log_level: ERROR +rlimit_as: 4096 +rlimit_cpu: 1000 +rlimit_fsize: 1000 rlimit_nofile: 10000 cwd: "/tmp" From e969af9e44d1b4409064080e8662552ee3e262e8 Mon Sep 17 00:00:00 2001 From: Faton Ramadani Date: Thu, 19 Jan 2023 14:52:32 +0100 Subject: [PATCH 04/16] =?UTF-8?q?feat(frontend):=20add=20support=20for=20b?= =?UTF-8?q?ackground=20scripts=20+=20add=20FormButtonCo=E2=80=A6=20(#1124)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(frontend): add support for background scripts + add FormButtonComponnet * feat(frontend): add background script fields * feat(frontend): Handle deletion + display of results * feat(frontend): Fix background script ids: Runnable ids needs to be valid js expression, because they are used in the evaluator. * feat(frontend): add a portal to display modal * feat(frontend): fix build * feat(frontend): Add missing props * feat(frontend): Fix run button + add tooltip + fix icon --- frontend/package-lock.json | 11 + frontend/package.json | 3 +- .../apps/components/HiddenComponent.svelte | 28 +++ .../apps/components/buttons/AppButton.svelte | 4 +- .../apps/components/form/AppFormButton.svelte | 159 +++++++++++++ .../apps/editor/ComponentEditor.svelte | 7 + .../components/apps/editor/GridEditor.svelte | 13 ++ .../apps/editor/SettingsPanel.svelte | 17 +- .../apps/editor/componentsPanel/data.ts | 208 +++++++++++------- .../editor/contextPanel/ContextPanel.svelte | 2 + .../InlineScriptEditor.svelte | 5 +- .../InlineScriptsPanel.svelte | 30 ++- .../InlineScriptsPanelList.svelte | 63 +++++- .../settingsPanel/ComponentPanel.svelte | 2 +- .../mainInput/RunnableSelector.svelte | 29 +-- frontend/src/lib/components/apps/types.ts | 41 ++-- frontend/src/lib/components/apps/utils.ts | 83 +++++-- .../ConfirmationModal.svelte | 9 +- .../UnsavedConfirmationModal.svelte | 8 +- .../lib/components/common/modal/Modal.svelte | 76 +++++++ .../(root)/(logged)/apps/add/+page.svelte | 3 +- 21 files changed, 644 insertions(+), 157 deletions(-) create mode 100644 frontend/src/lib/components/apps/components/HiddenComponent.svelte create mode 100644 frontend/src/lib/components/apps/components/form/AppFormButton.svelte create mode 100644 frontend/src/lib/components/common/modal/Modal.svelte diff --git a/frontend/package-lock.json b/frontend/package-lock.json index bf32b04a43..ca3e1b96f2 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -24,6 +24,7 @@ "monaco-yaml": "^4.0.2", "svelte-autosize": "^1.0.1", "svelte-chartjs": "^3.1.0", + "svelte-portal": "^2.2.0", "svelte-select": "^5.0.2", "vscode-ws-jsonrpc": "^2.0.1" }, @@ -6256,6 +6257,11 @@ "svelte": ">=3" } }, + "node_modules/svelte-portal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/svelte-portal/-/svelte-portal-2.2.0.tgz", + "integrity": "sha512-jhtZWtD6cUE2nMw46dJ5VXWYiqnER+JH+V/BmNBQ5fNP/YdsJCpJi+DemUy9msklqGb0f+wLhJPBtKHLWQvzjg==" + }, "node_modules/svelte-preprocess": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.0.tgz", @@ -11548,6 +11554,11 @@ "dev": true, "requires": {} }, + "svelte-portal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/svelte-portal/-/svelte-portal-2.2.0.tgz", + "integrity": "sha512-jhtZWtD6cUE2nMw46dJ5VXWYiqnER+JH+V/BmNBQ5fNP/YdsJCpJi+DemUy9msklqGb0f+wLhJPBtKHLWQvzjg==" + }, "svelte-preprocess": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index dd5bc7b8f4..910f271e1f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -21,8 +21,8 @@ "@sveltejs/package": "^1.0.1", "@tailwindcss/forms": "^0.5.3", "@tailwindcss/typography": "^0.5.8", - "@types/vscode": "~1.74.0", "@types/node": "^18.11.18", + "@types/vscode": "~1.74.0", "@typescript-eslint/eslint-plugin": "^5.46.1", "@typescript-eslint/parser": "^5.48.0", "@windmill-labs/svelvet": "^4.0.20", @@ -77,6 +77,7 @@ "monaco-yaml": "^4.0.2", "svelte-autosize": "^1.0.1", "svelte-chartjs": "^3.1.0", + "svelte-portal": "^2.2.0", "svelte-select": "^5.0.2", "vscode-ws-jsonrpc": "^2.0.1" }, diff --git a/frontend/src/lib/components/apps/components/HiddenComponent.svelte b/frontend/src/lib/components/apps/components/HiddenComponent.svelte new file mode 100644 index 0000000000..ab76911659 --- /dev/null +++ b/frontend/src/lib/components/apps/components/HiddenComponent.svelte @@ -0,0 +1,28 @@ + + + + + diff --git a/frontend/src/lib/components/apps/components/buttons/AppButton.svelte b/frontend/src/lib/components/apps/components/buttons/AppButton.svelte index 262961aa65..4908997a94 100644 --- a/frontend/src/lib/components/apps/components/buttons/AppButton.svelte +++ b/frontend/src/lib/components/apps/components/buttons/AppButton.svelte @@ -86,11 +86,11 @@ e?.stopPropagation() window.dispatchEvent(new Event('pointerup')) }} - on:click={(e) => { + on:click={async (e) => { e?.stopPropagation() e?.preventDefault() ownClick = true - runnableComponent?.runComponent() + await runnableComponent?.runComponent() if (recomputeIds) { recomputeIds.forEach((id) => { diff --git a/frontend/src/lib/components/apps/components/form/AppFormButton.svelte b/frontend/src/lib/components/apps/components/form/AppFormButton.svelte new file mode 100644 index 0000000000..30166c49a2 --- /dev/null +++ b/frontend/src/lib/components/apps/components/form/AppFormButton.svelte @@ -0,0 +1,159 @@ + + + + + + + + + { + open = false + }} + on:confirmed={() => { + open = false + }} + > + +
+
+ {#if noInputs} +
+ Run forms are associated with a runnable that has user inputs. +
+ Once a script or flow is chosen, set some Runnable Inputs to + + User Input + + +
+ {/if} +
+
+ +
+
+
+
+
+ + + {#if errorsMessage} +
{errorsMessage}
+ {/if} + +
diff --git a/frontend/src/lib/components/apps/editor/ComponentEditor.svelte b/frontend/src/lib/components/apps/editor/ComponentEditor.svelte index ee3ed634f8..9ea8e17bf4 100644 --- a/frontend/src/lib/components/apps/editor/ComponentEditor.svelte +++ b/frontend/src/lib/components/apps/editor/ComponentEditor.svelte @@ -19,6 +19,7 @@ import AppTimeseries from '../components/dataDisplay/AppTimeseries.svelte' import AppHtml from '../components/dataDisplay/AppHtml.svelte' import AppSliderInputs from '../components/numberInputs/AppSliderInputs.svelte' + import AppFormButton from '../components/form/AppFormButton.svelte' import VegaLiteHtml from '../components/dataDisplay/VegaLiteHtml.svelte' export let component: AppComponent @@ -124,6 +125,12 @@ bind:componentInput={component.componentInput} bind:staticOutputs={$staticOutputs[component.id]} /> + {:else if component.type === 'formbuttoncomponent'} + {:else if component.type === 'checkboxcomponent'} {:else if component.type === 'textinputcomponent'} diff --git a/frontend/src/lib/components/apps/editor/GridEditor.svelte b/frontend/src/lib/components/apps/editor/GridEditor.svelte index f6dfab6164..1a46fd32c3 100644 --- a/frontend/src/lib/components/apps/editor/GridEditor.svelte +++ b/frontend/src/lib/components/apps/editor/GridEditor.svelte @@ -8,6 +8,7 @@ import RecomputeAllComponents from './RecomputeAllComponents.svelte' import type { Policy } from '$lib/gen' + import HiddenComponent from '../components/HiddenComponent.svelte' export let policy: Policy @@ -176,6 +177,18 @@ +{#each $app.hiddenInlineScripts as script, index} + {#if script} + + {/if} +{/each} +