windmill-components 1.56.2 → 1.57.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/app.css +5 -1
- package/components/ArgInput.svelte +6 -6
- package/components/CenteredModal.svelte +15 -14
- package/components/CenteredModal.svelte.d.ts +1 -0
- package/components/DisplayResult.svelte +1 -1
- package/components/Dropdown.svelte +4 -3
- package/components/Dropdown.svelte.d.ts +2 -0
- package/components/Editor.svelte +6 -4
- package/components/Editor.svelte.d.ts +2 -0
- package/components/EditorBar.svelte +15 -1
- package/components/FlowBuilder.svelte +18 -10
- package/components/FlowPreviewContent.svelte +1 -1
- package/components/GroupEditor.svelte +1 -0
- package/components/IconedResourceType.svelte +2 -2
- package/components/InputTransformForm.svelte +50 -40
- package/components/InputTransformForm.svelte.d.ts +1 -0
- package/components/ItemPicker.svelte +63 -57
- package/components/ItemPicker.svelte.d.ts +1 -2
- package/components/LogViewer.svelte +6 -5
- package/components/ModulePreview.svelte +20 -22
- package/components/MoveDrawer.svelte +40 -16
- package/components/MoveDrawer.svelte.d.ts +2 -2
- package/components/PageHeader.svelte +1 -1
- package/components/Path.svelte +5 -2
- package/components/Popover.svelte +14 -20
- package/components/Popover.svelte.d.ts +5 -0
- package/components/RadioButton.svelte +5 -3
- package/components/RadioButton.svelte.d.ts +2 -0
- package/components/ResourceEditor.svelte +2 -1
- package/components/ResourcePicker.svelte +1 -0
- package/components/RunChart.svelte +0 -1
- package/components/SchemaEditor.svelte +3 -0
- package/components/SchemaForm.svelte +86 -77
- package/components/SchemaForm.svelte.d.ts +4 -0
- package/components/ScriptBuilder.svelte +2 -1
- package/components/ScriptEditor.svelte +88 -77
- package/components/ShareModal.svelte.d.ts +2 -2
- package/components/SimpleEditor.svelte +17 -0
- package/components/Star.svelte +15 -9
- package/components/StringTypeNarrowing.svelte +30 -8
- package/components/TemplateEditor.svelte +21 -11
- package/components/TestJobLoader.svelte +94 -68
- package/components/TestJobLoader.svelte.d.ts +10 -8
- package/components/Toggle.svelte +30 -7
- package/components/Toggle.svelte.d.ts +4 -0
- package/components/Tooltip.svelte +1 -1
- package/components/VariableEditor.svelte +4 -3
- package/components/VariableEditor.svelte.d.ts +2 -2
- package/components/apps/components/DisplayComponent.svelte +1 -1
- package/components/apps/components/buttons/AppButton.svelte +16 -10
- package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/components/apps/components/dataDisplay/AppBarChart.svelte +17 -8
- package/components/apps/components/dataDisplay/AppHtml.svelte +23 -0
- package/components/apps/components/dataDisplay/AppHtml.svelte.d.ts +23 -0
- package/components/apps/components/dataDisplay/AppPieChart.svelte +11 -7
- package/components/apps/components/dataDisplay/AppScatterChart.svelte +46 -0
- package/components/apps/components/dataDisplay/AppScatterChart.svelte.d.ts +21 -0
- package/components/apps/components/dataDisplay/AppText.svelte +44 -7
- package/components/apps/components/dataDisplay/AppText.svelte.d.ts +1 -0
- package/components/apps/components/dataDisplay/AppTimeseries.svelte +57 -0
- package/components/apps/components/dataDisplay/AppTimeseries.svelte.d.ts +22 -0
- package/components/apps/components/form/AppForm.svelte +35 -18
- package/components/apps/components/helpers/AlignWrapper.svelte +2 -1
- package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +1 -0
- package/components/apps/components/helpers/InputValue.svelte +20 -14
- package/components/apps/components/helpers/InputValue.svelte.d.ts +3 -0
- package/components/apps/components/helpers/NonRunnableComponent.svelte +7 -6
- package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -1
- package/components/apps/components/helpers/RefreshButton.svelte +16 -11
- package/components/apps/components/helpers/RefreshButton.svelte.d.ts +2 -0
- package/components/apps/components/helpers/RunnableComponent.svelte +119 -102
- package/components/apps/components/helpers/RunnableWrapper.svelte +6 -1
- package/components/apps/components/selectInputs/AppCheckbox.svelte +4 -0
- package/components/apps/components/selectInputs/AppSelect.svelte +2 -0
- package/components/apps/components/table/AppTable.svelte +64 -35
- package/components/apps/components/table/AppTableFooter.svelte +2 -1
- package/components/apps/components/table/tableOptions.d.ts +2 -9
- package/components/apps/components/table/tableOptions.js +5 -2
- package/components/apps/components/textInputs/AppTextInput.svelte +7 -4
- package/components/apps/editor/AppEditor.svelte +136 -65
- package/components/apps/editor/AppEditor.svelte.d.ts +3 -0
- package/components/apps/editor/AppEditorHeader.svelte +349 -51
- package/components/apps/editor/AppEditorHeader.svelte.d.ts +2 -4
- package/components/apps/editor/AppExportButton.svelte +34 -0
- package/components/apps/editor/AppExportButton.svelte.d.ts +17 -0
- package/components/apps/editor/AppPreview.svelte +20 -7
- package/components/apps/editor/AppPreview.svelte.d.ts +6 -0
- package/components/apps/editor/AppPublishButton.svelte +53 -0
- package/components/apps/editor/AppPublishButton.svelte.d.ts +18 -0
- package/components/apps/editor/ComponentEditor.svelte +39 -8
- package/components/apps/editor/ComponentEditor.svelte.d.ts +1 -0
- package/components/apps/editor/ComponentHeader.svelte +38 -29
- package/components/apps/editor/ComponentHeader.svelte.d.ts +3 -1
- package/components/apps/editor/GridEditor.svelte +105 -67
- package/components/apps/editor/GridEditor.svelte.d.ts +6 -1
- package/components/apps/editor/RecomputeAllComponents.svelte +80 -19
- package/components/apps/editor/SettingsPanel.svelte +2 -2
- package/components/apps/editor/TablePanel.svelte +1 -0
- package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -39
- package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +2 -1
- package/components/apps/editor/componentsPanel/componentStaticValues.js +3 -2
- package/components/apps/editor/componentsPanel/data.js +201 -91
- package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -0
- package/components/apps/editor/contextPanel/ContextPanel.svelte +69 -47
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +6 -2
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +56 -20
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +5 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +2 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +72 -23
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +30 -22
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +78 -77
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +38 -33
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -4
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +1 -11
- package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +27 -9
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +19 -24
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +12 -5
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -3
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +59 -33
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +5 -2
- package/components/apps/editor/settingsPanel/Recompute.svelte +2 -2
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +21 -3
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +1 -3
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
- package/components/apps/editor/settingsPanel/TableActions.svelte +27 -18
- package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +10 -2
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +3 -0
- package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +6 -4
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +24 -0
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/inputEditor/RowInputEditor.svelte +6 -0
- package/components/apps/editor/settingsPanel/inputEditor/RowInputEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +11 -21
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
- package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +1 -2
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +42 -13
- package/components/apps/editorUtils.d.ts +1 -0
- package/components/apps/editorUtils.js +11 -0
- package/components/apps/gridUtils.js +2 -1
- package/components/apps/inputType.d.ts +12 -6
- package/components/apps/rx.d.ts +3 -3
- package/components/apps/rx.js +9 -4
- package/components/apps/store.d.ts +2 -0
- package/components/apps/store.js +2 -0
- package/components/apps/types.d.ts +20 -4
- package/components/apps/utils.d.ts +2 -2
- package/components/apps/utils.js +25 -9
- package/components/common/button/Button.svelte +8 -8
- package/components/common/button/Button.svelte.d.ts +2 -0
- package/components/common/confirmationModal/ConfirmationModal.svelte +1 -0
- package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -1
- package/components/common/popup/Popup.svelte +1 -1
- package/components/common/table/AppRow.svelte +31 -4
- package/components/common/table/AppRow.svelte.d.ts +4 -0
- package/components/common/table/FlowRow.svelte +9 -5
- package/components/common/table/Row.svelte +10 -8
- package/components/common/table/ScriptRow.svelte +15 -13
- package/components/common/tabs/Tabs.svelte +1 -1
- package/components/common/toggleButton/ToggleButton.svelte +2 -0
- package/components/common/toggleButton/ToggleButton.svelte.d.ts +1 -0
- package/components/flows/CreateActionsApp.svelte +43 -0
- package/components/flows/CreateActionsApp.svelte.d.ts +14 -0
- package/components/flows/CreateActionsFlow.svelte +6 -1
- package/components/flows/content/DynamicInputHelpBox.svelte +1 -1
- package/components/flows/content/FlowConstants.svelte +82 -0
- package/components/flows/content/FlowConstants.svelte.d.ts +14 -0
- package/components/flows/content/FlowEditorPanel.svelte +3 -0
- package/components/flows/content/FlowInputs.svelte +2 -2
- package/components/flows/content/FlowModuleComponent.svelte +4 -1
- package/components/flows/content/FlowModuleHeader.svelte +41 -89
- package/components/flows/content/FlowModuleHeader.svelte.d.ts +2 -2
- package/components/flows/content/FlowSettings.svelte +1 -1
- package/components/flows/flowStore.d.ts +1 -1
- package/components/flows/flowStore.js +8 -8
- package/components/flows/header/FlowImportExportMenu.svelte +1 -1
- package/components/flows/header/FlowPreviewButtons.svelte +2 -1
- package/components/flows/map/FlowConstantsItem.svelte +13 -0
- package/components/flows/map/FlowConstantsItem.svelte.d.ts +14 -0
- package/components/flows/map/FlowInputsItem.svelte +1 -2
- package/components/flows/map/FlowModuleSchemaItem.svelte +34 -25
- package/components/flows/map/FlowModuleSchemaMap.svelte +9 -3
- package/components/flows/map/FlowSettingsItem.svelte +6 -8
- package/components/flows/pickers/PickHubScript.svelte +1 -1
- package/components/flows/propPicker/PropPickerWrapper.svelte +42 -31
- package/components/home/ItemsList.svelte +6 -4
- package/components/icons/ClickhouseIcon.svelte +22 -0
- package/components/icons/ClickhouseIcon.svelte.d.ts +17 -0
- package/components/icons/FaunadbIcon.svelte +19 -0
- package/components/icons/FaunadbIcon.svelte.d.ts +17 -0
- package/components/icons/OpenaiIcon.svelte +18 -0
- package/components/icons/OpenaiIcon.svelte.d.ts +17 -0
- package/components/icons/index.d.ts +7 -1
- package/components/icons/index.js +8 -2
- package/components/propertyPicker/ObjectViewer.svelte +11 -4
- package/components/propertyPicker/PropPicker.svelte +1 -1
- package/components/scriptEditor/LogPanel.svelte +26 -22
- package/components/sidebar/FavoriteMenu.svelte +23 -19
- package/components/sidebar/SidebarContent.svelte +16 -16
- package/components/sidebar/WorkspaceMenu.svelte +18 -17
- package/components/splitPanes/SplitPanesWrapper.svelte +1 -5
- package/components/splitPanes/SplitPanesWrapper.svelte.d.ts +0 -1
- package/editorUtils.js +2 -0
- package/gen/core/OpenAPI.js +1 -1
- package/gen/models/Policy.d.ts +1 -0
- package/gen/services/AppService.d.ts +18 -0
- package/gen/services/AppService.js +30 -0
- package/gen/services/GranularAclService.d.ts +3 -3
- package/gen/services/ResourceService.d.ts +15 -0
- package/gen/services/ResourceService.js +17 -0
- package/infer.js +4 -0
- package/logout.d.ts +1 -0
- package/logout.js +5 -3
- package/package.json +502 -489
- package/stores.d.ts +1 -0
- package/stores.js +13 -5
- package/utils.d.ts +1 -1
- package/utils.js +17 -10
- package/components/apps/CreateApp.svelte +0 -68
- package/components/apps/CreateApp.svelte.d.ts +0 -14
package/assets/app.css
CHANGED
|
@@ -27,6 +27,10 @@
|
|
|
27
27
|
whitespace: normal !important;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
pre code.hljs {
|
|
31
|
+
overflow: visible !important;
|
|
32
|
+
}
|
|
33
|
+
|
|
30
34
|
svelte-virtual-list-row {
|
|
31
35
|
overflow: visible !important;
|
|
32
36
|
}
|
|
@@ -40,7 +44,7 @@
|
|
|
40
44
|
box-shadow: none !important;
|
|
41
45
|
}
|
|
42
46
|
|
|
43
|
-
.
|
|
47
|
+
.Template-editor span.mtk20 {
|
|
44
48
|
color: black !important;
|
|
45
49
|
}
|
|
46
50
|
}
|
|
@@ -157,7 +157,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
|
|
|
157
157
|
bind:value={description}
|
|
158
158
|
placeholder="Field description"
|
|
159
159
|
/>
|
|
160
|
-
{#if type == 'string' &&
|
|
160
|
+
{#if type == 'string' && format != 'date-time'}
|
|
161
161
|
<StringTypeNarrowing bind:format bind:pattern bind:enum_ bind:contentEncoding />
|
|
162
162
|
{:else if type == 'object'}
|
|
163
163
|
<ObjectTypeNarrowing bind:format />
|
|
@@ -300,18 +300,18 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
|
|
|
300
300
|
</select>
|
|
301
301
|
{:else if inputCat == 'date'}
|
|
302
302
|
<input {autofocus} class="inline-block" type="datetime-local" bind:value />
|
|
303
|
-
{:else if inputCat == 'sql'}
|
|
304
|
-
<div class="border
|
|
303
|
+
{:else if inputCat == 'sql' || inputCat == 'yaml'}
|
|
304
|
+
<div class="border my-1 mb-4 w-full border-gray-400">
|
|
305
305
|
<SimpleEditor
|
|
306
306
|
on:focus={() => dispatch('focus')}
|
|
307
307
|
on:blur={() => dispatch('blur')}
|
|
308
308
|
bind:this={editor}
|
|
309
|
-
lang=
|
|
309
|
+
lang={inputCat}
|
|
310
310
|
bind:code={value}
|
|
311
|
-
class="few-lines-editor"
|
|
312
311
|
on:change={async () => {
|
|
313
312
|
dispatch('input', { rawValue: value, isRaw: false })
|
|
314
313
|
}}
|
|
314
|
+
autoHeight
|
|
315
315
|
/>
|
|
316
316
|
</div>
|
|
317
317
|
{:else if inputCat == 'base64'}
|
|
@@ -360,7 +360,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
|
|
|
360
360
|
variant="border"
|
|
361
361
|
color="blue"
|
|
362
362
|
size="sm"
|
|
363
|
-
btnClasses="min-w-min items-center leading-4 py-0"
|
|
363
|
+
btnClasses="min-w-min min-h-[34px] items-center leading-4 py-0"
|
|
364
364
|
on:click={() => {
|
|
365
365
|
pickForField = label
|
|
366
366
|
itemPicker?.openDrawer?.()
|
|
@@ -3,35 +3,36 @@ import { onMount } from 'svelte';
|
|
|
3
3
|
import WindmillIcon from './icons/WindmillIcon.svelte';
|
|
4
4
|
export let subtitle = undefined;
|
|
5
5
|
export let title = 'Windmill';
|
|
6
|
+
export let disableLogo = false;
|
|
6
7
|
let version = '';
|
|
7
8
|
onMount(async () => {
|
|
8
9
|
version = await SettingsService.backendVersion();
|
|
9
10
|
});
|
|
10
11
|
</script>
|
|
11
12
|
|
|
12
|
-
<div class="
|
|
13
|
-
<div class="
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
<div class="center-center min-h-screen p-4 relative bg-[#3b4252]">
|
|
14
|
+
<div class="border rounded-md shadow-md bg-white w-full max-w-[640px]
|
|
15
|
+
p-4 sm:py-8 sm:px-10 mb-6 md:mb-20 z-10">
|
|
16
|
+
<div class="mb-10">
|
|
17
|
+
<h1 class="text-center">
|
|
16
18
|
{title}
|
|
17
19
|
</h1>
|
|
18
20
|
{#if subtitle}
|
|
19
|
-
<p class="
|
|
21
|
+
<p class="text-sm text-center text-gray-600 mt-2">
|
|
20
22
|
{subtitle}
|
|
21
23
|
</p>
|
|
22
24
|
{/if}
|
|
23
|
-
<slot />
|
|
24
25
|
</div>
|
|
25
|
-
|
|
26
|
-
<!-- empty row to make the form a little bit above vertical centering-->
|
|
27
|
-
<div class="py-12" />
|
|
26
|
+
<slot />
|
|
28
27
|
</div>
|
|
29
|
-
|
|
30
|
-
<div class="
|
|
31
|
-
<
|
|
28
|
+
{#if !disableLogo}
|
|
29
|
+
<div class="hidden lg:block absolute top-10 right-50">
|
|
30
|
+
<div class="animate-[spin_100s_linear_infinite] ">
|
|
31
|
+
<WindmillIcon white height="100px" width="100px" />
|
|
32
|
+
</div>
|
|
33
|
+
<h2 class="text-center pt-2 text-gray-100">Windmill</h2>
|
|
32
34
|
</div>
|
|
33
|
-
|
|
34
|
-
</div>
|
|
35
|
+
{/if}
|
|
35
36
|
<div class="absolute top-0 right-0 text-2xs text-gray-300 italic px-3 py-1">
|
|
36
37
|
<span class="font-mono">{version}</span>
|
|
37
38
|
</div>
|
|
@@ -73,7 +73,7 @@ let payload = '';
|
|
|
73
73
|
class="grid grid-flow-col-dense border border-gray-200 rounded-md "
|
|
74
74
|
>
|
|
75
75
|
{#each Object.keys(result) as col}
|
|
76
|
-
<div class="flex flex-col max-h-40 min-w-full
|
|
76
|
+
<div class="flex flex-col max-h-40 min-w-full">
|
|
77
77
|
<div
|
|
78
78
|
class="px-12 text-left uppercase border-b bg-gray-50 overflow-hidden rounded-t-md "
|
|
79
79
|
>
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
<script>import { createEventDispatcher } from 'svelte';
|
|
2
2
|
import Icon from 'svelte-awesome';
|
|
3
|
-
import {
|
|
3
|
+
import { MoreHorizontal } from 'lucide-svelte';
|
|
4
4
|
import { Button, Menu } from './common';
|
|
5
5
|
export let dropdownItems;
|
|
6
6
|
export let name = undefined;
|
|
7
7
|
export let placement = 'bottom-start';
|
|
8
|
+
export let btnClasses = '!text-blue-500 bg-transparent';
|
|
8
9
|
const dispatch = createEventDispatcher();
|
|
9
10
|
</script>
|
|
10
11
|
|
|
11
12
|
<Menu {placement} let:close>
|
|
12
|
-
<Button color="light" size="xs" btnClasses
|
|
13
|
+
<Button nonCaptureEvent color="light" size="xs" {btnClasses} {...$$restProps} slot="trigger">
|
|
13
14
|
{#if !$$slots.default}
|
|
14
|
-
<
|
|
15
|
+
<MoreHorizontal size={20} />
|
|
15
16
|
{:else}
|
|
16
17
|
<slot />
|
|
17
18
|
{/if}
|
|
@@ -2,9 +2,11 @@ import { SvelteComponentTyped } from "svelte";
|
|
|
2
2
|
import type { DropdownItem } from '../utils';
|
|
3
3
|
declare const __propDef: {
|
|
4
4
|
props: {
|
|
5
|
+
[x: string]: any;
|
|
5
6
|
dropdownItems: DropdownItem[];
|
|
6
7
|
name?: string | undefined;
|
|
7
8
|
placement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | undefined;
|
|
9
|
+
btnClasses?: string | undefined;
|
|
8
10
|
};
|
|
9
11
|
events: {
|
|
10
12
|
click: CustomEvent<any>;
|
package/components/Editor.svelte
CHANGED
|
@@ -28,6 +28,7 @@ languages.typescript.typescriptDefaults.setDiagnosticsOptions({
|
|
|
28
28
|
noSuggestionDiagnostics: true,
|
|
29
29
|
noSyntaxValidation: true
|
|
30
30
|
});
|
|
31
|
+
languages.typescript.typescriptDefaults.setExtraLibs([]);
|
|
31
32
|
meditor.defineTheme('myTheme', {
|
|
32
33
|
base: 'vs',
|
|
33
34
|
inherit: true,
|
|
@@ -105,7 +106,7 @@ export function setCode(ncode) {
|
|
|
105
106
|
editor.setValue(ncode);
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
|
-
function format() {
|
|
109
|
+
export function format() {
|
|
109
110
|
if (editor) {
|
|
110
111
|
code = getCode();
|
|
111
112
|
editor.getAction('editor.action.formatDocument').run();
|
|
@@ -156,7 +157,6 @@ export async function reloadWebsocket() {
|
|
|
156
157
|
markdown: {
|
|
157
158
|
isTrusted: true
|
|
158
159
|
},
|
|
159
|
-
// workspaceFolder: { uri: Uri.parse(`/tmp/${name}`), name: 'tmp', index: 0 },
|
|
160
160
|
initializationOptions,
|
|
161
161
|
middleware: {
|
|
162
162
|
workspace: {
|
|
@@ -354,14 +354,16 @@ async function closeWebsockets() {
|
|
|
354
354
|
async function loadMonaco() {
|
|
355
355
|
const model = meditor.createModel(code, lang, mUri.parse(uri));
|
|
356
356
|
model.updateOptions(updateOptions);
|
|
357
|
-
editor = meditor.create(divEl,
|
|
357
|
+
editor = meditor.create(divEl, {
|
|
358
|
+
...editorConfig(model, code, lang, automaticLayout, fixedOverflowWidgets)
|
|
359
|
+
});
|
|
358
360
|
let timeoutModel = undefined;
|
|
359
361
|
editor.onDidChangeModelContent((event) => {
|
|
360
362
|
$dirtyStore = true;
|
|
361
363
|
timeoutModel && clearTimeout(timeoutModel);
|
|
362
364
|
timeoutModel = setTimeout(() => {
|
|
363
365
|
code = getCode();
|
|
364
|
-
dispatch('change');
|
|
366
|
+
dispatch('change', code);
|
|
365
367
|
}, 500);
|
|
366
368
|
});
|
|
367
369
|
editor.onDidFocusEditorText(() => {
|
|
@@ -22,6 +22,7 @@ declare const __propDef: {
|
|
|
22
22
|
insertAtBeginning?: ((code: string) => void) | undefined;
|
|
23
23
|
insertAtLine?: ((code: string, line: number) => void) | undefined;
|
|
24
24
|
setCode?: ((ncode: string) => void) | undefined;
|
|
25
|
+
format?: (() => void) | undefined;
|
|
25
26
|
clearContent?: (() => Promise<void>) | undefined;
|
|
26
27
|
reloadWebsocket?: (() => Promise<void>) | undefined;
|
|
27
28
|
addAction?: ((id: string, label: string, callback: (editor: meditor.IStandaloneCodeEditor) => void, keybindings?: number[]) => void) | undefined;
|
|
@@ -44,6 +45,7 @@ export default class Editor extends SvelteComponentTyped<EditorProps, EditorEven
|
|
|
44
45
|
get insertAtBeginning(): (code: string) => void;
|
|
45
46
|
get insertAtLine(): (code: string, line: number) => void;
|
|
46
47
|
get setCode(): (ncode: string) => void;
|
|
48
|
+
get format(): () => void;
|
|
47
49
|
get clearContent(): () => Promise<void>;
|
|
48
50
|
get reloadWebsocket(): () => Promise<void>;
|
|
49
51
|
get addAction(): (id: string, label: string, callback: (editor: meditor.IStandaloneCodeEditor) => void, keybindings?: number[]) => void;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
<script>import { ResourceService, VariableService } from '../gen';
|
|
5
5
|
import { getScriptByPath, sendUserToast } from '../utils';
|
|
6
|
-
import { faCube, faDollarSign, faEye, faRotate, faRotateLeft } from '@fortawesome/free-solid-svg-icons';
|
|
6
|
+
import { faBroom, faCube, faDollarSign, faEye, faRotate, faRotateLeft } from '@fortawesome/free-solid-svg-icons';
|
|
7
7
|
import { workspaceStore } from '../stores';
|
|
8
8
|
import ItemPicker from './ItemPicker.svelte';
|
|
9
9
|
import ResourceEditor from './ResourceEditor.svelte';
|
|
@@ -286,6 +286,20 @@ async function onScriptPick(e) {
|
|
|
286
286
|
</span>
|
|
287
287
|
</Button></div
|
|
288
288
|
>
|
|
289
|
+
<div>
|
|
290
|
+
<Button
|
|
291
|
+
btnClasses="!font-medium"
|
|
292
|
+
size="xs"
|
|
293
|
+
spacingSize="md"
|
|
294
|
+
color="light"
|
|
295
|
+
on:click={editor.format}
|
|
296
|
+
startIcon={{ icon: faBroom }}
|
|
297
|
+
>
|
|
298
|
+
{#if !iconOnly}
|
|
299
|
+
Format (Ctrl+S)
|
|
300
|
+
{/if}
|
|
301
|
+
</Button></div
|
|
302
|
+
>
|
|
289
303
|
</div>
|
|
290
304
|
<div class="py-1">
|
|
291
305
|
<div>
|
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
import { page } from '$app/stores';
|
|
3
3
|
import { FlowService, ScheduleService } from '../gen';
|
|
4
4
|
import { userStore, workspaceStore } from '../stores';
|
|
5
|
-
import { encodeState, formatCron, loadHubScripts, sendUserToast
|
|
5
|
+
import { encodeState, formatCron, loadHubScripts, sendUserToast } from '../utils';
|
|
6
6
|
import { faCalendarAlt, faEye, faPen, faSave } from '@fortawesome/free-solid-svg-icons';
|
|
7
7
|
import { setContext } from 'svelte';
|
|
8
|
-
import { Icon } from 'svelte-awesome';
|
|
9
8
|
import { writable } from 'svelte/store';
|
|
10
9
|
import CenteredPage from './CenteredPage.svelte';
|
|
11
|
-
import {
|
|
10
|
+
import { Button, Drawer, DrawerContent } from './common';
|
|
12
11
|
import { dirtyStore } from './common/confirmationModal/dirtyStore';
|
|
13
12
|
import UnsavedConfirmationModal from './common/confirmationModal/UnsavedConfirmationModal.svelte';
|
|
14
13
|
import { OFFSET } from './CronInput.svelte';
|
|
@@ -50,6 +49,7 @@ async function saveFlow() {
|
|
|
50
49
|
const { cron, args, enabled } = $scheduleStore;
|
|
51
50
|
$dirtyStore = false;
|
|
52
51
|
if (initialPath === '') {
|
|
52
|
+
localStorage.removeItem('flow');
|
|
53
53
|
await FlowService.createFlow({
|
|
54
54
|
workspace: $workspaceStore,
|
|
55
55
|
requestBody: {
|
|
@@ -65,6 +65,7 @@ async function saveFlow() {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
else {
|
|
68
|
+
localStorage.removeItem(`flow-${initialPath}`);
|
|
68
69
|
await FlowService.updateFlow({
|
|
69
70
|
workspace: $workspaceStore,
|
|
70
71
|
path: initialPath,
|
|
@@ -112,16 +113,23 @@ async function saveFlow() {
|
|
|
112
113
|
}
|
|
113
114
|
let timeout = undefined;
|
|
114
115
|
$: {
|
|
115
|
-
if ($flowStore
|
|
116
|
-
|
|
116
|
+
if ($flowStore || $selectedIdStore) {
|
|
117
|
+
saveDraft();
|
|
117
118
|
}
|
|
118
119
|
}
|
|
119
|
-
function
|
|
120
|
+
function saveDraft() {
|
|
120
121
|
timeout && clearTimeout(timeout);
|
|
121
|
-
timeout = setTimeout(() =>
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
122
|
+
timeout = setTimeout(() => {
|
|
123
|
+
try {
|
|
124
|
+
localStorage.setItem(initialPath ? `flow-${initialPath}` : 'flow', encodeState({
|
|
125
|
+
flow: $flowStore,
|
|
126
|
+
selectedId: $selectedIdStore
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
console.error(err);
|
|
131
|
+
}
|
|
132
|
+
}, 500);
|
|
125
133
|
}
|
|
126
134
|
const selectedIdStore = writable(selectedId);
|
|
127
135
|
const scheduleStore = writable({ args: {}, cron: '', enabled: false });
|
|
@@ -50,7 +50,7 @@ function extractFlow(previewMode) {
|
|
|
50
50
|
}
|
|
51
51
|
else {
|
|
52
52
|
const flow = JSON.parse(JSON.stringify($flowStore));
|
|
53
|
-
const idOrders = dfs(flow.value.modules);
|
|
53
|
+
const idOrders = dfs(flow.value.modules, (x) => x.id);
|
|
54
54
|
let upToIndex = idOrders.indexOf($selectedId);
|
|
55
55
|
if (upToIndex != -1) {
|
|
56
56
|
flow.value.modules = sliceModules(flow.value.modules, upToIndex, idOrders);
|
|
@@ -8,12 +8,12 @@ export let center = false;
|
|
|
8
8
|
$: name_prefix = name.split('_')[0];
|
|
9
9
|
</script>
|
|
10
10
|
|
|
11
|
-
<div class="
|
|
11
|
+
<div class="truncate flex flex-row gap-2 {center ? 'justify-center items-center' : ''} -pl-2">
|
|
12
12
|
{#if !silent && !after}
|
|
13
13
|
{name}
|
|
14
14
|
{/if}
|
|
15
15
|
{#if APP_TO_ICON_COMPONENT[name_prefix]}
|
|
16
|
-
<span class="text-gray-700">
|
|
16
|
+
<span class="text-gray-700 grayscale">
|
|
17
17
|
<svelte:component this={APP_TO_ICON_COMPONENT[name_prefix]} {height} {width} />
|
|
18
18
|
</span>
|
|
19
19
|
{:else}
|
|
@@ -18,6 +18,7 @@ export let previousModuleId;
|
|
|
18
18
|
export let pickForField = undefined;
|
|
19
19
|
export let variableEditor = undefined;
|
|
20
20
|
export let itemPicker = undefined;
|
|
21
|
+
export let noDynamicToggle = false;
|
|
21
22
|
let monaco = undefined;
|
|
22
23
|
let monacoTemplate = undefined;
|
|
23
24
|
let argInput = undefined;
|
|
@@ -53,7 +54,7 @@ function setPropertyType(rawValue) {
|
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
function isStaticTemplate(inputCat) {
|
|
56
|
-
return inputCat === 'string' || inputCat === 'sql';
|
|
57
|
+
return inputCat === 'string' || inputCat === 'sql' || inputCat == 'yaml';
|
|
57
58
|
}
|
|
58
59
|
function connectProperty(rawValue) {
|
|
59
60
|
if (isStaticTemplate(inputCat)) {
|
|
@@ -90,13 +91,16 @@ function onFocus() {
|
|
|
90
91
|
}
|
|
91
92
|
}
|
|
92
93
|
const { focusProp, propPickerConfig } = getContext('PropPickerWrapper');
|
|
93
|
-
$: isStaticTemplate(inputCat) && propertyType == 'static' && setPropertyType(arg
|
|
94
|
+
$: isStaticTemplate(inputCat) && propertyType == 'static' && setPropertyType(arg?.value);
|
|
94
95
|
const openBracket = '${';
|
|
95
96
|
const closeBracket = '}';
|
|
97
|
+
$: schema.properties[argName].default &&
|
|
98
|
+
!arg?.value &&
|
|
99
|
+
monacoTemplate?.setCode(schema.properties[argName].default);
|
|
96
100
|
</script>
|
|
97
101
|
|
|
98
102
|
{#if arg != undefined}
|
|
99
|
-
<div class="flex flex-row justify-between gap-1
|
|
103
|
+
<div class="flex flex-row justify-between gap-1 pb-1">
|
|
100
104
|
<div class="flex items-center flex-wrap grow">
|
|
101
105
|
<FieldHeader
|
|
102
106
|
label={argName}
|
|
@@ -118,21 +122,8 @@ const closeBracket = '}';
|
|
|
118
122
|
</span>
|
|
119
123
|
{/if}
|
|
120
124
|
</div>
|
|
121
|
-
|
|
122
|
-
<div>
|
|
123
|
-
<Button
|
|
124
|
-
variant="contained"
|
|
125
|
-
color="blue"
|
|
126
|
-
size="xs"
|
|
127
|
-
on:click={() => {
|
|
128
|
-
focusProp(argName, 'connect', (path) => {
|
|
129
|
-
connectProperty(path)
|
|
130
|
-
return true
|
|
131
|
-
})
|
|
132
|
-
}}>Connect →</Button
|
|
133
|
-
>
|
|
134
|
-
</div>
|
|
135
|
-
<div>
|
|
125
|
+
{#if !noDynamicToggle}
|
|
126
|
+
<div class="flex flex-row gap-x-4 gap-y-1 flex-wrap">
|
|
136
127
|
<ToggleButtonGroup
|
|
137
128
|
bind:selected={propertyType}
|
|
138
129
|
on:selected={(e) => {
|
|
@@ -143,24 +134,29 @@ const closeBracket = '}';
|
|
|
143
134
|
argName,
|
|
144
135
|
previousModuleId,
|
|
145
136
|
staticTemplate
|
|
146
|
-
? `\`${arg
|
|
137
|
+
? `\`${arg?.value ?? ''}\``
|
|
147
138
|
: arg.value
|
|
148
|
-
? JSON.stringify(arg
|
|
139
|
+
? JSON.stringify(arg?.value, null, 4)
|
|
149
140
|
: ''
|
|
150
141
|
)
|
|
151
142
|
}
|
|
152
|
-
|
|
153
|
-
|
|
143
|
+
if (arg) {
|
|
144
|
+
arg.value = undefined
|
|
145
|
+
}
|
|
154
146
|
propertyType = 'javascript'
|
|
155
147
|
arg.type = 'javascript'
|
|
156
148
|
} else {
|
|
157
149
|
if (staticTemplate) {
|
|
158
|
-
|
|
159
|
-
|
|
150
|
+
if (arg) {
|
|
151
|
+
arg.value = codeToStaticTemplate(arg.expr)
|
|
152
|
+
}
|
|
153
|
+
setPropertyType(arg?.value)
|
|
160
154
|
} else {
|
|
161
|
-
arg
|
|
162
|
-
|
|
163
|
-
|
|
155
|
+
if (arg) {
|
|
156
|
+
arg.type = 'static'
|
|
157
|
+
arg.value = undefined
|
|
158
|
+
arg.expr = undefined
|
|
159
|
+
}
|
|
164
160
|
}
|
|
165
161
|
propertyType = 'static'
|
|
166
162
|
}
|
|
@@ -168,7 +164,7 @@ const closeBracket = '}';
|
|
|
168
164
|
>
|
|
169
165
|
{#if isStaticTemplate(inputCat)}
|
|
170
166
|
<ToggleButton light position="left" value="static" size="xs">
|
|
171
|
-
{'${} '}
|
|
167
|
+
{'${} '}Template <Tooltip
|
|
172
168
|
>Write javascript expressions between "{openBracket}" and "{closeBracket}". You may
|
|
173
169
|
refer to contextual objects like 'flow_input', or 'result' or functions like
|
|
174
170
|
'resource' and 'variable'
|
|
@@ -188,13 +184,25 @@ const closeBracket = '}';
|
|
|
188
184
|
Dynamic (JS)
|
|
189
185
|
</ToggleButton>
|
|
190
186
|
</ToggleButtonGroup>
|
|
187
|
+
<Button
|
|
188
|
+
variant="contained"
|
|
189
|
+
color="blue"
|
|
190
|
+
size="xs"
|
|
191
|
+
on:click={() => {
|
|
192
|
+
focusProp(argName, 'connect', (path) => {
|
|
193
|
+
connectProperty(path)
|
|
194
|
+
return true
|
|
195
|
+
})
|
|
196
|
+
}}>Connect →</Button
|
|
197
|
+
>
|
|
191
198
|
</div>
|
|
192
|
-
|
|
199
|
+
{/if}
|
|
193
200
|
</div>
|
|
201
|
+
|
|
194
202
|
<div class="max-w-xs" />
|
|
195
203
|
|
|
196
204
|
<div
|
|
197
|
-
class="relative {$propPickerConfig?.propName == argName
|
|
205
|
+
class="relative mb-6 {$propPickerConfig?.propName == argName
|
|
198
206
|
? 'outline outline-offset-0 outline-2 outline-blue-500 rounded-md'
|
|
199
207
|
: ''}"
|
|
200
208
|
>
|
|
@@ -205,14 +213,17 @@ const closeBracket = '}';
|
|
|
205
213
|
Connect input →
|
|
206
214
|
</span>
|
|
207
215
|
{/if}
|
|
208
|
-
{#if isStaticTemplate(inputCat) && propertyType == 'static'}
|
|
209
|
-
<div class="py-1 rounded border border-1 border-gray-500">
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
+
{#if isStaticTemplate(inputCat) && propertyType == 'static' && !noDynamicToggle}
|
|
217
|
+
<div class="py-1 mt-2 min-h-[28px] rounded border border-1 border-gray-500">
|
|
218
|
+
{#if arg}
|
|
219
|
+
<TemplateEditor
|
|
220
|
+
bind:this={monacoTemplate}
|
|
221
|
+
{extraLib}
|
|
222
|
+
on:focus={onFocus}
|
|
223
|
+
bind:code={arg.value}
|
|
224
|
+
fontSize={14}
|
|
225
|
+
/>
|
|
226
|
+
{/if}
|
|
216
227
|
</div>
|
|
217
228
|
{:else if propertyType === undefined || propertyType == 'static'}
|
|
218
229
|
<ArgInput
|
|
@@ -263,7 +274,6 @@ const closeBracket = '}';
|
|
|
263
274
|
Not recognized input type {argName}
|
|
264
275
|
{/if}
|
|
265
276
|
</div>
|
|
266
|
-
<div class="mb-6" />
|
|
267
277
|
{:else}
|
|
268
|
-
<p class="text-sm text-gray-700">
|
|
278
|
+
<p class="text-sm text-gray-700">Argument at {argName} is undefined</p>
|
|
269
279
|
{/if}
|