-
+
+
+
+
- {#if !checked && arg.type === 'javascript'}
-
- {'${...}'}
-
- {/if}
+ {#if propertyType == 'static' && arg.type === 'javascript'}
+
+ {'${...}'}
+
+ {/if}
+
+
+ {
+ const staticTemplate = isStaticTemplate(inputCat)
+ if (e.detail === 'javascript') {
+ arg.expr = getDefaultExpr(
+ argName,
+ previousModuleId,
+ staticTemplate ? `\`${arg.value ?? ''}\`` : arg.value
+ )
+
+ arg.value = undefined
+ propertyType = 'javascript'
+ arg.type = 'javascript'
+ } else {
+ arg.value = staticTemplate ? codeToStaticTemplate(arg.expr) : undefined
+ arg.expr = undefined
+ propertyType = 'static'
+ if (!isStaticTemplate) {
+ arg.type = 'static'
+ } else {
+ setPropertyType(arg.value)
+ }
+ }
+ }}
+ >
+ {#if isStaticTemplate(inputCat)}
+ Template
+ {:else}
+ Static
+ {/if}
+
+
+ Dynamic (JS)
+
+
+
+
-
{
- const type = e.detail ? 'javascript' : 'static'
- const staticTemplate = isStaticTemplate(inputCat)
- if (type === 'javascript') {
- arg.expr = getDefaultExpr(
- importPath,
- argName,
- staticTemplate ? `\`${arg.value ?? ''}\`` : arg.value
- )
-
- 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}
+ {#if propertyType === undefined || propertyType == 'static'}
- {:else if checked}
- {#if arg.expr != undefined}
-
- {
- focusProp(argName, 'insert', (path) => {
- monaco?.insertAtCursor(path)
- return false
- })
- }}
- />
-
-
-
- {/if}
+ {:else if arg.expr != undefined}
+
+ {
+ focusProp(argName, 'insert', (path) => {
+ monaco?.insertAtCursor(path)
+ return false
+ })
+ }}
+ autoHeight
+ />
+
+
+
{:else}
-
Not recognized arg type {arg.type}
+ Not recognized input type {argName}
{/if}
{:else}
Arg at {argName} is undefined
diff --git a/frontend/src/lib/components/SchemaForm.svelte b/frontend/src/lib/components/SchemaForm.svelte
index e158da22fa..5b67ee7360 100644
--- a/frontend/src/lib/components/SchemaForm.svelte
+++ b/frontend/src/lib/components/SchemaForm.svelte
@@ -14,10 +14,8 @@
export let editableSchema = false
export let isValid: boolean = true
export let extraLib: string = 'missing extraLib'
- export let importPath: string | undefined = undefined
export let autofocus = false
- export let animateNew = false
-
+ export let previousModuleId: string | undefined = undefined
let clazz: string = ''
export { clazz as class }
@@ -46,12 +44,12 @@
{#if inputTransform}
{:else}
- Preview
- To recompute the input schema press Ctrl/Cmd + S or move the focus
- outside of the text editor
-
+ Preview
diff --git a/frontend/src/lib/components/SimpleEditor.svelte b/frontend/src/lib/components/SimpleEditor.svelte
index d5ebb4e86d..ebcce55f87 100644
--- a/frontend/src/lib/components/SimpleEditor.svelte
+++ b/frontend/src/lib/components/SimpleEditor.svelte
@@ -38,8 +38,8 @@
export let formatAction: (() => void) | undefined = undefined
export let automaticLayout = true
export let extraLib: string = ''
- export let extraLibPath: string = ''
export let shouldBindKey: boolean = true
+ export let autoHeight = false
const dispatch = createEventDispatcher()
@@ -96,6 +96,7 @@
}
}
+ let width = 0
async function loadMonaco() {
model = monaco.editor.createModel(code, lang, monaco.Uri.parse(uri))
@@ -115,6 +116,24 @@
dispatch('change')
})
+ if (autoHeight) {
+ let ignoreEvent = false
+ const updateHeight = () => {
+ const contentHeight = Math.min(1000, editor.getContentHeight())
+ if (divEl) {
+ divEl.style.height = `${contentHeight}px`
+ }
+ try {
+ ignoreEvent = true
+ editor.layout({ width, height: contentHeight })
+ } finally {
+ ignoreEvent = false
+ }
+ }
+ editor.onDidContentSizeChange(updateHeight)
+ updateHeight()
+ }
+
editor.onDidFocusEditorText(() => {
editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, function () {
code = getCode()
@@ -133,13 +152,15 @@
dispatch('blur')
})
- if (lang == 'javascript' && extraLib != '' && extraLibPath != '') {
+ if (lang == 'javascript' && extraLib != '') {
monaco.languages.typescript.javascriptDefaults.setExtraLibs([
{
content: extraLib,
- filePath: extraLibPath
+ filePath: 'windmill.d.ts'
}
])
+ } else {
+ monaco.languages.typescript.javascriptDefaults.setExtraLibs([])
}
}
@@ -157,7 +178,7 @@
})
-
+
diff --git a/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte b/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte
index c514ab463d..529f9e0bd9 100644
--- a/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte
+++ b/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte
@@ -11,9 +11,9 @@
import FlowSettingsItem from './FlowSettingsItem.svelte'
import FlowInputsItem from './FlowInputsItem.svelte'
import InsertModuleButton from './InsertModuleButton.svelte'
+ import { slide } from 'svelte/transition'
export let root: boolean = false
- export let color: 'blue' | 'orange' | 'indigo' = 'blue'
export let modules: FlowModule[]
let indexToRemove: number | undefined = undefined
@@ -79,7 +79,7 @@
{/if}
-
+
{#if root}
-
@@ -87,21 +87,21 @@
{/if}
{#each modules as mod, index (mod.id ?? index)}
- {
- if (event.detail.detail.shiftKey || isEmptyFlowModule(mod)) {
- removeAtIndex(index)
- } else {
- indexToRemove = index
- }
- }}
- on:insert={() => {
- insertNewModuleAtIndex(index)
- }}
- />
+
+ {
+ if (event.detail.detail.shiftKey || isEmptyFlowModule(mod)) {
+ removeAtIndex(index)
+ } else {
+ indexToRemove = index
+ }
+ }}
+ on:insert={() => {
+ insertNewModuleAtIndex(index)
+ }}
+ />
+
{/each}
insertNewModuleAtIndex(modules.length)} />
@@ -125,17 +125,3 @@
}
}}
/>
-
-
diff --git a/frontend/src/lib/components/flows/map/FlowSettingsItem.svelte b/frontend/src/lib/components/flows/map/FlowSettingsItem.svelte
index b6f60ce117..a527bf85de 100644
--- a/frontend/src/lib/components/flows/map/FlowSettingsItem.svelte
+++ b/frontend/src/lib/components/flows/map/FlowSettingsItem.svelte
@@ -9,7 +9,7 @@
const { select, selectedId, schedule } = getContext('FlowEditorContext')
$: settingsClass = classNames(
- 'border w-full rounded-md p-2 bg-white text-sm cursor-pointer flex items-center',
+ 'border w-full rounded-md p-2 bg-white border-gray-400 text-sm cursor-pointer flex items-center',
$selectedId === 'settings' ? 'outline outline-offset-1 outline-2 outline-slate-900' : ''
)
diff --git a/frontend/src/lib/components/flows/map/MapItem.svelte b/frontend/src/lib/components/flows/map/MapItem.svelte
index bdb3b909f0..29aa5d20e6 100644
--- a/frontend/src/lib/components/flows/map/MapItem.svelte
+++ b/frontend/src/lib/components/flows/map/MapItem.svelte
@@ -7,10 +7,17 @@
import InsertModuleButton from './InsertModuleButton.svelte'
import FlowBranchOneMap from './FlowBranchOneMap.svelte'
import FlowBranchAllMap from './FlowBranchAllMap.svelte'
+ import {
+ faBuilding,
+ faCode,
+ faCodeBranch,
+ faLongArrowDown,
+ faQuestion,
+ faRepeat
+ } from '@fortawesome/free-solid-svg-icons'
+ import Icon from 'svelte-awesome'
export let mod: FlowModule
- export let index: number
- export let color: 'blue' | 'orange' | 'indigo' = 'blue'
const { select, selectedId } = getContext('FlowEditorContext')
const dispatch = createEventDispatcher<{ delete: CustomEvent; insert: void }>()
@@ -40,14 +47,14 @@
{...itemProps}
>
- {index + 1}
+
@@ -63,7 +70,7 @@
label={mod.summary || 'Run one branch'}
>
- {index + 1}
+
@@ -79,7 +86,7 @@
label={mod.summary || 'Run all branches'}
>
- {index + 1}
+
@@ -89,7 +96,6 @@
select(mod.id)}
on:delete={onDelete}
- {color}
deletable
id={mod.id}
{...itemProps}
@@ -98,7 +104,13 @@
(mod.value.type === 'rawscript' ? `Inline ${mod.value.language}` : 'To be defined')}
>
- {index + 1}
+ {#if mod.value.type === 'rawscript'}
+
+ {:else if mod.value.type === 'identity'}
+
+ {:else if mod.value.type === 'script'}
+
+ {/if}
@@ -107,7 +119,7 @@
diff --git a/frontend/src/lib/components/flows/previousResults.ts b/frontend/src/lib/components/flows/previousResults.ts
index 160bb69e7c..2b24a68fb6 100644
--- a/frontend/src/lib/components/flows/previousResults.ts
+++ b/frontend/src/lib/components/flows/previousResults.ts
@@ -137,28 +137,28 @@ export function buildExtraLib(flowInput: Record, results: Record x != '')
if (lines.length == 1) {
const line = lines[0].trim()
diff --git a/frontend/src/lib/components/graph/FlowGraph.svelte b/frontend/src/lib/components/graph/FlowGraph.svelte
index dfe69a1a74..215d44628b 100644
--- a/frontend/src/lib/components/graph/FlowGraph.svelte
+++ b/frontend/src/lib/components/graph/FlowGraph.svelte
@@ -1,7 +1,7 @@