windmill-components 1.291.4 → 1.305.0
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/package/autosize.d.ts +4 -0
- package/package/autosize.js +76 -0
- package/package/components/AppConnect.svelte +26 -7
- package/package/components/ArgInput.svelte +129 -103
- package/package/components/ContentSearch.svelte +8 -2
- package/package/components/ContextualVariableEditor.svelte +69 -0
- package/package/components/ContextualVariableEditor.svelte.d.ts +21 -0
- package/package/components/CronInput.svelte +3 -0
- package/package/components/DBSchemaExplorer.svelte +2 -2
- package/package/components/DarkModeObserver.svelte +2 -2
- package/package/components/DateTimeInput.svelte +9 -3
- package/package/components/DefaultScripts.svelte +1 -0
- package/package/components/DisplayResult.svelte +83 -41
- package/package/components/DisplayResult.svelte.d.ts +1 -0
- package/package/components/DurationMs.svelte +1 -10
- package/package/components/DurationMs.svelte.d.ts +0 -1
- package/package/components/Editor.svelte +40 -10
- package/package/components/ErrorOrRecoveryHandler.svelte +5 -2
- package/package/components/FlowBuilder.svelte +9 -5
- package/package/components/FlowBuilder.svelte.d.ts +1 -0
- package/package/components/FlowGraphViewerStep.svelte +5 -4
- package/package/components/FlowJobResult.svelte +36 -1
- package/package/components/FlowJobResult.svelte.d.ts +2 -1
- package/package/components/FlowLoopIterationPreview.svelte +18 -2
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +6 -0
- package/package/components/FlowStatusViewer.svelte +1 -1
- package/package/components/FlowStatusViewerInner.svelte +117 -44
- package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -0
- package/package/components/FlowStatusWaitingForEvents.svelte +97 -54
- package/package/components/GfmMarkdown.svelte +14 -0
- package/package/components/GfmMarkdown.svelte.d.ts +16 -0
- package/package/components/GroupEditor.svelte +1 -2
- package/package/components/HighlightCode.svelte +1 -1
- package/package/components/InputTransformForm.svelte +24 -2
- package/package/components/InstanceGroupEditor.svelte +1 -2
- package/package/components/InstanceSettings.svelte +4 -0
- package/package/components/JobArgs.svelte +5 -4
- package/package/components/JobArgs.svelte.d.ts +1 -0
- package/package/components/JobStatus.svelte +2 -8
- package/package/components/LightweightArgInput.svelte +3 -6
- package/package/components/LightweightArgInput.svelte.d.ts +0 -1
- package/package/components/LogId.svelte +3 -0
- package/package/components/LogId.svelte.d.ts +16 -0
- package/package/components/LogViewer.svelte +14 -5
- package/package/components/MapResult.svelte +151 -0
- package/package/components/MapResult.svelte.d.ts +27 -0
- package/package/components/MoveDrawer.svelte +2 -1
- package/package/components/ObjectStoreConfigSettings.svelte +169 -0
- package/package/components/ObjectStoreConfigSettings.svelte.d.ts +32 -0
- package/package/components/ParqetTableRenderer.svelte +3 -2
- package/package/components/ResourceEditor.svelte +33 -11
- package/package/components/RunChart.svelte +0 -1
- package/package/components/RunForm.svelte.d.ts +1 -1
- package/package/components/RunFormAdvancedPopup.svelte.d.ts +1 -1
- package/package/components/SavedInputs.svelte +1 -1
- package/package/components/ScriptBuilder.svelte +38 -8
- package/package/components/SimpleEditor.svelte +1 -3
- package/package/components/SimpleEditor.svelte.d.ts +0 -3
- package/package/components/SupabaseConnect.svelte +2 -2
- package/package/components/TableSimple.svelte +12 -1
- package/package/components/TableSimple.svelte.d.ts +1 -0
- package/package/components/TestConnection.svelte +29 -4
- package/package/components/TestConnection.svelte.d.ts +2 -0
- package/package/components/TestJobLoader.svelte +19 -2
- package/package/components/TestJobLoader.svelte.d.ts +3 -0
- package/package/components/UserSettings.svelte +5 -2
- package/package/components/UserSettings.svelte.d.ts +4 -0
- package/package/components/VariableEditor.svelte +2 -3
- package/package/components/WorkspaceGroup.svelte +10 -1
- package/package/components/apps/components/display/AppCustomComponent.svelte +3 -0
- package/package/components/apps/components/display/AppText.svelte +14 -19
- package/package/components/apps/components/display/PlotlyHtml.svelte +5 -1
- package/package/components/apps/components/display/PlotlyHtmlV2.svelte +4 -1
- package/package/components/apps/components/display/VegaLiteHtml.svelte +3 -3
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +18 -2
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +8 -5
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +2 -0
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -18
- package/package/components/apps/components/display/dbtable/queries/count.js +2 -2
- package/package/components/apps/components/display/dbtable/queries/select.js +8 -6
- package/package/components/apps/components/display/dbtable/utils.d.ts +10 -5
- package/package/components/apps/components/display/dbtable/utils.js +83 -29
- package/package/components/apps/components/display/table/AppAggridTable.svelte +1 -1
- package/package/components/apps/components/display/table/AppTable.svelte +5 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -0
- package/package/components/apps/components/helpers/eval.d.ts +1 -0
- package/package/components/apps/components/inputs/AppFileInput.svelte +8 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +1 -1
- package/package/components/apps/editor/GridEditorMenu.svelte +11 -1
- package/package/components/apps/editor/RunnableJobPanel.svelte +5 -30
- package/package/components/apps/editor/appUtils.js +2 -1
- package/package/components/apps/editor/component/components.d.ts +78 -78
- package/package/components/apps/editor/component/components.js +12 -12
- package/package/components/apps/editor/component/default-codes.js +5 -1
- package/package/components/apps/editor/componentsPanel/CssEval.svelte +0 -1
- package/package/components/apps/editor/componentsPanel/CssProperty.svelte +113 -109
- package/package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +14 -7
- package/package/components/apps/editor/componentsPanel/componentControlUtils.js +2 -0
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +2 -1
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +3 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +6 -0
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -0
- package/package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/GridPane.svelte +11 -15
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/StylePanel.svelte +40 -39
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +2 -0
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +0 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -6
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +6 -2
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +1 -6
- package/package/components/apps/svelte-select/lib/Select.svelte.d.ts +2 -2
- package/package/components/apps/types.d.ts +1 -0
- package/package/components/apps/utils.js +3 -3
- package/package/components/build_workers.js +2 -1
- package/package/components/common/FileProgressBar.svelte +1 -1
- package/package/components/common/clearableInput/ClearableInput.svelte.d.ts +1 -1
- package/package/components/common/fileInput/FileInput.svelte +4 -0
- package/package/components/common/fileInput/FileInput.svelte.d.ts +2 -0
- package/package/components/common/modal/Modal.svelte +2 -0
- package/package/components/copilot/MetadataGen.svelte +17 -12
- package/package/components/copilot/MetadataGen.svelte.d.ts +1 -1
- package/package/components/copilot/ScriptGen.svelte +61 -27
- package/package/components/copilot/lib.d.ts +4 -1
- package/package/components/copilot/lib.js +46 -31
- package/package/components/copilot/prompts/edit.yaml +1 -0
- package/package/components/copilot/prompts/editPrompt.js +1 -1
- package/package/components/copilot/prompts/fix.yaml +1 -0
- package/package/components/copilot/prompts/fixPrompt.js +1 -1
- package/package/components/copilot/prompts/gen.yaml +1 -0
- package/package/components/copilot/prompts/genPrompt.js +1 -1
- package/package/components/details/WebhooksPanel.svelte +10 -3
- package/package/components/flows/content/FlowInputs.svelte +35 -36
- package/package/components/flows/content/FlowLoop.svelte +0 -1
- package/package/components/flows/content/FlowModuleComponent.svelte +18 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +7 -0
- package/package/components/flows/content/FlowModuleWrapper.svelte +4 -1
- package/package/components/flows/content/FlowSettings.svelte +32 -4
- package/package/components/flows/content/FlowWhileLoop.svelte +137 -0
- package/package/components/flows/content/FlowWhileLoop.svelte.d.ts +19 -0
- package/package/components/flows/content/SuspendDrawer.svelte +4 -4
- package/package/components/flows/dfs.js +1 -1
- package/package/components/flows/flowExplorer.js +1 -1
- package/package/components/flows/flowStateUtils.d.ts +1 -0
- package/package/components/flows/flowStateUtils.js +12 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -2
- package/package/components/flows/map/InsertModuleButton.svelte +12 -0
- package/package/components/flows/map/MapItem.svelte +5 -5
- package/package/components/flows/map/MapItem.svelte.d.ts +1 -1
- package/package/components/flows/types.d.ts +1 -0
- package/package/components/flows/utils.d.ts +1 -0
- package/package/components/flows/utils.js +3 -0
- package/package/components/graph/FlowGraph.svelte +1 -1
- package/package/components/graph/model.d.ts +5 -2
- package/package/components/graph/svelvet/container/views/GraphView.svelte +2 -0
- package/package/components/home/Item.svelte +7 -2
- package/package/components/home/TreeView.svelte +4 -2
- package/package/components/home/TreeViewRoot.svelte +1 -1
- package/package/components/instanceSettings.d.ts +1 -1
- package/package/components/instanceSettings.js +12 -4
- package/package/components/jobs/JobPreview.svelte +1 -4
- package/package/components/propertyPicker/ObjectViewer.svelte +3 -0
- package/package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
- package/package/components/runs/JobLoader.svelte +3 -2
- package/package/components/runs/JobPreview.svelte +13 -7
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +6 -8
- package/package/components/settings/ChangeWorkspaceId.svelte +98 -0
- package/package/components/settings/ChangeWorkspaceId.svelte.d.ts +16 -0
- package/package/components/settings/ChangeWorkspaceName.svelte +71 -0
- package/package/components/settings/ChangeWorkspaceName.svelte.d.ts +16 -0
- package/package/components/settings/PremiumInfo.svelte +2 -1
- package/package/components/sidebar/OperatorMenu.svelte +3 -2
- package/package/components/sidebar/UserMenu.svelte +13 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +30 -1
- package/package/components/sidebar/changelogs.js +51 -1
- package/package/components/table/AutoDataTable.svelte +62 -41
- package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +2 -2
- package/package/es6.d.ts.txt +1 -12395
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/index.d.ts +2 -0
- package/package/gen/models/CacheTtl.d.ts +4 -0
- package/package/gen/models/CacheTtl.js +5 -0
- package/package/gen/models/ContextualVariable.d.ts +1 -0
- package/package/gen/models/CreateWorkspace.d.ts +1 -1
- package/package/gen/models/FlowMetadata.d.ts +1 -0
- package/package/gen/models/FlowModule.d.ts +2 -0
- package/package/gen/models/FlowModuleValue.d.ts +2 -1
- package/package/gen/models/FlowStatus.d.ts +1 -0
- package/package/gen/models/FlowValue.d.ts +1 -0
- package/package/gen/models/GitRepositorySettings.d.ts +2 -1
- package/package/gen/models/GlobalUserInfo.d.ts +1 -0
- package/package/gen/models/NewScript.d.ts +1 -0
- package/package/gen/models/OpenFlowWPath.d.ts +1 -0
- package/package/gen/models/Script.d.ts +1 -0
- package/package/gen/models/WhileloopFlow.d.ts +8 -0
- package/package/gen/models/WhileloopFlow.js +5 -0
- package/package/gen/models/WorkspaceGitSyncSettings.d.ts +1 -1
- package/package/gen/services/JobService.d.ts +74 -8
- package/package/gen/services/JobService.js +55 -8
- package/package/gen/services/ScheduleService.d.ts +5 -1
- package/package/gen/services/ScheduleService.js +2 -1
- package/package/gen/services/SettingService.d.ts +11 -0
- package/package/gen/services/SettingService.js +13 -0
- package/package/gen/services/UserService.d.ts +29 -1
- package/package/gen/services/UserService.js +30 -0
- package/package/gen/services/WorkspaceService.d.ts +57 -2
- package/package/gen/services/WorkspaceService.js +76 -0
- package/package/hub.d.ts +3 -3
- package/package/hub.js +6 -6
- package/package/infer.d.ts +1 -20
- package/package/infer.js +1 -95
- package/package/inferArgSig.d.ts +20 -0
- package/package/inferArgSig.js +95 -0
- package/package/script_helpers.d.ts +3 -3
- package/package/script_helpers.js +47 -7
- package/package/scripts.d.ts +2 -2
- package/package/scripts.js +4 -4
- package/package/stores.d.ts +4 -0
- package/package/stores.js +2 -0
- package/package/utils.js +1 -0
- package/package.json +3 -2
|
@@ -15,6 +15,7 @@ import FileDownload from './common/fileDownload/FileDownload.svelte';
|
|
|
15
15
|
import ParqetTableRenderer from './ParqetTableRenderer.svelte';
|
|
16
16
|
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
17
17
|
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
18
|
+
import MapResult from './MapResult.svelte';
|
|
18
19
|
export let result;
|
|
19
20
|
export let requireHtmlApproval = false;
|
|
20
21
|
export let filename = undefined;
|
|
@@ -22,6 +23,7 @@ export let disableExpand = false;
|
|
|
22
23
|
export let jobId = undefined;
|
|
23
24
|
export let workspaceId = undefined;
|
|
24
25
|
export let hideAsJson = false;
|
|
26
|
+
export let noControls = false;
|
|
25
27
|
let resultKind;
|
|
26
28
|
$: resultKind = inferResultKind(result);
|
|
27
29
|
export let forceJson = false;
|
|
@@ -55,19 +57,25 @@ function inferResultKind(result) {
|
|
|
55
57
|
return 'json';
|
|
56
58
|
}
|
|
57
59
|
if (result !== undefined) {
|
|
60
|
+
if (typeof result === 'string') {
|
|
61
|
+
length = 0;
|
|
62
|
+
largeObject = false;
|
|
63
|
+
is_render_all = false;
|
|
64
|
+
return 'plain';
|
|
65
|
+
}
|
|
58
66
|
try {
|
|
59
67
|
let keys = result && typeof result == 'object' ? Object.keys(result) : [];
|
|
60
68
|
is_render_all =
|
|
61
69
|
keys.length == 1 && keys.includes('render_all') && Array.isArray(result['render_all']);
|
|
62
70
|
// Check if the result is an image
|
|
63
|
-
if (['png', 'svg', 'jpeg'].includes(keys[0]) && keys.length == 1) {
|
|
71
|
+
if (['png', 'svg', 'jpeg', 'html'].includes(keys[0]) && keys.length == 1) {
|
|
64
72
|
// Check if the image is too large (10mb)
|
|
65
73
|
largeObject = roughSizeOfObject(result) > 10000000;
|
|
66
74
|
return keys[0];
|
|
67
75
|
}
|
|
68
76
|
let length = roughSizeOfObject(result);
|
|
69
77
|
// Otherwise, check if the result is too large (10kb) for json
|
|
70
|
-
largeObject = length >
|
|
78
|
+
largeObject = length > 50000;
|
|
71
79
|
if (largeObject) {
|
|
72
80
|
return 'json';
|
|
73
81
|
}
|
|
@@ -88,6 +96,9 @@ function inferResultKind(result) {
|
|
|
88
96
|
else if (keys.length == 1 && keys[0] == 'html') {
|
|
89
97
|
return 'html';
|
|
90
98
|
}
|
|
99
|
+
else if (keys.length == 1 && keys[0] == 'map') {
|
|
100
|
+
return 'map';
|
|
101
|
+
}
|
|
91
102
|
else if (keys.length == 1 && keys[0] == 'file') {
|
|
92
103
|
return 'file';
|
|
93
104
|
}
|
|
@@ -150,7 +161,7 @@ function contentOrRootString(obj) {
|
|
|
150
161
|
function isArrayWithObjects(json) {
|
|
151
162
|
return (Array.isArray(json) &&
|
|
152
163
|
json.length > 0 &&
|
|
153
|
-
json.every((item) => item && typeof item === 'object' && Object.keys(item).length > 0));
|
|
164
|
+
json.every((item) => item && typeof item === 'object' && Object.keys(item).length > 0 && !Array.isArray(item)));
|
|
154
165
|
}
|
|
155
166
|
$: isTableDisplay = isArrayWithObjects(result);
|
|
156
167
|
let richRender = !forceJson;
|
|
@@ -175,12 +186,15 @@ let globalForceJson = false;
|
|
|
175
186
|
</script>
|
|
176
187
|
|
|
177
188
|
{#if is_render_all}
|
|
178
|
-
<div class="flex flex-col w-full">
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
189
|
+
<div class="flex flex-col w-full gap-6">
|
|
190
|
+
{#if !noControls}
|
|
191
|
+
<div class="mb-2 text-tertiary text-sm">
|
|
192
|
+
as JSON <input class="windmillapp" type="checkbox" bind:checked={globalForceJson} />
|
|
193
|
+
</div>
|
|
194
|
+
{/if}
|
|
182
195
|
{#each result['render_all'] as res}
|
|
183
196
|
<svelte:self
|
|
197
|
+
{noControls}
|
|
184
198
|
result={res}
|
|
185
199
|
{requireHtmlApproval}
|
|
186
200
|
{filename}
|
|
@@ -193,11 +207,15 @@ let globalForceJson = false;
|
|
|
193
207
|
{/each}</div
|
|
194
208
|
>
|
|
195
209
|
{:else}
|
|
196
|
-
<div
|
|
210
|
+
<div
|
|
211
|
+
class="inline-highlight relative grow {['plain', 'markdown'].includes(resultKind ?? '')
|
|
212
|
+
? ''
|
|
213
|
+
: 'min-h-[200px]'}"
|
|
214
|
+
>
|
|
197
215
|
{#if result != undefined && length != undefined && largeObject != undefined}
|
|
198
216
|
<div class="flex justify-between items-center w-full pb-1">
|
|
199
217
|
<div class="text-tertiary text-sm flex items-center">
|
|
200
|
-
{#if (resultKind && !['json', 's3object', 's3object-list', 'table-col', 'table-row'].includes(resultKind) && !hideAsJson) || isTableDisplay}
|
|
218
|
+
{#if (resultKind && typeof result == 'object' && !['json', 's3object', 's3object-list', 'table-col', 'table-row'].includes(resultKind) && !hideAsJson) || isTableDisplay}
|
|
201
219
|
<ToggleButtonGroup
|
|
202
220
|
class="h-6"
|
|
203
221
|
selected={isTableDisplay
|
|
@@ -226,16 +244,14 @@ let globalForceJson = false;
|
|
|
226
244
|
</div>
|
|
227
245
|
<div class="text-tertiary text-xs flex gap-2 z-10 items-center">
|
|
228
246
|
<slot name="copilot-fix" />
|
|
229
|
-
{#if !disableExpand}
|
|
247
|
+
{#if !disableExpand && !noControls}
|
|
230
248
|
<button on:click={() => copyToClipboard(toJsonStr(result))}
|
|
231
249
|
><ClipboardCopy size={16} /></button
|
|
232
250
|
>
|
|
233
251
|
<button on:click={jsonViewer.openDrawer}><Expand size={16} /></button>
|
|
234
252
|
{/if}
|
|
235
253
|
</div>
|
|
236
|
-
</div>
|
|
237
|
-
|
|
238
|
-
{#if !forceJson && resultKind == 'table-col'}
|
|
254
|
+
</div>{#if !forceJson && resultKind == 'table-col'}
|
|
239
255
|
{@const data = 'table-col' in result ? result['table-col'] : result}
|
|
240
256
|
<AutoDataTable objects={transform(data)} />
|
|
241
257
|
{:else if !forceJson && resultKind == 'table-row'}
|
|
@@ -281,6 +297,15 @@ let globalForceJson = false;
|
|
|
281
297
|
</div>
|
|
282
298
|
{/if}
|
|
283
299
|
</div>
|
|
300
|
+
{:else if !forceJson && resultKind == 'map'}
|
|
301
|
+
<div class="h-full">
|
|
302
|
+
<MapResult
|
|
303
|
+
lat={result.map.lat}
|
|
304
|
+
lon={result.map.lon}
|
|
305
|
+
zoom={result.map.zoom}
|
|
306
|
+
markers={result.map.markers}
|
|
307
|
+
/>
|
|
308
|
+
</div>
|
|
284
309
|
{:else if !forceJson && resultKind == 'png'}
|
|
285
310
|
<div class="h-full">
|
|
286
311
|
<img
|
|
@@ -310,9 +335,19 @@ let globalForceJson = false;
|
|
|
310
335
|
src="data:image/gif;base64,{contentOrRootString(result.gif)}"
|
|
311
336
|
/>
|
|
312
337
|
</div>
|
|
313
|
-
{:else if !forceJson && resultKind == 'plain'}
|
|
314
|
-
|
|
315
|
-
|
|
338
|
+
{:else if !forceJson && resultKind == 'plain'}<div class="h-full text-2xs"
|
|
339
|
+
><pre>{typeof result == 'string' ? result : result?.['result']}</pre>{#if !noControls}
|
|
340
|
+
<div class="flex">
|
|
341
|
+
<Button
|
|
342
|
+
on:click={() =>
|
|
343
|
+
copyToClipboard(typeof result == 'string' ? result : result?.['result'])}
|
|
344
|
+
color="light"
|
|
345
|
+
size="xs"
|
|
346
|
+
>
|
|
347
|
+
<div class="flex gap-2 items-center">Copy <ClipboardCopy size={12} /> </div>
|
|
348
|
+
</Button>
|
|
349
|
+
</div>
|
|
350
|
+
{/if}
|
|
316
351
|
</div>
|
|
317
352
|
{:else if !forceJson && resultKind == 'file'}
|
|
318
353
|
<div>
|
|
@@ -425,13 +460,13 @@ let globalForceJson = false;
|
|
|
425
460
|
</div>
|
|
426
461
|
</div>
|
|
427
462
|
{:else if !forceJson && resultKind == 'markdown'}
|
|
428
|
-
<div class="prose dark:prose-invert">
|
|
463
|
+
<div class="prose-xs dark:prose-invert">
|
|
429
464
|
<Markdown md={result?.md ?? result?.markdown} />
|
|
430
465
|
</div>
|
|
431
466
|
{:else if !forceJson && isTableDisplay && richRender}
|
|
432
467
|
<AutoDataTable objects={result} />
|
|
433
468
|
{:else if largeObject}
|
|
434
|
-
{#if result && typeof result == 'object' && '
|
|
469
|
+
{#if result && typeof result == 'object' && 'file' in result}
|
|
435
470
|
<div
|
|
436
471
|
><a
|
|
437
472
|
download={result.filename ?? result.file?.filename ?? 'windmill.file'}
|
|
@@ -451,31 +486,26 @@ let globalForceJson = false;
|
|
|
451
486
|
</a>
|
|
452
487
|
</div>
|
|
453
488
|
|
|
454
|
-
<div class="
|
|
455
|
-
<Alert
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
>
|
|
463
|
-
See docs for setting up an object storage service integration using s3 or any other
|
|
464
|
-
s3 compatible services
|
|
465
|
-
</a>
|
|
466
|
-
</Alert>
|
|
489
|
+
<div class="mt-1 mb-2">
|
|
490
|
+
<Alert
|
|
491
|
+
size="xs"
|
|
492
|
+
title="Large result detected"
|
|
493
|
+
type="warning"
|
|
494
|
+
tooltip="We recommend using persistent object storage for large result. See docs for setting up an object storage service integration using s3 or any other s3 compatible services."
|
|
495
|
+
documentationLink="https://www.windmill.dev/docs/core_concepts/persistent_storage#large-data-files-s3-r2-minio-azure-blob"
|
|
496
|
+
/>
|
|
467
497
|
</div>
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
498
|
+
{#if result && result != 'WINDMILL_TOO_BIG'}
|
|
499
|
+
<ObjectViewer json={result} />
|
|
500
|
+
{/if}
|
|
471
501
|
{/if}
|
|
472
502
|
{:else if typeof result == 'string' && result.length > 0}
|
|
473
|
-
<pre class="text-sm">{result}</pre>
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
</
|
|
478
|
-
|
|
503
|
+
<pre class="text-sm">{result}</pre>{#if !noControls}<div class="flex">
|
|
504
|
+
<Button on:click={() => copyToClipboard(result)} color="light" size="xs">
|
|
505
|
+
<div class="flex gap-2 items-center">Copy <ClipboardCopy size={12} /> </div>
|
|
506
|
+
</Button>
|
|
507
|
+
</div>
|
|
508
|
+
{/if}
|
|
479
509
|
{:else}
|
|
480
510
|
<Highlight
|
|
481
511
|
class={forceJson ? '' : 'h-full w-full'}
|
|
@@ -483,12 +513,23 @@ let globalForceJson = false;
|
|
|
483
513
|
code={toJsonStr(result).replace(/\\n/g, '\n')}
|
|
484
514
|
/>
|
|
485
515
|
{/if}
|
|
516
|
+
{:else if typeof result == 'string' && resultKind == 'plain'}
|
|
517
|
+
<div class="h-full text-xs">
|
|
518
|
+
<pre>{result}</pre>
|
|
519
|
+
{#if !noControls}
|
|
520
|
+
<div class="flex">
|
|
521
|
+
<Button on:click={() => copyToClipboard(result)} color="light" size="xs">
|
|
522
|
+
<div class="flex gap-2 items-center">Copy <ClipboardCopy size={12} /> </div>
|
|
523
|
+
</Button>
|
|
524
|
+
</div>
|
|
525
|
+
{/if}
|
|
526
|
+
</div>
|
|
486
527
|
{:else}
|
|
487
528
|
<div class="text-tertiary text-sm">No result: {toJsonStr(result)}</div>
|
|
488
529
|
{/if}
|
|
489
530
|
</div>
|
|
490
531
|
|
|
491
|
-
{#if !disableExpand}
|
|
532
|
+
{#if !disableExpand && !noControls}
|
|
492
533
|
<Portal>
|
|
493
534
|
<Drawer bind:this={jsonViewer} size="900px">
|
|
494
535
|
<DrawerContent title="Expanded Result" on:close={jsonViewer.closeDrawer}>
|
|
@@ -516,6 +557,7 @@ let globalForceJson = false;
|
|
|
516
557
|
</Button>
|
|
517
558
|
</svelte:fragment>
|
|
518
559
|
<svelte:self
|
|
560
|
+
{noControls}
|
|
519
561
|
{result}
|
|
520
562
|
{requireHtmlApproval}
|
|
521
563
|
{filename}
|
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
<script>import { msToSec } from '../utils';
|
|
2
2
|
import { Badge } from './common';
|
|
3
|
-
import Tooltip from './Tooltip.svelte';
|
|
4
3
|
import { Hourglass } from 'lucide-svelte';
|
|
5
4
|
export let duration_ms;
|
|
6
|
-
export let flow;
|
|
7
5
|
</script>
|
|
8
6
|
|
|
9
7
|
<Badge large icon={{ icon: Hourglass, position: 'left' }}>
|
|
10
|
-
Ran in {msToSec(duration_ms)}s
|
|
11
|
-
{#if flow}
|
|
12
|
-
<Tooltip>
|
|
13
|
-
Cumulative time of the execution of each steps. Suspend/sleep/transition times are not
|
|
14
|
-
accounted for, and each step's duration in a parallel branch would be added. Hence the time
|
|
15
|
-
here can differ from the time it took for the flow to have a result from start.
|
|
16
|
-
</Tooltip>
|
|
17
|
-
{/if}
|
|
8
|
+
Ran in {msToSec(duration_ms)}s
|
|
18
9
|
</Badge>
|
|
@@ -612,21 +612,21 @@ export async function reloadWebsocket() {
|
|
|
612
612
|
];
|
|
613
613
|
});
|
|
614
614
|
}
|
|
615
|
-
else if (lang === '
|
|
615
|
+
else if (lang === 'typescript') {
|
|
616
616
|
const stdLib = { content: libStdContent, filePath: 'es6.d.ts' };
|
|
617
617
|
if (scriptLang == 'bun') {
|
|
618
|
-
languages.typescript.
|
|
618
|
+
languages.typescript.typescriptDefaults.setExtraLibs([stdLib]);
|
|
619
619
|
}
|
|
620
620
|
else {
|
|
621
621
|
const denoFetch = { content: denoFetchContent, filePath: 'deno_fetch.d.ts' };
|
|
622
|
-
languages.typescript.
|
|
622
|
+
languages.typescript.typescriptDefaults.setExtraLibs([stdLib, denoFetch]);
|
|
623
623
|
}
|
|
624
624
|
if (scriptLang == 'bun' && ata == undefined) {
|
|
625
625
|
const addLibraryToRuntime = async (code, _path) => {
|
|
626
626
|
const path = 'file://' + _path;
|
|
627
627
|
let uri = mUri.parse(path);
|
|
628
628
|
console.log('adding library to runtime', path);
|
|
629
|
-
languages.typescript.
|
|
629
|
+
languages.typescript.typescriptDefaults.addExtraLib(code, path);
|
|
630
630
|
try {
|
|
631
631
|
await vscode.workspace.fs.writeFile(uri, new TextEncoder().encode(code));
|
|
632
632
|
}
|
|
@@ -848,16 +848,24 @@ async function loadMonaco() {
|
|
|
848
848
|
// console.log('bef ready')
|
|
849
849
|
// console.log('af ready')
|
|
850
850
|
initialized = true;
|
|
851
|
-
languages.typescript.typescriptDefaults.setModeConfiguration({
|
|
852
|
-
completionItems: false,
|
|
853
|
-
definitions: false,
|
|
854
|
-
hovers: false
|
|
855
|
-
});
|
|
856
851
|
languages.typescript.typescriptDefaults.setCompilerOptions({
|
|
857
852
|
target: languages.typescript.ScriptTarget.Latest,
|
|
858
853
|
allowNonTsExtensions: true,
|
|
859
854
|
noSemanticValidation: false,
|
|
860
855
|
noSyntaxValidation: false,
|
|
856
|
+
completionItems: true,
|
|
857
|
+
hovers: true,
|
|
858
|
+
documentSymbols: true,
|
|
859
|
+
definitions: true,
|
|
860
|
+
references: true,
|
|
861
|
+
documentHighlights: true,
|
|
862
|
+
rename: true,
|
|
863
|
+
diagnostics: true,
|
|
864
|
+
documentRangeFormattingEdits: true,
|
|
865
|
+
signatureHelp: true,
|
|
866
|
+
onTypeFormattingEdits: true,
|
|
867
|
+
codeActions: true,
|
|
868
|
+
inlayHints: true,
|
|
861
869
|
checkJs: true,
|
|
862
870
|
allowJs: true,
|
|
863
871
|
noUnusedLocals: true,
|
|
@@ -880,13 +888,35 @@ async function loadMonaco() {
|
|
|
880
888
|
codeActions: true,
|
|
881
889
|
inlayHints: true
|
|
882
890
|
});
|
|
891
|
+
languages.typescript.typescriptDefaults.setModeConfiguration({
|
|
892
|
+
completionItems: true,
|
|
893
|
+
hovers: true,
|
|
894
|
+
documentSymbols: true,
|
|
895
|
+
definitions: true,
|
|
896
|
+
references: true,
|
|
897
|
+
documentHighlights: true,
|
|
898
|
+
rename: true,
|
|
899
|
+
diagnostics: true,
|
|
900
|
+
documentRangeFormattingEdits: true,
|
|
901
|
+
signatureHelp: true,
|
|
902
|
+
onTypeFormattingEdits: true,
|
|
903
|
+
codeActions: true,
|
|
904
|
+
inlayHints: true
|
|
905
|
+
});
|
|
883
906
|
languages.typescript.javascriptDefaults.setEagerModelSync(true);
|
|
907
|
+
languages.typescript.typescriptDefaults.setEagerModelSync(true);
|
|
884
908
|
languages.typescript.javascriptDefaults.setDiagnosticsOptions({
|
|
885
909
|
noSemanticValidation: false,
|
|
886
910
|
noSyntaxValidation: false,
|
|
887
911
|
noSuggestionDiagnostics: false,
|
|
888
912
|
diagnosticCodesToIgnore: [1108]
|
|
889
913
|
});
|
|
914
|
+
languages.typescript.typescriptDefaults.setDiagnosticsOptions({
|
|
915
|
+
noSemanticValidation: false,
|
|
916
|
+
noSyntaxValidation: false,
|
|
917
|
+
noSuggestionDiagnostics: false,
|
|
918
|
+
diagnosticCodesToIgnore: [1108]
|
|
919
|
+
});
|
|
890
920
|
languages.typescript.javascriptDefaults.setCompilerOptions({
|
|
891
921
|
target: languages.typescript.ScriptTarget.Latest,
|
|
892
922
|
allowNonTsExtensions: true,
|
|
@@ -898,7 +928,7 @@ async function loadMonaco() {
|
|
|
898
928
|
noUnusedParameters: true,
|
|
899
929
|
noUnusedLocals: true,
|
|
900
930
|
strict: true,
|
|
901
|
-
noLib:
|
|
931
|
+
noLib: true,
|
|
902
932
|
moduleResolution: languages.typescript.ModuleResolutionKind.NodeJs
|
|
903
933
|
});
|
|
904
934
|
try {
|
|
@@ -6,6 +6,7 @@ import { enterpriseLicense, workspaceStore } from '../stores';
|
|
|
6
6
|
import { emptySchema, emptyString, sendUserToast, tryEvery } from '../utils';
|
|
7
7
|
import { FlowService, JobService, Script, ScriptService, WorkspaceService } from '../gen';
|
|
8
8
|
import { inferArgs } from '../infer';
|
|
9
|
+
import { hubBaseUrlStore } from '../stores';
|
|
9
10
|
import { CheckCircle2, Loader2, RotateCw, XCircle } from 'lucide-svelte';
|
|
10
11
|
const slackRecoveryHandler = 'hub/2430/slack/schedule-recovery-handler-slack';
|
|
11
12
|
const slackHandlerScriptPath = 'hub/6512/workspace-or-schedule-error-handler-slack';
|
|
@@ -138,7 +139,8 @@ $: handlerPath &&
|
|
|
138
139
|
'started_at',
|
|
139
140
|
'success_times',
|
|
140
141
|
'success_result',
|
|
141
|
-
'success_started_at'
|
|
142
|
+
'success_started_at',
|
|
143
|
+
'email'
|
|
142
144
|
]).then((schema) => (customHandlerSchema = schema));
|
|
143
145
|
$: handlerPath &&
|
|
144
146
|
isSlackHandler(handlerPath) &&
|
|
@@ -155,6 +157,7 @@ $: handlerPath &&
|
|
|
155
157
|
'success_times',
|
|
156
158
|
'success_result',
|
|
157
159
|
'success_started_at',
|
|
160
|
+
'email',
|
|
158
161
|
'slack'
|
|
159
162
|
]).then((schema) => (slackHandlerSchema = schema));
|
|
160
163
|
</script>
|
|
@@ -195,7 +198,7 @@ $: handlerPath &&
|
|
|
195
198
|
<div class="text-xs">
|
|
196
199
|
Example of error handler scripts can be found on <a
|
|
197
200
|
target="_blank"
|
|
198
|
-
href="
|
|
201
|
+
href="{$hubBaseUrlStore}/failures"
|
|
199
202
|
>
|
|
200
203
|
Windmill Hub</a
|
|
201
204
|
>
|
|
@@ -33,6 +33,7 @@ import UnsavedConfirmationModal from './common/confirmationModal/UnsavedConfirma
|
|
|
33
33
|
import { cloneDeep } from 'lodash';
|
|
34
34
|
import { goto } from '$app/navigation';
|
|
35
35
|
export let initialPath = '';
|
|
36
|
+
export let pathStoreInit = undefined;
|
|
36
37
|
export let newFlow;
|
|
37
38
|
export let selectedId;
|
|
38
39
|
export let initialArgs = {};
|
|
@@ -111,7 +112,8 @@ async function saveDraft(forceSave = false) {
|
|
|
111
112
|
schema: flow.schema,
|
|
112
113
|
tag: flow.tag,
|
|
113
114
|
draft_only: true,
|
|
114
|
-
ws_error_handler_muted: flow.ws_error_handler_muted
|
|
115
|
+
ws_error_handler_muted: flow.ws_error_handler_muted,
|
|
116
|
+
visible_to_runner_only: flow.visible_to_runner_only
|
|
115
117
|
}
|
|
116
118
|
});
|
|
117
119
|
}
|
|
@@ -184,7 +186,8 @@ async function saveFlow() {
|
|
|
184
186
|
schema: flow.schema,
|
|
185
187
|
ws_error_handler_muted: flow.ws_error_handler_muted,
|
|
186
188
|
tag: flow.tag,
|
|
187
|
-
dedicated_worker: flow.dedicated_worker
|
|
189
|
+
dedicated_worker: flow.dedicated_worker,
|
|
190
|
+
visible_to_runner_only: flow.visible_to_runner_only
|
|
188
191
|
}
|
|
189
192
|
});
|
|
190
193
|
if (enabled) {
|
|
@@ -244,7 +247,8 @@ async function saveFlow() {
|
|
|
244
247
|
schema: flow.schema,
|
|
245
248
|
tag: flow.tag,
|
|
246
249
|
dedicated_worker: flow.dedicated_worker,
|
|
247
|
-
ws_error_handler_muted: flow.ws_error_handler_muted
|
|
250
|
+
ws_error_handler_muted: flow.ws_error_handler_muted,
|
|
251
|
+
visible_to_runner_only: flow.visible_to_runner_only
|
|
248
252
|
}
|
|
249
253
|
});
|
|
250
254
|
}
|
|
@@ -296,8 +300,8 @@ const previewArgsStore = writable(initialArgs);
|
|
|
296
300
|
const scriptEditorDrawer = writable(undefined);
|
|
297
301
|
const moving = writable(undefined);
|
|
298
302
|
const history = initHistory($flowStore);
|
|
299
|
-
const pathStore = writable(initialPath);
|
|
300
|
-
$: $pathStore = initialPath;
|
|
303
|
+
const pathStore = writable(pathStoreInit ?? initialPath);
|
|
304
|
+
$: initialPath && ($pathStore = initialPath);
|
|
301
305
|
const testStepStore = writable({});
|
|
302
306
|
function select(selectedId) {
|
|
303
307
|
selectedIdStore.set(selectedId);
|
|
@@ -6,6 +6,7 @@ import type DiffDrawer from './DiffDrawer.svelte';
|
|
|
6
6
|
declare const __propDef: {
|
|
7
7
|
props: {
|
|
8
8
|
initialPath?: string | undefined;
|
|
9
|
+
pathStoreInit?: string | undefined;
|
|
9
10
|
newFlow: boolean;
|
|
10
11
|
selectedId: string | undefined;
|
|
11
12
|
initialArgs?: Record<string, any> | undefined;
|
|
@@ -9,6 +9,7 @@ import FlowPathViewer from './flows/content/FlowPathViewer.svelte';
|
|
|
9
9
|
import SchemaViewer from './SchemaViewer.svelte';
|
|
10
10
|
import { scriptPathToHref } from '../scripts';
|
|
11
11
|
import { cleanExpr } from '../utils';
|
|
12
|
+
import { hubBaseUrlStore } from '../stores';
|
|
12
13
|
import { twMerge } from 'tailwind-merge';
|
|
13
14
|
import FlowModuleScript from './flows/content/FlowModuleScript.svelte';
|
|
14
15
|
export let flow;
|
|
@@ -24,7 +25,7 @@ let codeViewer;
|
|
|
24
25
|
<a
|
|
25
26
|
rel="noreferrer"
|
|
26
27
|
target="_blank"
|
|
27
|
-
href={scriptPathToHref(stepDetail?.value?.path ?? '')}
|
|
28
|
+
href={scriptPathToHref(stepDetail?.value?.path ?? '', $hubBaseUrlStore)}
|
|
28
29
|
class=""
|
|
29
30
|
>
|
|
30
31
|
<IconedPath path={stepDetail?.value?.path ?? ''} />
|
|
@@ -42,7 +43,7 @@ let codeViewer;
|
|
|
42
43
|
class="w-full h-full text-sm"
|
|
43
44
|
title="embedded script from hub"
|
|
44
45
|
frameborder="0"
|
|
45
|
-
src="
|
|
46
|
+
src="{$hubBaseUrlStore}/embed/script/{stepDetail.value?.path?.substring(4)}"
|
|
46
47
|
/>
|
|
47
48
|
</div>
|
|
48
49
|
{/if}
|
|
@@ -106,7 +107,7 @@ let codeViewer;
|
|
|
106
107
|
<a
|
|
107
108
|
rel="noreferrer"
|
|
108
109
|
target="_blank"
|
|
109
|
-
href={scriptPathToHref(stepDetail?.value?.path ?? '')}
|
|
110
|
+
href={scriptPathToHref(stepDetail?.value?.path ?? '', $hubBaseUrlStore)}
|
|
110
111
|
class=""
|
|
111
112
|
>
|
|
112
113
|
<IconedPath path={stepDetail?.value?.path ?? ''} />
|
|
@@ -156,7 +157,7 @@ let codeViewer;
|
|
|
156
157
|
class="w-full grow text-sm"
|
|
157
158
|
title="embedded script from hub"
|
|
158
159
|
frameborder="0"
|
|
159
|
-
src="
|
|
160
|
+
src="{$hubBaseUrlStore}/embed/script/{stepDetail.value?.path?.substring(4)}"
|
|
160
161
|
/>
|
|
161
162
|
</div>
|
|
162
163
|
{:else}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<script>import { Loader2 } from 'lucide-svelte';
|
|
2
2
|
import DisplayResult from './DisplayResult.svelte';
|
|
3
3
|
import LogViewer from './LogViewer.svelte';
|
|
4
|
+
import { JobService } from '../gen';
|
|
5
|
+
import { workspaceStore } from '../stores';
|
|
4
6
|
export let result;
|
|
5
7
|
export let logs;
|
|
6
8
|
export let col = false;
|
|
@@ -9,11 +11,44 @@ export let loading;
|
|
|
9
11
|
export let filename = undefined;
|
|
10
12
|
export let jobId = undefined;
|
|
11
13
|
export let workspaceId = undefined;
|
|
14
|
+
export let refreshLog = false;
|
|
15
|
+
let lastJobId = undefined;
|
|
16
|
+
$: jobId != lastJobId && diffJobId();
|
|
17
|
+
async function diffJobId() {
|
|
18
|
+
if (jobId != lastJobId) {
|
|
19
|
+
lastJobId = jobId;
|
|
20
|
+
logs = undefined;
|
|
21
|
+
logOffset = 0;
|
|
22
|
+
getLogs();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
let logOffset = 0;
|
|
26
|
+
async function getLogs() {
|
|
27
|
+
if (jobId) {
|
|
28
|
+
const getUpdate = await JobService.getJobUpdates({
|
|
29
|
+
workspace: workspaceId ?? $workspaceStore,
|
|
30
|
+
id: jobId,
|
|
31
|
+
running: loading ?? false,
|
|
32
|
+
logOffset: logOffset == 0 ? (logs?.length ? logs?.length + 1 : 0) : logOffset
|
|
33
|
+
});
|
|
34
|
+
logs = (logs ?? '').concat(getUpdate.new_logs ?? '');
|
|
35
|
+
logOffset = getUpdate.log_offset ?? 0;
|
|
36
|
+
}
|
|
37
|
+
if (refreshLog) {
|
|
38
|
+
setTimeout(() => {
|
|
39
|
+
if (refreshLog) {
|
|
40
|
+
getLogs();
|
|
41
|
+
}
|
|
42
|
+
}, 1000);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
12
45
|
</script>
|
|
13
46
|
|
|
14
47
|
<div
|
|
15
48
|
class:border={!noBorder}
|
|
16
|
-
class="grid {!col
|
|
49
|
+
class="grid {!col
|
|
50
|
+
? 'grid-cols-2'
|
|
51
|
+
: 'grid-rows-2'} shadow border border-tertiary-inverse h-full max-h-[70vh]"
|
|
17
52
|
>
|
|
18
53
|
<div class="bg-surface {col ? '' : 'max-h-80'} h-full p-1 overflow-auto relative">
|
|
19
54
|
<span class="text-tertiary">Result</span>
|
|
@@ -2,13 +2,14 @@ import { SvelteComponent } from "svelte";
|
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
4
|
result: any;
|
|
5
|
-
logs: string;
|
|
5
|
+
logs: string | undefined;
|
|
6
6
|
col?: boolean | undefined;
|
|
7
7
|
noBorder?: boolean | undefined;
|
|
8
8
|
loading: boolean;
|
|
9
9
|
filename?: string | undefined;
|
|
10
10
|
jobId?: string | undefined;
|
|
11
11
|
workspaceId?: string | undefined;
|
|
12
|
+
refreshLog?: boolean | undefined;
|
|
12
13
|
};
|
|
13
14
|
events: {
|
|
14
15
|
[evt: string]: CustomEvent<any>;
|
|
@@ -12,7 +12,8 @@ export let jobId = undefined;
|
|
|
12
12
|
export let job = undefined;
|
|
13
13
|
export let modules;
|
|
14
14
|
export let previewArgs = {};
|
|
15
|
-
|
|
15
|
+
export let whileLoop = false;
|
|
16
|
+
export const forloopSchema = {
|
|
16
17
|
$schema: 'https://json-schema.org/draft/2020-12/schema',
|
|
17
18
|
properties: {
|
|
18
19
|
iter: {
|
|
@@ -30,6 +31,21 @@ const schema = {
|
|
|
30
31
|
required: [],
|
|
31
32
|
type: 'object'
|
|
32
33
|
};
|
|
34
|
+
export const whileLoopSchema = {
|
|
35
|
+
$schema: 'https://json-schema.org/draft/2020-12/schema',
|
|
36
|
+
properties: {
|
|
37
|
+
iter: {
|
|
38
|
+
type: 'object',
|
|
39
|
+
properties: {
|
|
40
|
+
index: {
|
|
41
|
+
type: 'number'
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
required: [],
|
|
47
|
+
type: 'object'
|
|
48
|
+
};
|
|
33
49
|
let selectedJobStep = undefined;
|
|
34
50
|
let isRunning = false;
|
|
35
51
|
let jobProgressReset;
|
|
@@ -124,7 +140,7 @@ $: if (job?.type === 'CompletedJob') {
|
|
|
124
140
|
noVariablePicker
|
|
125
141
|
compact
|
|
126
142
|
class="py-4 max-w-3xl"
|
|
127
|
-
{
|
|
143
|
+
schema={whileLoop ? whileLoopSchema : forloopSchema}
|
|
128
144
|
bind:args={previewArgs}
|
|
129
145
|
/>
|
|
130
146
|
</div>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
2
|
import { Job, type FlowModule, type RestartedFrom } from '../gen';
|
|
3
|
+
import type { Schema } from '../common';
|
|
3
4
|
declare const __propDef: {
|
|
4
5
|
props: {
|
|
5
6
|
open: boolean;
|
|
@@ -7,6 +8,9 @@ declare const __propDef: {
|
|
|
7
8
|
job?: Job | undefined;
|
|
8
9
|
modules: FlowModule[];
|
|
9
10
|
previewArgs?: Record<string, any> | undefined;
|
|
11
|
+
whileLoop?: boolean | undefined;
|
|
12
|
+
forloopSchema?: Schema | undefined;
|
|
13
|
+
whileLoopSchema?: Schema | undefined;
|
|
10
14
|
test?: (() => void) | undefined;
|
|
11
15
|
runPreview?: ((args: Record<string, any>, restartedFrom: RestartedFrom | undefined) => Promise<void>) | undefined;
|
|
12
16
|
};
|
|
@@ -21,6 +25,8 @@ export type FlowLoopIterationPreviewProps = typeof __propDef.props;
|
|
|
21
25
|
export type FlowLoopIterationPreviewEvents = typeof __propDef.events;
|
|
22
26
|
export type FlowLoopIterationPreviewSlots = typeof __propDef.slots;
|
|
23
27
|
export default class FlowLoopIterationPreview extends SvelteComponent<FlowLoopIterationPreviewProps, FlowLoopIterationPreviewEvents, FlowLoopIterationPreviewSlots> {
|
|
28
|
+
get forloopSchema(): Schema;
|
|
29
|
+
get whileLoopSchema(): Schema;
|
|
24
30
|
get test(): () => void;
|
|
25
31
|
get runPreview(): (args: Record<string, any>, restartedFrom: RestartedFrom | undefined) => Promise<void>;
|
|
26
32
|
}
|