windmill-components 1.379.4 → 1.382.3
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/base.d.ts +1 -1
- package/package/base.js +1 -1
- package/package/components/ArgInput.svelte +33 -3
- package/package/components/DisplayResult.svelte +17 -5
- package/package/components/EditorBar.svelte +48 -38
- package/package/components/EditorBar.svelte.d.ts +2 -0
- package/package/components/ErrorOrRecoveryHandler.svelte +3 -2
- package/package/components/FlowBuilder.svelte +18 -12
- package/package/components/FlowBuilder.svelte.d.ts +3 -2
- package/package/components/FlowGraphViewer.svelte +6 -5
- package/package/components/FlowJobResult.svelte +4 -2
- package/package/components/FlowJobResult.svelte.d.ts +2 -0
- package/package/components/FlowStatusViewer.svelte +7 -1
- package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
- package/package/components/FlowStatusViewerInner.svelte +29 -11
- package/package/components/FlowViewer.svelte +3 -1
- package/package/components/FlowViewer.svelte.d.ts +1 -0
- package/package/components/HighlightCode.svelte +2 -2
- package/package/components/ModulePreviewForm.svelte +1 -1
- package/package/components/ObjectResourceInput.svelte +7 -2
- package/package/components/ObjectResourceInput.svelte.d.ts +2 -0
- package/package/components/ResourcePicker.svelte +60 -48
- package/package/components/ScriptBuilder.svelte +42 -36
- package/package/components/ScriptBuilder.svelte.d.ts +2 -0
- package/package/components/ScriptEditor.svelte +3 -1
- package/package/components/ScriptEditor.svelte.d.ts +2 -0
- package/package/components/ScriptVersionHistory.svelte +63 -7
- package/package/components/apps/components/display/AppText.svelte +8 -3
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +3 -2
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +22 -5
- package/package/components/apps/components/display/table/AppAggridTable.svelte +14 -5
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +23 -8
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +5 -3
- package/package/components/apps/components/display/table/utils.js +8 -7
- package/package/components/apps/components/helpers/RunnableComponent.svelte +13 -1
- package/package/components/apps/components/helpers/eval.js +31 -25
- package/package/components/apps/components/inputs/AppSelect.svelte +45 -29
- package/package/components/apps/editor/AppEditorHeader.svelte +1 -0
- package/package/components/apps/editor/AppReportsDrawer.svelte +4 -3
- package/package/components/apps/editor/component/components.d.ts +7 -1
- package/package/components/apps/editor/component/components.js +6 -0
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +0 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphHeader.svelte +55 -45
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphHeader.svelte.d.ts +7 -9
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +66 -59
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +9 -11
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +213 -254
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte.d.ts +0 -1
- package/package/components/apps/editor/settingsPanel/decisionTree/nodeHelpers.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/decisionTree/nodeHelpers.js +2 -6
- package/package/components/custom_ui.d.ts +35 -1
- package/package/components/details/DetailPageDetailPanel.svelte +9 -1
- package/package/components/details/DetailPageDetailPanel.svelte.d.ts +2 -1
- package/package/components/details/DetailPageLayout.svelte +2 -0
- package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
- package/package/components/details/EmailTriggerPanel.svelte +128 -0
- package/package/components/details/EmailTriggerPanel.svelte.d.ts +20 -0
- package/package/components/details/WebhooksPanel.svelte +10 -71
- package/package/components/flows/FlowHistory.svelte +1 -0
- package/package/components/flows/content/FlowInputs.svelte +0 -1
- package/package/components/flows/content/FlowModuleComponent.svelte +8 -2
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +193 -66
- package/package/components/flows/content/FlowModuleHeader.svelte +1 -1
- package/package/components/flows/content/FlowModuleScript.svelte +33 -3
- package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +15 -0
- package/package/components/flows/content/FlowSettings.svelte +26 -15
- package/package/components/flows/flowExplorer.js +3 -0
- package/package/components/flows/flowInfers.js +1 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +39 -44
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -2
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +4 -3
- package/package/components/flows/map/InsertModuleButton.svelte +16 -9
- package/package/components/flows/map/MapItem.svelte +4 -98
- package/package/components/flows/map/MapItem.svelte.d.ts +0 -5
- package/package/components/flows/map/VirtualItem.svelte +6 -159
- package/package/components/flows/map/VirtualItem.svelte.d.ts +0 -15
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
- package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
- package/package/components/flows/types.d.ts +2 -0
- package/package/components/graph/FlowGraphV2.svelte +256 -0
- package/package/components/graph/{FlowGraph.svelte.d.ts → FlowGraphV2.svelte.d.ts} +8 -8
- package/package/components/graph/graphBuilder.d.ts +15 -0
- package/package/components/graph/graphBuilder.js +337 -0
- package/package/components/graph/index.d.ts +0 -1
- package/package/components/graph/index.js +0 -1
- package/package/components/graph/model.d.ts +4 -8
- package/package/components/graph/renderers/edges/BaseEdge.svelte +109 -0
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +35 -0
- package/package/components/graph/renderers/edges/DataflowEdge.svelte +37 -0
- package/package/components/graph/renderers/edges/DataflowEdge.svelte.d.ts +29 -0
- package/package/components/graph/renderers/edges/EmptyEdge.svelte +22 -0
- package/package/components/graph/renderers/edges/EmptyEdge.svelte.d.ts +23 -0
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +44 -0
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte.d.ts +29 -0
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +41 -0
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte.d.ts +29 -0
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +19 -0
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte.d.ts +24 -0
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +20 -0
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte.d.ts +25 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte +74 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +23 -0
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +71 -0
- package/package/components/graph/renderers/nodes/ModuleNode.svelte.d.ts +41 -0
- package/package/components/graph/renderers/nodes/NoBranchNode.svelte +20 -0
- package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +27 -0
- package/package/components/graph/renderers/nodes/NodeWrapper.svelte +21 -0
- package/package/components/graph/renderers/nodes/NodeWrapper.svelte.d.ts +22 -0
- package/package/components/graph/renderers/nodes/ResultNode.svelte +24 -0
- package/package/components/graph/renderers/nodes/ResultNode.svelte.d.ts +22 -0
- package/package/components/graph/renderers/nodes/branchAllEndNode.svelte +19 -0
- package/package/components/graph/renderers/nodes/branchAllEndNode.svelte.d.ts +26 -0
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +19 -0
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte.d.ts +24 -0
- package/package/components/graph/renderers/utils.d.ts +8 -0
- package/package/components/graph/renderers/utils.js +26 -0
- package/package/components/graph/util.d.ts +1 -2
- package/package/components/graph/util.js +2 -8
- package/package/components/propertyPicker/PropPickerResult.svelte +6 -1
- package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
- package/package/components/runs/RunsFilter.svelte +15 -17
- package/package/components/sidebar/changelogs.js +5 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +3 -0
- package/package/gen/schemas.gen.js +3 -0
- package/package/gen/services.gen.d.ts +22 -3
- package/package/gen/services.gen.js +38 -2
- package/package/gen/types.gen.d.ts +69 -6
- package/package/hub.d.ts +11 -0
- package/package/hub.js +2 -0
- package/package/hubPaths.json +9 -0
- package/package/init_scripts/python_failure_module.d.ts +1 -1
- package/package/init_scripts/python_failure_module.js +4 -3
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +11 -9
- package/package.json +2 -1
- package/package/components/graph/FlowGraph.svelte +0 -614
- package/package/components/graph/svelvet/LICENSE +0 -21
- package/package/components/graph/svelvet/container/README.md +0 -7
- package/package/components/graph/svelvet/container/controllers/middleware.d.ts +0 -11
- package/package/components/graph/svelvet/container/controllers/middleware.js +0 -87
- package/package/components/graph/svelvet/container/models/index.d.ts +0 -0
- package/package/components/graph/svelvet/container/models/index.js +0 -1
- package/package/components/graph/svelvet/container/views/GraphView.svelte +0 -262
- package/package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +0 -26
- package/package/components/graph/svelvet/container/views/Svelvet.svelte +0 -121
- package/package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +0 -36
- package/package/components/graph/svelvet/customCss/controllers/getCss.d.ts +0 -2
- package/package/components/graph/svelvet/customCss/controllers/getCss.js +0 -46
- package/package/components/graph/svelvet/d3/controllers/d3.d.ts +0 -5
- package/package/components/graph/svelvet/d3/controllers/d3.js +0 -59
- package/package/components/graph/svelvet/edges/controllers/anchorCbDev.d.ts +0 -4
- package/package/components/graph/svelvet/edges/controllers/anchorCbDev.js +0 -92
- package/package/components/graph/svelvet/edges/controllers/anchorCbUser.d.ts +0 -57
- package/package/components/graph/svelvet/edges/controllers/anchorCbUser.js +0 -73
- package/package/components/graph/svelvet/edges/controllers/util.d.ts +0 -37
- package/package/components/graph/svelvet/edges/controllers/util.js +0 -71
- package/package/components/graph/svelvet/edges/models/Anchor.d.ts +0 -48
- package/package/components/graph/svelvet/edges/models/Anchor.js +0 -122
- package/package/components/graph/svelvet/edges/models/Edge.d.ts +0 -48
- package/package/components/graph/svelvet/edges/models/Edge.js +0 -109
- package/package/components/graph/svelvet/edges/types/types.d.ts +0 -18
- package/package/components/graph/svelvet/edges/types/types.js +0 -1
- package/package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte +0 -104
- package/package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte.d.ts +0 -18
- package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +0 -42
- package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte.d.ts +0 -17
- package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +0 -151
- package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte.d.ts +0 -17
- package/package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte +0 -157
- package/package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +0 -60
- package/package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte +0 -8
- package/package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte.d.ts +0 -25
- package/package/components/graph/svelvet/edges/views/Edges/types.d.ts +0 -52
- package/package/components/graph/svelvet/edges/views/Edges/types.js +0 -1
- package/package/components/graph/svelvet/edges/views/Edges/utils.d.ts +0 -33
- package/package/components/graph/svelvet/edges/views/Edges/utils.js +0 -31
- package/package/components/graph/svelvet/nodes/controllers/util.d.ts +0 -9
- package/package/components/graph/svelvet/nodes/controllers/util.js +0 -13
- package/package/components/graph/svelvet/nodes/models/Node.d.ts +0 -74
- package/package/components/graph/svelvet/nodes/models/Node.js +0 -156
- package/package/components/graph/svelvet/nodes/views/Node.svelte +0 -84
- package/package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +0 -21
- package/package/components/graph/svelvet/store/controllers/storeApi.d.ts +0 -25
- package/package/components/graph/svelvet/store/controllers/storeApi.js +0 -91
- package/package/components/graph/svelvet/store/controllers/userApi.d.ts +0 -3
- package/package/components/graph/svelvet/store/controllers/userApi.js +0 -18
- package/package/components/graph/svelvet/store/controllers/util.d.ts +0 -24
- package/package/components/graph/svelvet/store/controllers/util.js +0 -148
- package/package/components/graph/svelvet/store/models/store.d.ts +0 -13
- package/package/components/graph/svelvet/store/models/store.js +0 -12
- package/package/components/graph/svelvet/store/types/types.d.ts +0 -127
- package/package/components/graph/svelvet/store/types/types.js +0 -1
- package/package/components/graph/svelvet/types/README.md +0 -3
- package/package/components/graph/svelvet/types/index.d.ts +0 -2
- package/package/components/graph/svelvet/types/index.js +0 -1
- package/package/components/graph/svelvet/types/types.d.ts +0 -50
- package/package/components/graph/svelvet/types/types.js +0 -18
package/package/base.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare let base: string;
|
package/package/base.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export let base = import.meta.env.VITE_BASE_URL ?? '';
|
|
@@ -364,8 +364,24 @@ $: shouldDispatchChanges && debounced(value);
|
|
|
364
364
|
enum_={itemsType?.enum ?? []}
|
|
365
365
|
enumLabels={extra['enumLabels']}
|
|
366
366
|
/>
|
|
367
|
-
{:else if itemsType?.type == 'resource' && itemsType?.resourceType}
|
|
368
|
-
<
|
|
367
|
+
{:else if itemsType?.type == 'resource' && itemsType?.resourceType && resourceTypes?.includes(itemsType.resourceType)}
|
|
368
|
+
<ObjectResourceInput
|
|
369
|
+
bind:value={v}
|
|
370
|
+
format={'resource-' + itemsType?.resourceType}
|
|
371
|
+
defaultValue={undefined}
|
|
372
|
+
/>
|
|
373
|
+
{:else if itemsType?.type == 'resource'}
|
|
374
|
+
<JsonEditor
|
|
375
|
+
bind:editor
|
|
376
|
+
on:focus={(e) => {
|
|
377
|
+
dispatch('focus')
|
|
378
|
+
}}
|
|
379
|
+
on:blur={(e) => {
|
|
380
|
+
dispatch('blur')
|
|
381
|
+
}}
|
|
382
|
+
code={JSON.stringify(v, null, 2)}
|
|
383
|
+
bind:value={v}
|
|
384
|
+
/>
|
|
369
385
|
{:else if itemsType?.type === 'object' && itemsType?.properties}
|
|
370
386
|
<div class="p-8 border rounded-md w-full">
|
|
371
387
|
<SchemaForm
|
|
@@ -412,7 +428,20 @@ $: shouldDispatchChanges && debounced(value);
|
|
|
412
428
|
if (value == undefined || !Array.isArray(value)) {
|
|
413
429
|
value = []
|
|
414
430
|
}
|
|
415
|
-
|
|
431
|
+
if (itemsType?.type == 'number') {
|
|
432
|
+
value = value.concat(0)
|
|
433
|
+
} else if (
|
|
434
|
+
itemsType?.type == 'object' ||
|
|
435
|
+
(itemsType?.type == 'resource' &&
|
|
436
|
+
!(
|
|
437
|
+
itemsType?.resourceType &&
|
|
438
|
+
resourceTypes?.includes(itemsType?.resourceType)
|
|
439
|
+
))
|
|
440
|
+
) {
|
|
441
|
+
value = value.concat({})
|
|
442
|
+
} else {
|
|
443
|
+
value = value.concat('')
|
|
444
|
+
}
|
|
416
445
|
}}
|
|
417
446
|
id="arg-input-add-item"
|
|
418
447
|
startIcon={{ icon: Plus }}
|
|
@@ -452,6 +481,7 @@ $: shouldDispatchChanges && debounced(value);
|
|
|
452
481
|
{disablePortal}
|
|
453
482
|
{format}
|
|
454
483
|
bind:value
|
|
484
|
+
bind:editor
|
|
455
485
|
{showSchemaExplorer}
|
|
456
486
|
/>
|
|
457
487
|
{:else if inputCat == 'resource-object' && format.split('-').length > 1 && format
|
|
@@ -68,9 +68,14 @@ function checkIfS3(result, keys) {
|
|
|
68
68
|
let is_render_all = false;
|
|
69
69
|
let download_as_csv = false;
|
|
70
70
|
function inferResultKind(result) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
try {
|
|
72
|
+
if (result == 'WINDMILL_TOO_BIG') {
|
|
73
|
+
largeObject = true;
|
|
74
|
+
return 'json';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
return 'nondisplayable';
|
|
74
79
|
}
|
|
75
80
|
if (result !== undefined) {
|
|
76
81
|
download_as_csv = false;
|
|
@@ -189,7 +194,13 @@ function inferResultKind(result) {
|
|
|
189
194
|
let jsonViewer;
|
|
190
195
|
let s3FileViewer;
|
|
191
196
|
function toJsonStr(result) {
|
|
192
|
-
|
|
197
|
+
try {
|
|
198
|
+
// console.log(result)
|
|
199
|
+
return JSON.stringify(result ?? null, null, 4) ?? 'null';
|
|
200
|
+
}
|
|
201
|
+
catch (e) {
|
|
202
|
+
return 'error stringifying object: ' + e.toString();
|
|
203
|
+
}
|
|
193
204
|
}
|
|
194
205
|
function contentOrRootString(obj) {
|
|
195
206
|
if (typeof obj === 'string') {
|
|
@@ -297,7 +308,8 @@ let seeS3PreviewFileFromList = '';
|
|
|
297
308
|
/>
|
|
298
309
|
{/each}</div
|
|
299
310
|
>
|
|
300
|
-
{:else}<div
|
|
311
|
+
{:else if resultKind == 'nondisplayable'}<div class="text-red-400">Non displayable object</div
|
|
312
|
+
>{:else}<div
|
|
301
313
|
class="inline-highlight relative grow {['plain', 'markdown'].includes(resultKind ?? '')
|
|
302
314
|
? ''
|
|
303
315
|
: 'min-h-[200px]'}"
|
|
@@ -43,6 +43,7 @@ export let diffEditor = undefined;
|
|
|
43
43
|
export let args;
|
|
44
44
|
export let noHistory = false;
|
|
45
45
|
export let saveToWorkspace = false;
|
|
46
|
+
export let customUi = {};
|
|
46
47
|
let contextualVariablePicker;
|
|
47
48
|
let variablePicker;
|
|
48
49
|
let resourcePicker;
|
|
@@ -284,6 +285,7 @@ let historyBrowserDrawerOpen = false;
|
|
|
284
285
|
{/if}
|
|
285
286
|
</DrawerContent>
|
|
286
287
|
</Drawer>
|
|
288
|
+
|
|
287
289
|
<ItemPicker
|
|
288
290
|
bind:this={contextualVariablePicker}
|
|
289
291
|
pickCallback={(path, name) => {
|
|
@@ -484,7 +486,7 @@ $res = json_decode(curl_exec($ch));`)
|
|
|
484
486
|
class="rounded-full w-2 h-2 mx-2 {validCode ? 'bg-green-300' : 'bg-red-300'}"
|
|
485
487
|
/>
|
|
486
488
|
<div class="flex items-center gap-0.5">
|
|
487
|
-
{#if showContextVarPicker}
|
|
489
|
+
{#if showContextVarPicker && customUi?.contextVar != false}
|
|
488
490
|
<Button
|
|
489
491
|
title="Add context variable"
|
|
490
492
|
color="light"
|
|
@@ -497,7 +499,7 @@ $res = json_decode(curl_exec($ch));`)
|
|
|
497
499
|
>+Context Var
|
|
498
500
|
</Button>
|
|
499
501
|
{/if}
|
|
500
|
-
{#if showVarPicker}
|
|
502
|
+
{#if showVarPicker && customUi?.variable != false}
|
|
501
503
|
<Button
|
|
502
504
|
title="Add variable"
|
|
503
505
|
color="light"
|
|
@@ -527,7 +529,7 @@ $res = json_decode(curl_exec($ch));`)
|
|
|
527
529
|
</Button>
|
|
528
530
|
{/if}
|
|
529
531
|
|
|
530
|
-
{#if showResourceTypePicker}
|
|
532
|
+
{#if showResourceTypePicker && customUi?.type != false}
|
|
531
533
|
<Button
|
|
532
534
|
title="Add resource type"
|
|
533
535
|
btnClasses="!font-medium text-tertiary"
|
|
@@ -555,37 +557,41 @@ $res = json_decode(curl_exec($ch));`)
|
|
|
555
557
|
Reset
|
|
556
558
|
</Button>
|
|
557
559
|
|
|
558
|
-
{#if
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
<span class="-my-1">
|
|
575
|
-
{#if lang == 'deno'}
|
|
576
|
-
(<span class={websocketAlive.deno ? 'green' : 'text-red-700'}>Deno</span>)
|
|
577
|
-
{:else if lang == 'go'}
|
|
578
|
-
(<span class={websocketAlive.go ? 'green' : 'text-red-700'}>Go</span>)
|
|
579
|
-
{:else if lang == 'python3'}
|
|
580
|
-
(<span class={websocketAlive.pyright ? 'green' : 'text-red-700'}>Pyright</span>
|
|
581
|
-
<span class={websocketAlive.ruff ? 'green' : 'text-red-700'}>Ruff</span>)
|
|
582
|
-
{:else if lang == 'bash'}
|
|
583
|
-
(<span class={websocketAlive.shellcheck ? 'green' : 'text-red-700'}>Shellcheck</span>)
|
|
560
|
+
{#if customUi?.assistants != false}
|
|
561
|
+
{#if lang == 'deno' || lang == 'python3' || lang == 'go' || lang == 'bash'}
|
|
562
|
+
<Button
|
|
563
|
+
btnClasses="!font-medium text-tertiary"
|
|
564
|
+
size="xs"
|
|
565
|
+
spacingSize="md"
|
|
566
|
+
color="light"
|
|
567
|
+
on:click={() => editor?.reloadWebsocket()}
|
|
568
|
+
startIcon={{
|
|
569
|
+
icon: RotateCw,
|
|
570
|
+
classes: websocketAlive[lang] == false ? 'animate-spin' : ''
|
|
571
|
+
}}
|
|
572
|
+
title="Reload assistants"
|
|
573
|
+
>
|
|
574
|
+
{#if !iconOnly}
|
|
575
|
+
Assistants
|
|
584
576
|
{/if}
|
|
585
|
-
|
|
586
|
-
|
|
577
|
+
<span class="-my-1">
|
|
578
|
+
{#if lang == 'deno'}
|
|
579
|
+
(<span class={websocketAlive.deno ? 'green' : 'text-red-700'}>Deno</span>)
|
|
580
|
+
{:else if lang == 'go'}
|
|
581
|
+
(<span class={websocketAlive.go ? 'green' : 'text-red-700'}>Go</span>)
|
|
582
|
+
{:else if lang == 'python3'}
|
|
583
|
+
(<span class={websocketAlive.pyright ? 'green' : 'text-red-700'}>Pyright</span>
|
|
584
|
+
<span class={websocketAlive.ruff ? 'green' : 'text-red-700'}>Ruff</span>)
|
|
585
|
+
{:else if lang == 'bash'}
|
|
586
|
+
(<span class={websocketAlive.shellcheck ? 'green' : 'text-red-700'}>Shellcheck</span
|
|
587
|
+
>)
|
|
588
|
+
{/if}
|
|
589
|
+
</span>
|
|
590
|
+
</Button>
|
|
591
|
+
{/if}
|
|
587
592
|
{/if}
|
|
588
|
-
|
|
593
|
+
|
|
594
|
+
{#if collabMode && customUi?.multiplayer != false}
|
|
589
595
|
<div class="flex items-center px-3">
|
|
590
596
|
<Toggle
|
|
591
597
|
options={{ right: '' }}
|
|
@@ -619,11 +625,15 @@ $res = json_decode(curl_exec($ch));`)
|
|
|
619
625
|
</div>
|
|
620
626
|
{/if}
|
|
621
627
|
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
628
|
+
{#if customUi?.autoformatting != false}
|
|
629
|
+
<FormatOnSave />
|
|
630
|
+
{/if}
|
|
631
|
+
{#if customUi?.aiGen != false}
|
|
632
|
+
<ScriptGen {editor} {diffEditor} {lang} {iconOnly} {args} />
|
|
633
|
+
{/if}
|
|
634
|
+
{#if customUi?.aiFix != false}
|
|
635
|
+
<CodeCompletionStatus />
|
|
636
|
+
{/if}
|
|
627
637
|
</div>
|
|
628
638
|
</div>
|
|
629
639
|
|
|
@@ -642,7 +652,7 @@ $res = json_decode(curl_exec($ch));`)
|
|
|
642
652
|
History
|
|
643
653
|
</Button>
|
|
644
654
|
{/if}
|
|
645
|
-
{#if SCRIPT_EDITOR_SHOW_EXPLORE_OTHER_SCRIPTS}
|
|
655
|
+
{#if SCRIPT_EDITOR_SHOW_EXPLORE_OTHER_SCRIPTS && customUi?.library != false}
|
|
646
656
|
<Button
|
|
647
657
|
btnClasses="!font-medium text-tertiary"
|
|
648
658
|
size="xs"
|
|
@@ -3,6 +3,7 @@ export declare const EDITOR_BAR_WIDTH_THRESHOLD = 1044;
|
|
|
3
3
|
import type Editor from './Editor.svelte';
|
|
4
4
|
import type { SupportedLanguage } from '../common';
|
|
5
5
|
import type DiffEditor from './DiffEditor.svelte';
|
|
6
|
+
import type { EditorBarUi } from './custom_ui';
|
|
6
7
|
declare const __propDef: {
|
|
7
8
|
props: {
|
|
8
9
|
lang: SupportedLanguage | 'bunnative' | undefined;
|
|
@@ -28,6 +29,7 @@ declare const __propDef: {
|
|
|
28
29
|
args: Record<string, any>;
|
|
29
30
|
noHistory?: boolean | undefined;
|
|
30
31
|
saveToWorkspace?: boolean | undefined;
|
|
32
|
+
customUi?: EditorBarUi | undefined;
|
|
31
33
|
};
|
|
32
34
|
events: {
|
|
33
35
|
toggleCollabMode: CustomEvent<any>;
|
|
@@ -9,8 +9,9 @@ import { FlowService, JobService, ScriptService, WorkspaceService } from '../gen
|
|
|
9
9
|
import { inferArgs } from '../infer';
|
|
10
10
|
import { hubBaseUrlStore } from '../stores';
|
|
11
11
|
import { CheckCircle2, Loader2, RotateCw, XCircle } from 'lucide-svelte';
|
|
12
|
-
|
|
13
|
-
const
|
|
12
|
+
import { hubPaths } from '../hub';
|
|
13
|
+
const slackRecoveryHandler = hubPaths.slackRecoveryHandler;
|
|
14
|
+
const slackHandlerScriptPath = hubPaths.slackErrorHandler;
|
|
14
15
|
export let errorOrRecovery;
|
|
15
16
|
export let isEditable;
|
|
16
17
|
export let slackToggleText = 'Enable';
|
|
@@ -146,14 +146,17 @@ async function saveDraft(forceSave = false) {
|
|
|
146
146
|
path: $pathStore
|
|
147
147
|
}
|
|
148
148
|
};
|
|
149
|
+
let savedAtNewPath = false;
|
|
149
150
|
if (newFlow) {
|
|
150
151
|
dispatch('saveInitial', $pathStore);
|
|
151
152
|
}
|
|
152
153
|
else if (savedFlow?.draft_only && $pathStore !== initialPath) {
|
|
154
|
+
savedAtNewPath = true;
|
|
153
155
|
initialPath = $pathStore;
|
|
154
156
|
// this is so we can use the flow builder outside of sveltekit
|
|
155
157
|
dispatch('saveDraftOnlyAtNewPath', { path: $pathStore, selectedId: getSelectedId() });
|
|
156
158
|
}
|
|
159
|
+
dispatch('saveDraft', { path: $pathStore, savedAtNewPath, newFlow });
|
|
157
160
|
sendUserToast('Saved as draft');
|
|
158
161
|
}
|
|
159
162
|
catch (error) {
|
|
@@ -327,7 +330,8 @@ setContext('FlowEditorContext', {
|
|
|
327
330
|
testStepStore,
|
|
328
331
|
saveDraft,
|
|
329
332
|
initialPath,
|
|
330
|
-
flowInputsStore: writable({})
|
|
333
|
+
flowInputsStore: writable({}),
|
|
334
|
+
customUi
|
|
331
335
|
});
|
|
332
336
|
async function loadSchedule() {
|
|
333
337
|
loadFlowSchedule(initialPath, $workspaceStore)
|
|
@@ -400,17 +404,19 @@ function generateIds() {
|
|
|
400
404
|
];
|
|
401
405
|
}
|
|
402
406
|
const dropdownItems = [];
|
|
403
|
-
if (
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
407
|
+
if (customUi.topBar?.extraDeployOptions != false) {
|
|
408
|
+
if (savedFlow?.draft_only === false || savedFlow?.draft_only === undefined) {
|
|
409
|
+
dropdownItems.push({
|
|
410
|
+
label: 'Exit & see details',
|
|
411
|
+
onClick: () => dispatch('details', $pathStore)
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
if (!newFlow) {
|
|
415
|
+
dropdownItems.push({
|
|
416
|
+
label: 'Fork',
|
|
417
|
+
onClick: () => window.open(`/flows/add?template=${initialPath}`)
|
|
418
|
+
});
|
|
419
|
+
}
|
|
414
420
|
}
|
|
415
421
|
let flowCopilotContext = {
|
|
416
422
|
drawerStore: writable(undefined),
|
|
@@ -3,7 +3,7 @@ import { type Flow, type OpenFlow } from '../gen';
|
|
|
3
3
|
import { type Writable } from 'svelte/store';
|
|
4
4
|
import type { FlowState } from './flows/flowState';
|
|
5
5
|
import type DiffDrawer from './DiffDrawer.svelte';
|
|
6
|
-
import type {
|
|
6
|
+
import type { FlowBuilderWhitelabelCustomUi } from './custom_ui';
|
|
7
7
|
declare const __propDef: {
|
|
8
8
|
props: {
|
|
9
9
|
initialPath?: string | undefined;
|
|
@@ -18,7 +18,7 @@ declare const __propDef: {
|
|
|
18
18
|
draft?: Flow | undefined;
|
|
19
19
|
}) | undefined;
|
|
20
20
|
diffDrawer?: DiffDrawer | undefined;
|
|
21
|
-
customUi?:
|
|
21
|
+
customUi?: FlowBuilderWhitelabelCustomUi | undefined;
|
|
22
22
|
computeUnlockedSteps?: ((flow: Flow) => {
|
|
23
23
|
[k: string]: string;
|
|
24
24
|
}) | undefined;
|
|
@@ -29,6 +29,7 @@ declare const __propDef: {
|
|
|
29
29
|
historyRestore: CustomEvent<any>;
|
|
30
30
|
saveInitial: CustomEvent<any>;
|
|
31
31
|
saveDraftOnlyAtNewPath: CustomEvent<any>;
|
|
32
|
+
saveDraft: CustomEvent<any>;
|
|
32
33
|
deploy: CustomEvent<any>;
|
|
33
34
|
details: CustomEvent<any>;
|
|
34
35
|
} & {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
<script>import {
|
|
2
|
-
import { createEventDispatcher } from 'svelte';
|
|
1
|
+
<script>import { createEventDispatcher } from 'svelte';
|
|
3
2
|
import { twMerge } from 'tailwind-merge';
|
|
4
3
|
import FlowGraphViewerStep from './FlowGraphViewerStep.svelte';
|
|
4
|
+
import FlowGraphV2 from './graph/FlowGraphV2.svelte';
|
|
5
|
+
import { dfs } from './flows/dfs';
|
|
5
6
|
export let flow;
|
|
6
7
|
export let overflowAuto = false;
|
|
7
8
|
export let noSide = false;
|
|
@@ -17,16 +18,16 @@ const dispatch = createEventDispatcher();
|
|
|
17
18
|
class="{noSide ? 'col-span-3' : 'sm:col-span-2 col-span-3'} w-full border max-h-full"
|
|
18
19
|
class:overflow-auto={overflowAuto}
|
|
19
20
|
>
|
|
20
|
-
<
|
|
21
|
+
<FlowGraphV2
|
|
21
22
|
{download}
|
|
22
23
|
minHeight={400}
|
|
23
24
|
modules={flow?.value?.modules}
|
|
24
25
|
failureModule={flow?.value?.failure_module}
|
|
25
26
|
on:select={(e) => {
|
|
26
|
-
|
|
27
|
+
const mod = dfs(flow?.value?.modules ?? [], (m) => m).find((m) => m?.id === e?.detail)
|
|
28
|
+
stepDetail = mod ?? e.detail
|
|
27
29
|
dispatch('select', stepDetail)
|
|
28
30
|
}}
|
|
29
|
-
rebuildOnChange={flow}
|
|
30
31
|
/>
|
|
31
32
|
</div>
|
|
32
33
|
{/if}
|
|
@@ -6,6 +6,7 @@ import { workspaceStore } from '../stores';
|
|
|
6
6
|
import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
7
7
|
import { Drawer } from './common';
|
|
8
8
|
import AllFlowLogs from './AllFlowLogs.svelte';
|
|
9
|
+
export let waitingForExecutor = false;
|
|
9
10
|
export let result;
|
|
10
11
|
export let logs;
|
|
11
12
|
export let col = false;
|
|
@@ -13,6 +14,7 @@ export let noBorder = false;
|
|
|
13
14
|
export let loading;
|
|
14
15
|
export let filename = undefined;
|
|
15
16
|
export let jobId = undefined;
|
|
17
|
+
export let tag = undefined;
|
|
16
18
|
export let workspaceId = undefined;
|
|
17
19
|
export let refreshLog = false;
|
|
18
20
|
export let durationStates;
|
|
@@ -71,9 +73,9 @@ async function getLogs() {
|
|
|
71
73
|
{/if}
|
|
72
74
|
</div>
|
|
73
75
|
<div class="overflow-auto {col ? '' : 'max-h-80'} relative">
|
|
74
|
-
<div class="absolute z-40 text-
|
|
76
|
+
<div class="absolute z-40 text-xs top-0 left-1"
|
|
75
77
|
><button class="" on:click={drawer.openDrawer}>explore all steps' logs</button></div
|
|
76
78
|
>
|
|
77
|
-
<LogViewer content={logs ?? ''} {jobId} isLoading={
|
|
79
|
+
<LogViewer content={logs ?? ''} {jobId} isLoading={waitingForExecutor} {tag} />
|
|
78
80
|
</div>
|
|
79
81
|
</div>
|
|
@@ -3,6 +3,7 @@ import type { DurationStatus } from './graph';
|
|
|
3
3
|
import type { Writable } from 'svelte/store';
|
|
4
4
|
declare const __propDef: {
|
|
5
5
|
props: {
|
|
6
|
+
waitingForExecutor?: boolean | undefined;
|
|
6
7
|
result: any;
|
|
7
8
|
logs: string | undefined;
|
|
8
9
|
col?: boolean | undefined;
|
|
@@ -10,6 +11,7 @@ declare const __propDef: {
|
|
|
10
11
|
loading: boolean;
|
|
11
12
|
filename?: string | undefined;
|
|
12
13
|
jobId?: string | undefined;
|
|
14
|
+
tag?: string | undefined;
|
|
13
15
|
workspaceId?: string | undefined;
|
|
14
16
|
refreshLog?: boolean | undefined;
|
|
15
17
|
durationStates: Writable<Record<string, DurationStatus>> | undefined;
|
|
@@ -8,6 +8,9 @@ export let workspaceId = undefined;
|
|
|
8
8
|
export let flowStateStore = writable({});
|
|
9
9
|
export let selectedJobStep = undefined;
|
|
10
10
|
export let hideFlowResult = false;
|
|
11
|
+
export let hideTimeline = false;
|
|
12
|
+
export let hideDownloadInGraph = false;
|
|
13
|
+
export let hideNodeDefinition = false;
|
|
11
14
|
export let isOwner = false;
|
|
12
15
|
export let wideResults = false;
|
|
13
16
|
let lastJobId = jobId;
|
|
@@ -16,7 +19,10 @@ let suspendStatus = writable({});
|
|
|
16
19
|
setContext('FlowStatusViewer', {
|
|
17
20
|
flowStateStore,
|
|
18
21
|
suspendStatus,
|
|
19
|
-
retryStatus
|
|
22
|
+
retryStatus,
|
|
23
|
+
hideDownloadInGraph,
|
|
24
|
+
hideNodeDefinition,
|
|
25
|
+
hideTimeline
|
|
20
26
|
});
|
|
21
27
|
function loadOwner(path) {
|
|
22
28
|
isOwner = loadIsOwner(path, $userStore, workspaceId ?? $workspaceStore);
|
|
@@ -8,6 +8,9 @@ declare const __propDef: {
|
|
|
8
8
|
flowStateStore?: Writable<FlowState> | undefined;
|
|
9
9
|
selectedJobStep?: string | undefined;
|
|
10
10
|
hideFlowResult?: boolean | undefined;
|
|
11
|
+
hideTimeline?: boolean | undefined;
|
|
12
|
+
hideDownloadInGraph?: boolean | undefined;
|
|
13
|
+
hideNodeDefinition?: boolean | undefined;
|
|
11
14
|
isOwner?: boolean | undefined;
|
|
12
15
|
wideResults?: boolean | undefined;
|
|
13
16
|
};
|
|
@@ -8,7 +8,7 @@ import { onDestroy } from 'svelte';
|
|
|
8
8
|
import { Badge, Button, Tab } from './common';
|
|
9
9
|
import DisplayResult from './DisplayResult.svelte';
|
|
10
10
|
import Tabs from './common/tabs/Tabs.svelte';
|
|
11
|
-
import {
|
|
11
|
+
import {} from './graph';
|
|
12
12
|
import ModuleStatus from './ModuleStatus.svelte';
|
|
13
13
|
import { emptyString, msToSec, truncateRev } from '../utils';
|
|
14
14
|
import JobArgs from './JobArgs.svelte';
|
|
@@ -20,8 +20,9 @@ import { dfs } from './flows/dfs';
|
|
|
20
20
|
import { writable } from 'svelte/store';
|
|
21
21
|
import Alert from './common/alert/Alert.svelte';
|
|
22
22
|
import FlowGraphViewerStep from './FlowGraphViewerStep.svelte';
|
|
23
|
+
import FlowGraphV2 from './graph/FlowGraphV2.svelte';
|
|
23
24
|
const dispatch = createEventDispatcher();
|
|
24
|
-
let { flowStateStore, retryStatus, suspendStatus } = getContext('FlowStatusViewer');
|
|
25
|
+
let { flowStateStore, retryStatus, suspendStatus, hideDownloadInGraph, hideTimeline, hideNodeDefinition } = getContext('FlowStatusViewer');
|
|
25
26
|
export let jobId;
|
|
26
27
|
export let workspaceId = undefined;
|
|
27
28
|
export let flowJobIds = undefined;
|
|
@@ -115,7 +116,7 @@ function updateInnerModules() {
|
|
|
115
116
|
innerModules.forEach((mod, i) => {
|
|
116
117
|
if (mod.type === 'WaitingForEvents' &&
|
|
117
118
|
$localModuleStates?.[innerModules?.[i - 1]?.id ?? '']?.type == 'Success') {
|
|
118
|
-
setModuleState(mod.id ?? '', { type: mod.type, args: job?.args });
|
|
119
|
+
setModuleState(mod.id ?? '', { type: mod.type, args: job?.args, tag: job?.tag });
|
|
119
120
|
}
|
|
120
121
|
else if (mod.type === 'WaitingForExecutor' &&
|
|
121
122
|
$localModuleStates[mod.id ?? '']?.scheduled_for == undefined) {
|
|
@@ -130,7 +131,8 @@ function updateInnerModules() {
|
|
|
130
131
|
scheduled_for: job?.['scheduled_for'],
|
|
131
132
|
job_id: job?.id,
|
|
132
133
|
parent_module: mod['parent_module'],
|
|
133
|
-
args: job?.args
|
|
134
|
+
args: job?.args,
|
|
135
|
+
tag: job?.tag
|
|
134
136
|
};
|
|
135
137
|
setModuleState(mod.id ?? '', newState);
|
|
136
138
|
})
|
|
@@ -309,6 +311,7 @@ function onJobsLoaded(mod, job, force) {
|
|
|
309
311
|
job_id: job.id,
|
|
310
312
|
logs: job.logs,
|
|
311
313
|
args: job.args,
|
|
314
|
+
tag: job.tag,
|
|
312
315
|
started_at,
|
|
313
316
|
parent_module: mod['parent_module']
|
|
314
317
|
}, force);
|
|
@@ -324,6 +327,7 @@ function onJobsLoaded(mod, job, force) {
|
|
|
324
327
|
logs: job.logs,
|
|
325
328
|
result: job['result'],
|
|
326
329
|
job_id: job.id,
|
|
330
|
+
tag: job.tag,
|
|
327
331
|
parent_module: mod['parent_module'],
|
|
328
332
|
duration_ms: job['duration_ms'],
|
|
329
333
|
started_at: started_at,
|
|
@@ -464,6 +468,7 @@ function loadPreviousIters(lenToAdd) {
|
|
|
464
468
|
}
|
|
465
469
|
let stepDetail = undefined;
|
|
466
470
|
let storedListJobs = {};
|
|
471
|
+
let wrapperHeight = 0;
|
|
467
472
|
</script>
|
|
468
473
|
|
|
469
474
|
{#if notAnonynmous}
|
|
@@ -521,6 +526,7 @@ let storedListJobs = {};
|
|
|
521
526
|
<FlowJobResult
|
|
522
527
|
workspaceId={job?.workspace_id}
|
|
523
528
|
jobId={job?.id}
|
|
529
|
+
tag={job?.tag}
|
|
524
530
|
loading={job['running'] == true}
|
|
525
531
|
result={job.result}
|
|
526
532
|
logs={job.logs}
|
|
@@ -648,7 +654,7 @@ let storedListJobs = {};
|
|
|
648
654
|
{/if}
|
|
649
655
|
{/each}
|
|
650
656
|
</div>
|
|
651
|
-
{:else if innerModules.length > 0}
|
|
657
|
+
{:else if innerModules.length > 0 && (job.raw_flow?.modules.length ?? 0) > 0}
|
|
652
658
|
<ul class="w-full">
|
|
653
659
|
<h3 class="text-md leading-6 font-bold text-primary border-b mb-4 py-2">
|
|
654
660
|
Step-by-step
|
|
@@ -768,13 +774,15 @@ let storedListJobs = {};
|
|
|
768
774
|
</li>
|
|
769
775
|
{/each}
|
|
770
776
|
</ul>
|
|
777
|
+
{:else}
|
|
778
|
+
<div class="p-2 text-tertiary text-sm italic">Empty flow</div>
|
|
771
779
|
{/if}
|
|
772
780
|
</div>
|
|
773
781
|
</div>
|
|
774
782
|
{#if render}
|
|
775
783
|
{#if job.raw_flow && !isListJob}
|
|
776
784
|
<div class="{selected != 'graph' ? 'hidden' : ''} grow mt-4">
|
|
777
|
-
<div class="grid grid-cols-3 border h-full">
|
|
785
|
+
<div class="grid grid-cols-3 border h-full" bind:clientHeight={wrapperHeight}>
|
|
778
786
|
<div class="col-span-2 bg-surface-secondary">
|
|
779
787
|
<div class="flex flex-col">
|
|
780
788
|
{#each Object.values($retryStatus) as count}
|
|
@@ -793,8 +801,9 @@ let storedListJobs = {};
|
|
|
793
801
|
{/each}
|
|
794
802
|
</div>
|
|
795
803
|
|
|
796
|
-
<
|
|
797
|
-
download
|
|
804
|
+
<FlowGraphV2
|
|
805
|
+
download={!hideDownloadInGraph}
|
|
806
|
+
minHeight={wrapperHeight}
|
|
798
807
|
success={jobId != undefined && isSuccess(job?.['success'])}
|
|
799
808
|
flowModuleStates={$localModuleStates}
|
|
800
809
|
on:select={(e) => {
|
|
@@ -819,6 +828,7 @@ let storedListJobs = {};
|
|
|
819
828
|
}}
|
|
820
829
|
on:selectedIteration={(e) => {
|
|
821
830
|
let detail = e.detail
|
|
831
|
+
|
|
822
832
|
setModuleState(detail.moduleId, {
|
|
823
833
|
selectedForloop: detail.id,
|
|
824
834
|
selectedForloopIndex: detail.index
|
|
@@ -826,16 +836,20 @@ let storedListJobs = {};
|
|
|
826
836
|
globalRefreshes[detail.moduleId]?.({ job: detail.id, index: detail.index })
|
|
827
837
|
}}
|
|
828
838
|
modules={job.raw_flow?.modules ?? []}
|
|
829
|
-
failureModule={job.raw_flow?.failure_module}
|
|
830
839
|
/>
|
|
831
840
|
</div>
|
|
832
841
|
<div
|
|
833
842
|
class="border-l border-tertiary-inverse pt-1 overflow-auto min-h-[700px] flex flex-col z-0 h-full"
|
|
834
843
|
>
|
|
835
844
|
<Tabs bind:selected={rightColumnSelect}>
|
|
836
|
-
|
|
845
|
+
{#if !hideTimeline}
|
|
846
|
+
<Tab value="timeline"><span class="font-semibold text-md">Timeline</span></Tab>
|
|
847
|
+
{/if}
|
|
837
848
|
<Tab value="node_status"><span class="font-semibold">Node status</span></Tab>
|
|
838
|
-
|
|
849
|
+
{#if !hideNodeDefinition}
|
|
850
|
+
<Tab value="node_definition"><span class="font-semibold">Node definition</span></Tab
|
|
851
|
+
>
|
|
852
|
+
{/if}
|
|
839
853
|
{#if Object.keys(job?.flow_status?.user_states ?? {}).length > 0}
|
|
840
854
|
<Tab value="user_states"><span class="font-semibold">User States</span></Tab>
|
|
841
855
|
{/if}
|
|
@@ -860,6 +874,7 @@ let storedListJobs = {};
|
|
|
860
874
|
jobId={job?.id}
|
|
861
875
|
filename={job.id}
|
|
862
876
|
loading={job['running']}
|
|
877
|
+
tag={job?.tag}
|
|
863
878
|
noBorder
|
|
864
879
|
col
|
|
865
880
|
result={job['result']}
|
|
@@ -923,14 +938,17 @@ let storedListJobs = {};
|
|
|
923
938
|
/>
|
|
924
939
|
</div>
|
|
925
940
|
{/if}
|
|
941
|
+
|
|
926
942
|
<FlowJobResult
|
|
927
943
|
workspaceId={job?.workspace_id}
|
|
928
944
|
jobId={node.job_id}
|
|
929
945
|
noBorder
|
|
930
946
|
loading={node.type != 'Success' && node.type != 'Failure'}
|
|
947
|
+
waitingForExecutor={node.type == 'WaitingForExecutor'}
|
|
931
948
|
refreshLog={node.type == 'InProgress'}
|
|
932
949
|
col
|
|
933
950
|
result={node.result}
|
|
951
|
+
tag={node.tag}
|
|
934
952
|
logs={node.logs}
|
|
935
953
|
durationStates={localDurationStatuses}
|
|
936
954
|
/>
|
|
@@ -21,6 +21,7 @@ $: flowFiltered = {
|
|
|
21
21
|
export let noGraph = false;
|
|
22
22
|
export let tab = noGraph ? 'schema' : 'ui';
|
|
23
23
|
export let noSummary = false;
|
|
24
|
+
export let noGraphDownload = false;
|
|
24
25
|
let rawType = 'yaml';
|
|
25
26
|
let open = {};
|
|
26
27
|
if (initialOpen) {
|
|
@@ -72,7 +73,8 @@ function toAny(x) {
|
|
|
72
73
|
{:else}
|
|
73
74
|
<div class="text-secondary text-xs italic mb-4">No inputs</div>
|
|
74
75
|
{/if}
|
|
75
|
-
|
|
76
|
+
|
|
77
|
+
<FlowGraphViewer download={!noGraphDownload} {noSide} {flow} overflowAuto />
|
|
76
78
|
</div>
|
|
77
79
|
</TabContent>
|
|
78
80
|
<TabContent value="raw"
|