From 72a6004380c3a12b78d3cd61d00fb97e2ae24028 Mon Sep 17 00:00:00 2001 From: Faton Ramadani Date: Wed, 3 Aug 2022 19:51:58 +0200 Subject: [PATCH] Flow: Input connect (#325) * Fix EditorBar in the script editor * Rework ArgInput * Add a button to link a property * Adapt style * Clean up * Clean up Toggle * Clean up Toggleclear * Fix editor * Fix login test * Fix login test * Done * Fix toggling issues --- frontend/src/lib/components/ArgInput.svelte | 70 +++--- .../src/lib/components/FlowBuilder.svelte | 12 +- .../lib/components/InputTransformForm.svelte | 225 ++++++++++++++++++ .../src/lib/components/ResourcePicker.svelte | 4 +- frontend/src/lib/components/RunForm.svelte | 25 +- .../src/lib/components/SchemaEditor.svelte | 12 +- .../components/SchemaEditorProperty.svelte | 14 ++ frontend/src/lib/components/SchemaForm.svelte | 198 ++------------- .../src/lib/components/ScriptEditor.svelte | 13 +- .../src/lib/components/TableSimple.svelte | 2 +- frontend/src/lib/components/Toggle.svelte | 26 +- .../lib/components/flows/FlowSettings.svelte | 4 +- .../src/lib/components/flows/flowStore.ts | 1 + frontend/src/lib/components/flows/utils.ts | 30 +-- .../ClickablePropertyPicker.svelte | 52 ++++ .../OverlayPropertyPicker.svelte | 2 +- frontend/src/lib/infer.ts | 7 +- frontend/src/routes/groups.svelte | 28 ++- frontend/src/routes/workers.svelte | 15 +- frontend/tests/global-setup.ts | 27 ++- 20 files changed, 453 insertions(+), 314 deletions(-) create mode 100644 frontend/src/lib/components/InputTransformForm.svelte create mode 100644 frontend/src/lib/components/SchemaEditorProperty.svelte create mode 100644 frontend/src/lib/components/propertyPicker/ClickablePropertyPicker.svelte diff --git a/frontend/src/lib/components/ArgInput.svelte b/frontend/src/lib/components/ArgInput.svelte index be51e92b59..5c28c72250 100644 --- a/frontend/src/lib/components/ArgInput.svelte +++ b/frontend/src/lib/components/ArgInput.svelte @@ -1,23 +1,30 @@ + +{#if arg != undefined} +
+
+ + + {#if !checked && arg.type === 'javascript'} + + {'${...}'} + + {/if} +
+ { + const type = e.detail ? 'javascript' : 'static' + const staticTemplate = isStaticTemplate(inputCats[argName]) + if (type === 'javascript') { + arg.expr = getDefaultExpr( + i ?? -1, + argName, + staticTemplate ? `\`${arg.value ?? ''}\`` : undefined + ) + arg.value = undefined + propertyType = 'javascript' + } else { + arg.value = staticTemplate ? codeToStaticTemplate(arg.expr) : undefined + + arg.expr = undefined + propertyType = 'static' + } + + arg.type = type + }} + /> +
+
+ + {#if propertyType === undefined || !checked} + { + const toAppend = `\$\{${event.detail}}` + arg.value = `${arg.value ?? ''}${toAppend}` + if (monacos[argName]) { + monacos[argName].setCode(arg.value) + } + setPropertyType(argName, arg.value, false) + }} + > + focusProp(argName)} + label={argName} + bind:editor={monacos[argName]} + bind:description={schema.properties[argName].description} + bind:value={arg.value} + type={schema.properties[argName].type} + required={schema.required.includes(argName)} + bind:pattern={schema.properties[argName].pattern} + bind:valid={inputCheck[argName]} + defaultValue={schema.properties[argName].default} + bind:enum_={schema.properties[argName].enum} + bind:format={schema.properties[argName].format} + contentEncoding={schema.properties[argName].contentEncoding} + bind:itemsType={schema.properties[argName].items} + displayHeader={false} + bind:inputCat={inputCats[argName]} + numberAsString={true} + on:input={(e) => { + if (isStaticTemplate(inputCats[argName])) { + setPropertyType(argName, e.detail.rawValue, e.detail.isRaw) + } + }} + > +
+ onPropertyLink(argName, event.detail)} + > + + + + +
+
+
+ {:else if checked} + {#if arg.expr != undefined} + { + monacos[argName].insertAtCursor(event.detail) + }} + > +
+ focusProp(argName)} + bind:code={arg.expr} + lang="javascript" + class="few-lines-editor" + {extraLib} + extraLibPath="file:///node_modules/@types/windmill@{i}/index.d.ts" + /> +
+
+ + {/if} + {:else} +

Not recognized arg type {arg.type}

+ {/if} +{:else} +

Arg at {argName} is undefined

+{/if} diff --git a/frontend/src/lib/components/ResourcePicker.svelte b/frontend/src/lib/components/ResourcePicker.svelte index 2d7cff3f65..53c77ac009 100644 --- a/frontend/src/lib/components/ResourcePicker.svelte +++ b/frontend/src/lib/components/ResourcePicker.svelte @@ -1,5 +1,5 @@ loadResources(resourceType)} /> - diff --git a/frontend/src/lib/components/RunForm.svelte b/frontend/src/lib/components/RunForm.svelte index ef0718dbf5..c286b05e03 100644 --- a/frontend/src/lib/components/RunForm.svelte +++ b/frontend/src/lib/components/RunForm.svelte @@ -1,14 +1,14 @@ + +{property.type?.toUpperCase() ?? 'ANY'} +{#if property.format} + {property.format?.toUpperCase()} +{/if} +{#if property.contentEncoding} + {property.contentEncoding?.toUpperCase()} +{/if} diff --git a/frontend/src/lib/components/SchemaForm.svelte b/frontend/src/lib/components/SchemaForm.svelte index f114b6f5d5..5a5c5de51e 100644 --- a/frontend/src/lib/components/SchemaForm.svelte +++ b/frontend/src/lib/components/SchemaForm.svelte @@ -1,206 +1,36 @@
{#if Object.keys(schema?.properties ?? {}).length > 0} - {#each Object.keys(schema?.properties ?? {}) as argName, index} + {#each Object.keys(schema?.properties ?? {}) as argName} {#if inputTransform} - {#if args[argName] != undefined} -
0 ? 'mt-8' : ''} /> -
-
- - {#if propertiesTypes[argName] === 'static' && args[argName].type === 'javascript'} - - {'${...}'} - - {/if} -
- { - const staticTemplate = isStaticTemplate(inputCats[argName]) - if (e.detail === 'javascript') { - args[argName].expr = getDefaultExpr( - i ?? -1, - argName, - staticTemplate ? args[argName].value : undefined - ) - args[argName].value = undefined - } else { - args[argName].value = staticTemplate - ? codeToStaticTemplate(args[argName].expr) - : undefined - args[argName].expr = undefined - } - - args[argName].type = e.detail - }} - /> -
-
- - {#if propertiesTypes[argName] === undefined || propertiesTypes[argName] === 'static'} - { - const toAppend = `\$\{${event.detail}}` - args[argName].value = `${args[argName].value ?? ''}${toAppend}` - if (monacos[argName]) { - monacos[argName].setCode(args[argName].value) - } - setPropertyType(argName, args[argName].value, false) - }} - > - focusProp(argName)} - label={argName} - bind:editor={monacos[argName]} - bind:description={schema.properties[argName].description} - bind:value={args[argName].value} - type={schema.properties[argName].type} - required={schema.required.includes(argName)} - bind:pattern={schema.properties[argName].pattern} - bind:valid={inputCheck[argName]} - defaultValue={schema.properties[argName].default} - bind:enum_={schema.properties[argName].enum} - bind:format={schema.properties[argName].format} - contentEncoding={schema.properties[argName].contentEncoding} - bind:itemsType={schema.properties[argName].items} - displayHeader={false} - bind:inputCat={inputCats[argName]} - numberAsString={true} - on:input={(e) => { - if (isStaticTemplate(inputCats[argName])) { - setPropertyType(argName, e.detail.rawValue, e.detail.isRaw) - } - }} - /> - - {:else if propertiesTypes[argName] === 'javascript'} - {#if args[argName].expr != undefined} - { - monacos[argName].insertAtCursor(event.detail) - }} - > -
- focusProp(argName)} - bind:code={args[argName].expr} - lang="javascript" - class="few-lines-editor" - {extraLib} - extraLibPath="file:///node_modules/@types/windmill@{i}/index.d.ts" - /> -
-
- - {/if} - {:else} -

Not recognized arg type {args[argName].type}

- {/if} - {:else} -

Arg at {argName} is undefined

- {/if} + {:else} {#each pastPreviews as { id, created_at, success, result }} - {id.substring(30)} + + {id.substring(30)} + {displayDate(created_at)} {#if success} @@ -452,9 +452,10 @@ modalViewerContent = result modalViewerMode = 'result' modalViewer.openModal() - }}>{JSON.stringify(result).substring(0, 30)}... + }} + >{JSON.stringify(result).substring(0, 30)}... + +
-
+
diff --git a/frontend/src/lib/components/Toggle.svelte b/frontend/src/lib/components/Toggle.svelte index 5c39f8760c..02b1edd8c9 100644 --- a/frontend/src/lib/components/Toggle.svelte +++ b/frontend/src/lib/components/Toggle.svelte @@ -1,23 +1,20 @@