windmill-components 1.109.8 → 1.121.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/cloud.js +0 -14
- package/package/common.d.ts +1 -0
- package/package/components/ArgEnum.svelte +53 -0
- package/package/components/ArgEnum.svelte.d.ts +24 -0
- package/package/components/ArgInfo.svelte +26 -14
- package/package/components/ArgInput.svelte +69 -83
- package/package/components/ArgInput.svelte.d.ts +2 -0
- package/package/components/ArrayTypeNarrowing.svelte +73 -0
- package/package/components/ArrayTypeNarrowing.svelte.d.ts +20 -0
- package/package/components/CenteredModal.svelte +7 -9
- package/package/components/DeployToSetting.svelte +35 -0
- package/package/components/DeployToSetting.svelte.d.ts +16 -0
- package/package/components/DeployWorkspace.svelte +555 -0
- package/package/components/DeployWorkspace.svelte.d.ts +23 -0
- package/package/components/DeployWorkspaceDrawer.svelte +35 -0
- package/package/components/DeployWorkspaceDrawer.svelte.d.ts +17 -0
- package/package/components/DiffDrawer.svelte +60 -0
- package/package/components/DiffDrawer.svelte.d.ts +23 -0
- package/package/components/DisplayResult.svelte +17 -24
- package/package/components/DraftBadge.svelte +1 -1
- package/package/components/Editor.svelte +0 -4
- package/package/components/EditorBar.svelte +127 -26
- package/package/components/EditorBar.svelte.d.ts +1 -0
- package/package/components/FieldHeader.svelte +2 -2
- package/package/components/FlowBuilder.svelte +9 -0
- package/package/components/FlowBuilder.svelte.d.ts +6 -0
- package/package/components/FlowJobResult.svelte +3 -2
- package/package/components/FlowJobResult.svelte.d.ts +1 -0
- package/package/components/FlowStatusViewer.svelte +6 -39
- package/package/components/FlowStatusWaitingForEvents.svelte +64 -0
- package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +19 -0
- package/package/components/InputTransformForm.svelte +21 -11
- package/package/components/InputTransformForm.svelte.d.ts +1 -1
- package/package/components/InputTransformSchemaForm.svelte +1 -1
- package/package/components/JobArgs.svelte +120 -27
- package/package/components/LightweightArgInput.svelte +28 -15
- package/package/components/LightweightArgInput.svelte.d.ts +1 -0
- package/package/components/LightweightSchemaForm.svelte +24 -24
- package/package/components/LogViewer.svelte +23 -11
- package/package/components/LogViewer.svelte.d.ts +1 -0
- package/package/components/ModulePreview.svelte +7 -1
- package/package/components/ModulePreviewForm.svelte +8 -0
- package/package/components/ModulePreviewForm.svelte.d.ts +1 -1
- package/package/components/MoveDrawer.svelte +3 -3
- package/package/components/Path.svelte +27 -7
- package/package/components/Popover.svelte +11 -2
- package/package/components/Popover.svelte.d.ts +1 -0
- package/package/components/Required.svelte +1 -1
- package/package/components/ResourcePicker.svelte +7 -1
- package/package/components/RunForm.svelte +15 -8
- package/package/components/RunForm.svelte.d.ts +2 -0
- package/package/components/SchemaEditor.svelte +14 -12
- package/package/components/SchemaForm.svelte +9 -2
- package/package/components/SchemaModal.svelte +9 -5
- package/package/components/ScriptBuilder.svelte +21 -19
- package/package/components/ScriptEditor.svelte +6 -19
- package/package/components/ScriptPicker.svelte +13 -7
- package/package/components/ScriptVersionHistory.svelte +57 -0
- package/package/components/ScriptVersionHistory.svelte.d.ts +16 -0
- package/package/components/SimpleEditor.svelte +3 -1
- package/package/components/SimpleEditor.svelte.d.ts +1 -0
- package/package/components/Slider.svelte +2 -1
- package/package/components/Slider.svelte.d.ts +1 -0
- package/package/components/SuperadminSettings.svelte +12 -14
- package/package/components/SuperadminSettings.svelte.d.ts +0 -2
- package/package/components/Toast.svelte +1 -1
- package/package/components/Uptodate.svelte +26 -0
- package/package/components/Uptodate.svelte.d.ts +14 -0
- package/package/components/UserSettings.svelte +8 -12
- package/package/components/UserSettings.svelte.d.ts +0 -2
- package/package/components/Version.svelte +9 -0
- package/package/components/Version.svelte.d.ts +14 -0
- package/package/components/apps/components/buttons/AppButton.svelte +2 -2
- package/package/components/apps/components/buttons/AppForm.svelte +1 -2
- package/package/components/apps/components/buttons/AppFormButton.svelte +35 -38
- package/package/components/apps/components/buttons/AppSchemaForm.svelte +5 -0
- package/package/components/apps/components/display/AppChartJs.svelte +4 -3
- package/package/components/apps/components/display/AppFlowStatusComponent.svelte +2 -2
- package/package/components/apps/components/display/AppLogsComponent.svelte +7 -1
- package/package/components/apps/components/display/AppMap.svelte +11 -7
- package/package/components/apps/components/display/PlotlyHtml.svelte +1 -1
- package/package/components/apps/components/display/VegaLiteHtml.svelte +1 -1
- package/package/components/apps/components/display/table/AppAggridTable.svelte +86 -39
- package/package/components/apps/components/display/table/AppTable.svelte +29 -3
- package/package/components/apps/components/display/table/AppTableFooter.svelte +48 -43
- package/package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +1 -0
- package/package/components/apps/components/helpers/InputValue.svelte +25 -3
- package/package/components/apps/components/helpers/RunnableComponent.svelte +14 -3
- package/package/components/apps/components/helpers/eval.d.ts +1 -0
- package/package/components/apps/components/helpers/eval.js +3 -1
- package/package/components/apps/components/inputs/AppCheckbox.svelte +5 -0
- package/package/components/apps/components/inputs/AppMultiSelect.svelte +1 -1
- package/package/components/apps/components/inputs/AppNumberInput.svelte +8 -1
- package/package/components/apps/components/inputs/AppQuillEditor.svelte +78 -0
- package/package/components/apps/components/inputs/AppQuillEditor.svelte.d.ts +27 -0
- package/package/components/apps/components/inputs/AppRangeInput.svelte +8 -1
- package/package/components/apps/components/inputs/AppSelect.svelte +17 -2
- package/package/components/apps/components/inputs/AppSliderInputs.svelte +18 -5
- package/package/components/apps/components/inputs/AppTextInput.svelte +66 -57
- package/package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +5 -0
- package/package/components/apps/components/layout/AppDrawer.svelte +2 -2
- package/package/components/apps/components/layout/AppList.svelte +112 -0
- package/package/components/apps/components/layout/AppList.svelte.d.ts +23 -0
- package/package/components/apps/components/layout/AppModal.svelte +35 -33
- package/package/components/apps/components/layout/ListWrapper.svelte +23 -0
- package/package/components/apps/components/layout/ListWrapper.svelte.d.ts +23 -0
- package/package/components/apps/editor/AppEditor.svelte +3 -2
- package/package/components/apps/editor/AppEditorHeader.svelte +14 -9
- package/package/components/apps/editor/AppPreview.svelte +2 -2
- package/package/components/apps/editor/RecomputeAllComponents.svelte +4 -0
- package/package/components/apps/editor/SettingsPanel.svelte +1 -1
- package/package/components/apps/editor/SubGridEditor.svelte +4 -2
- package/package/components/apps/editor/appUtils.d.ts +1 -1
- package/package/components/apps/editor/appUtils.js +2 -2
- package/package/components/apps/editor/component/Component.svelte +13 -0
- package/package/components/apps/editor/component/ComponentNavigation.svelte +9 -7
- package/package/components/apps/editor/component/ComponentWrapper.svelte +1 -4
- package/package/components/apps/editor/component/components.d.ts +138 -3
- package/package/components/apps/editor/component/components.js +131 -4
- package/package/components/apps/editor/component/default-codes.js +65 -35
- package/package/components/apps/editor/component/sets.js +2 -0
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +2 -2
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +2 -1
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +3 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +3 -3
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/GridPane.svelte +1 -2
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +6 -2
- package/package/components/apps/editor/settingsPanel/Recompute.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +16 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +7 -4
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptRunConfiguration.svelte +2 -2
- package/package/components/apps/types.d.ts +8 -0
- package/package/components/apps/utils.js +2 -0
- package/package/components/common/badge/Badge.svelte +2 -1
- package/package/components/common/badge/Badge.svelte.d.ts +1 -0
- package/package/components/common/fileInput/FileInput.svelte +1 -1
- package/package/components/common/modal/AlwaysMountedModal.svelte +52 -54
- package/package/components/common/modal/AlwaysMountedModal.svelte.d.ts +1 -0
- package/package/components/common/table/AppRow.svelte +28 -1
- package/package/components/common/table/AppRow.svelte.d.ts +2 -0
- package/package/components/common/table/FlowRow.svelte +29 -2
- package/package/components/common/table/FlowRow.svelte.d.ts +2 -0
- package/package/components/common/table/RawAppRow.svelte +16 -0
- package/package/components/common/table/RawAppRow.svelte.d.ts +2 -0
- package/package/components/common/table/ScriptRow.svelte +29 -2
- package/package/components/common/table/ScriptRow.svelte.d.ts +2 -0
- package/package/components/common/tabs/Tab.svelte +2 -2
- package/package/components/common/tabs/Tabs.svelte +3 -6
- package/package/components/common/tabs/Tabs.svelte.d.ts +1 -1
- package/package/components/common/toggleButton-v2/ToggleButton.svelte +3 -1
- package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +1 -0
- package/package/components/flows/common/FlowCardHeader.svelte +13 -15
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +8 -1
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +8 -1
- package/package/components/flows/content/FlowLoop.svelte +8 -1
- package/package/components/flows/content/FlowModuleCache.svelte +1 -1
- package/package/components/flows/content/FlowModuleComponent.svelte +13 -4
- package/package/components/flows/content/FlowModuleHeader.svelte +27 -18
- package/package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleMock.svelte +51 -0
- package/package/components/flows/content/FlowModuleMock.svelte.d.ts +17 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +49 -2
- package/package/components/flows/flowExplorer.d.ts +11 -0
- package/package/components/flows/flowExplorer.js +137 -0
- package/package/components/flows/map/FlowErrorHandlerItem.svelte +3 -2
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +13 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +1 -1
- package/package/components/flows/map/MapItem.svelte +2 -1
- package/package/components/flows/previousResults.d.ts +0 -2
- package/package/components/flows/previousResults.js +1 -67
- package/package/components/graph/FlowGraph.svelte +71 -13
- package/package/components/graph/svelvet/container/views/GraphView.svelte +22 -0
- package/package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +2 -0
- package/package/components/graph/svelvet/container/views/Svelvet.svelte +13 -1
- package/package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +2 -0
- package/package/components/graph/svelvet/edges/models/Edge.d.ts +2 -1
- package/package/components/graph/svelvet/edges/models/Edge.js +3 -1
- package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +2 -13
- package/package/components/graph/svelvet/store/controllers/util.js +1 -1
- package/package/components/graph/svelvet/types/types.d.ts +1 -0
- package/package/components/home/ItemsList.svelte +50 -41
- package/package/components/home/ListFilters.svelte +0 -1
- package/package/components/jobs/JobDetail.svelte +1 -1
- package/package/components/jobs/JobPreview.svelte +29 -13
- package/package/components/jobs/JobPreview.svelte.d.ts +1 -2
- package/package/components/scriptEditor/LogPanel.svelte +6 -1
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +1 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/index.d.ts +1 -0
- package/package/gen/models/EditResourceType.d.ts +1 -1
- package/package/gen/models/FlowModule.d.ts +7 -0
- package/package/gen/models/ScheduleWJobs.d.ts +8 -0
- package/package/gen/models/ScheduleWJobs.js +4 -0
- package/package/gen/services/DraftService.d.ts +10 -0
- package/package/gen/services/DraftService.js +16 -0
- package/package/gen/services/JobService.d.ts +24 -3
- package/package/gen/services/JobService.js +21 -3
- package/package/gen/services/ScheduleService.d.ts +17 -0
- package/package/gen/services/ScheduleService.js +18 -0
- package/package/gen/services/SettingsService.d.ts +6 -0
- package/package/gen/services/SettingsService.js +11 -0
- package/package/gen/services/WorkspaceService.d.ts +22 -0
- package/package/gen/services/WorkspaceService.js +30 -0
- package/package/infer.js +17 -3
- package/package/script_helpers.js +16 -5
- package/package/scripts.js +11 -1
- package/package/utils.d.ts +1 -0
- package/package/utils.js +1 -0
- package/package.json +21 -12
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
button?: {
|
|
5
|
+
text: string;
|
|
6
|
+
onClick: () => void;
|
|
7
|
+
} | undefined;
|
|
8
|
+
openDrawer?: (() => void) | undefined;
|
|
9
|
+
setDiff?: ((local: string, remote: string) => void) | undefined;
|
|
10
|
+
};
|
|
11
|
+
events: {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
};
|
|
14
|
+
slots: {};
|
|
15
|
+
};
|
|
16
|
+
export type DiffDrawerProps = typeof __propDef.props;
|
|
17
|
+
export type DiffDrawerEvents = typeof __propDef.events;
|
|
18
|
+
export type DiffDrawerSlots = typeof __propDef.slots;
|
|
19
|
+
export default class DiffDrawer extends SvelteComponentTyped<DiffDrawerProps, DiffDrawerEvents, DiffDrawerSlots> {
|
|
20
|
+
get openDrawer(): () => void;
|
|
21
|
+
get setDiff(): (local: string, remote: string) => void;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
@@ -3,8 +3,7 @@ import { json } from 'svelte-highlight/languages';
|
|
|
3
3
|
import TableCustom from './TableCustom.svelte';
|
|
4
4
|
import { copyToClipboard, truncate } from '../utils';
|
|
5
5
|
import { Button, Drawer, DrawerContent } from './common';
|
|
6
|
-
import
|
|
7
|
-
import { ClipboardCopy } from 'lucide-svelte';
|
|
6
|
+
import { ClipboardCopy, Download, Expand } from 'lucide-svelte';
|
|
8
7
|
import Portal from 'svelte-portal';
|
|
9
8
|
import ObjectViewer from './propertyPicker/ObjectViewer.svelte';
|
|
10
9
|
export let result;
|
|
@@ -87,8 +86,8 @@ function inferResultKind(result) {
|
|
|
87
86
|
}
|
|
88
87
|
return 'json';
|
|
89
88
|
}
|
|
90
|
-
let payload = '';
|
|
91
89
|
let jsonViewer;
|
|
90
|
+
$: jsonStr = JSON.stringify(result, null, 4);
|
|
92
91
|
</script>
|
|
93
92
|
|
|
94
93
|
<div class="inline-highlight">
|
|
@@ -97,11 +96,11 @@ let jsonViewer;
|
|
|
97
96
|
<div class="mb-2 text-gray-500 text-sm bg-gray-50/20">
|
|
98
97
|
as JSON <input class="windmillapp" type="checkbox" bind:checked={forceJson} /></div
|
|
99
98
|
>{/if}{#if typeof result == 'object' && Object.keys(result).length > 0}<div
|
|
100
|
-
class="mb-2 w-full text-sm
|
|
99
|
+
class="mb-2 w-full text-sm relative"
|
|
101
100
|
>The result keys are: <b>{truncate(Object.keys(result).join(', '), 50)}</b>
|
|
102
101
|
{#if !disableExpand}
|
|
103
|
-
<div class="text-gray-500 text-xs absolute top-5 right-0">
|
|
104
|
-
<button on:click={jsonViewer.openDrawer}
|
|
102
|
+
<div class="text-gray-500 text-xs absolute top-5.5 right-0">
|
|
103
|
+
<button on:click={jsonViewer.openDrawer}><Expand size={16} /></button>
|
|
105
104
|
</div>
|
|
106
105
|
{/if}
|
|
107
106
|
</div>{/if}{#if !forceJson && resultKind == 'table-col'}<div
|
|
@@ -200,14 +199,14 @@ let jsonViewer;
|
|
|
200
199
|
>
|
|
201
200
|
<pre class="text-sm whitespace-pre-wrap text-gray-900">{result.error.stack ?? ''}</pre>
|
|
202
201
|
</div>
|
|
203
|
-
{:else if !forceJson && resultKind == 'approval'}<div class="flex flex-col gap-
|
|
202
|
+
{:else if !forceJson && resultKind == 'approval'}<div class="flex flex-col gap-3 mt-8 mx-4">
|
|
204
203
|
<Button
|
|
205
204
|
color="green"
|
|
206
205
|
variant="border"
|
|
207
206
|
on:click={() =>
|
|
208
207
|
fetch(result['resume'], {
|
|
209
208
|
method: 'POST',
|
|
210
|
-
body: JSON.stringify(
|
|
209
|
+
body: JSON.stringify({}),
|
|
211
210
|
headers: { 'Content-Type': 'application/json' }
|
|
212
211
|
})}
|
|
213
212
|
>
|
|
@@ -215,18 +214,11 @@ let jsonViewer;
|
|
|
215
214
|
>
|
|
216
215
|
<Button color="red" variant="border" on:click={() => fetch(result['cancel'])}>Cancel</Button
|
|
217
216
|
>
|
|
218
|
-
<div>
|
|
219
|
-
<h3>Payload</h3>
|
|
220
|
-
<div class="border border-black">
|
|
221
|
-
<input type="text" bind:value={payload} use:autosize />
|
|
222
|
-
</div>
|
|
223
|
-
</div>
|
|
224
217
|
<div class="center-center"
|
|
225
218
|
><a rel="noreferrer" target="_blank" href={result['approvalPage']}>Approval Page</a></div
|
|
226
219
|
>
|
|
227
220
|
</div>
|
|
228
221
|
{:else}
|
|
229
|
-
{@const jsonStr = JSON.stringify(result, null, 4).replace(/\\n/g, '\n')}
|
|
230
222
|
{#if jsonStr.length > 10000}
|
|
231
223
|
<div class="text-sm mb-2 text-gray-600">
|
|
232
224
|
<a
|
|
@@ -241,7 +233,7 @@ let jsonViewer;
|
|
|
241
233
|
{/if}
|
|
242
234
|
{/if}
|
|
243
235
|
{:else}
|
|
244
|
-
<div class="text-gray-500 text-sm">No result: {
|
|
236
|
+
<div class="text-gray-500 text-sm">No result: {jsonStr}</div>
|
|
245
237
|
{/if}
|
|
246
238
|
</div>
|
|
247
239
|
|
|
@@ -250,25 +242,26 @@ let jsonViewer;
|
|
|
250
242
|
<Drawer bind:this={jsonViewer} size="900px">
|
|
251
243
|
<DrawerContent title="Expanded Result" on:close={jsonViewer.closeDrawer}>
|
|
252
244
|
<svelte:fragment slot="actions">
|
|
253
|
-
<
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
245
|
+
<a
|
|
246
|
+
class="text-sm text-gray-600 mr-2 inline-flex gap-2 items-center py-2 px-2 hover:bg-gray-100 rounded-lg"
|
|
247
|
+
download="{filename ?? 'result'}.json"
|
|
248
|
+
href="data:text/json;charset=utf-8,{encodeURIComponent(jsonStr)}"
|
|
249
|
+
>Download <Download size={14} /></a
|
|
257
250
|
>
|
|
251
|
+
<Button on:click={() => copyToClipboard(jsonStr)} color="light" size="xs">
|
|
258
252
|
<div class="flex gap-2 items-center">Copy to clipboard <ClipboardCopy /> </div>
|
|
259
253
|
</Button>
|
|
260
254
|
</svelte:fragment>
|
|
261
|
-
{
|
|
262
|
-
{#if str.length > 100000}
|
|
255
|
+
{#if jsonStr.length > 100000}
|
|
263
256
|
<div class="text-sm mb-2 text-gray-600">
|
|
264
257
|
<a
|
|
265
258
|
download="{filename ?? 'result'}.json"
|
|
266
|
-
href="data:text/json;charset=utf-8,{encodeURIComponent(
|
|
259
|
+
href="data:text/json;charset=utf-8,{encodeURIComponent(jsonStr)}">Download</a
|
|
267
260
|
>
|
|
268
261
|
JSON is too large to be displayed in full.
|
|
269
262
|
</div>
|
|
270
263
|
{:else}
|
|
271
|
-
<Highlight language={json} code={
|
|
264
|
+
<Highlight language={json} code={jsonStr.replace(/\\n/g, '\n')} />
|
|
272
265
|
{/if}
|
|
273
266
|
</DrawerContent>
|
|
274
267
|
</Drawer>
|
|
@@ -13,7 +13,7 @@ export let draft_only = false;
|
|
|
13
13
|
{:else}
|
|
14
14
|
<Popover notClickable>
|
|
15
15
|
<svelte:fragment slot="text">Is deployed and has a draft</svelte:fragment>
|
|
16
|
-
<Badge color="indigo" baseClass="border border-indigo-200">+Draft</Badge>
|
|
16
|
+
<Badge small color="indigo" baseClass="border border-indigo-200">+Draft</Badge>
|
|
17
17
|
</Popover>
|
|
18
18
|
{/if}
|
|
19
19
|
{/if}
|
|
@@ -591,10 +591,6 @@ onDestroy(() => {
|
|
|
591
591
|
|
|
592
592
|
<style global>
|
|
593
593
|
:global(.editor) {
|
|
594
|
-
border-radius: 0.375rem;
|
|
595
|
-
border-width: 1px;
|
|
596
|
-
--tw-border-opacity: 1;
|
|
597
|
-
border-color: rgb(249 250 251 / var(--tw-border-opacity));
|
|
598
594
|
padding: 0px;
|
|
599
595
|
}
|
|
600
596
|
:global(.yRemoteSelection) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
</script>
|
|
3
3
|
|
|
4
4
|
<script>import { ResourceService, VariableService } from '../gen';
|
|
5
|
-
import { faCube, faDollarSign,
|
|
5
|
+
import { faBook, faCube, faDollarSign, faHistory, faPlus, faRotate, faRotateLeft } from '@fortawesome/free-solid-svg-icons';
|
|
6
6
|
import { workspaceStore } from '../stores';
|
|
7
7
|
import ItemPicker from './ItemPicker.svelte';
|
|
8
8
|
import ResourceEditor from './ResourceEditor.svelte';
|
|
@@ -10,7 +10,7 @@ import VariableEditor from './VariableEditor.svelte';
|
|
|
10
10
|
import Button from './common/button/Button.svelte';
|
|
11
11
|
import HighlightCode from './HighlightCode.svelte';
|
|
12
12
|
import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
13
|
-
import {
|
|
13
|
+
import { Drawer } from './common';
|
|
14
14
|
import WorkspaceScriptPicker from './flows/pickers/WorkspaceScriptPicker.svelte';
|
|
15
15
|
import PickHubScript from './flows/pickers/PickHubScript.svelte';
|
|
16
16
|
import ToggleHubWorkspace from './ToggleHubWorkspace.svelte';
|
|
@@ -21,6 +21,8 @@ import { sendUserToast } from '../toast';
|
|
|
21
21
|
import { getScriptByPath } from '../scripts';
|
|
22
22
|
import Toggle from './Toggle.svelte';
|
|
23
23
|
import { Link, Users } from 'lucide-svelte';
|
|
24
|
+
import { capitalize } from '../utils';
|
|
25
|
+
import ScriptVersionHistory from './ScriptVersionHistory.svelte';
|
|
24
26
|
export let lang;
|
|
25
27
|
export let editor;
|
|
26
28
|
export let websocketAlive;
|
|
@@ -30,9 +32,11 @@ export let kind = 'script';
|
|
|
30
32
|
export let collabMode = false;
|
|
31
33
|
export let collabLive = false;
|
|
32
34
|
export let collabUsers = [];
|
|
35
|
+
export let scriptPath = undefined;
|
|
33
36
|
let contextualVariablePicker;
|
|
34
37
|
let variablePicker;
|
|
35
38
|
let resourcePicker;
|
|
39
|
+
let resourceTypePicker;
|
|
36
40
|
let variableEditor;
|
|
37
41
|
let resourceEditor;
|
|
38
42
|
let codeViewer;
|
|
@@ -64,8 +68,45 @@ async function onScriptPick(e) {
|
|
|
64
68
|
}
|
|
65
69
|
let version = __pkg__.version;
|
|
66
70
|
const dispatch = createEventDispatcher();
|
|
71
|
+
function compile(schema) {
|
|
72
|
+
function rec(x, root = false) {
|
|
73
|
+
let res = '{\n';
|
|
74
|
+
const entries = Object.entries(x);
|
|
75
|
+
let i = 0;
|
|
76
|
+
for (let [name, prop] of entries) {
|
|
77
|
+
if (prop.type == 'object') {
|
|
78
|
+
res += `${name}: ${rec(prop.properties ?? {})}`;
|
|
79
|
+
}
|
|
80
|
+
else if (prop.type == 'array') {
|
|
81
|
+
res += `${name}: ${prop?.items?.type ?? 'any'}[]`;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
let typ = prop?.type ?? 'any';
|
|
85
|
+
if (typ == 'integer') {
|
|
86
|
+
typ = 'number';
|
|
87
|
+
}
|
|
88
|
+
res += `${name}: ${typ}`;
|
|
89
|
+
}
|
|
90
|
+
i++;
|
|
91
|
+
if (i < entries.length) {
|
|
92
|
+
res += ',\n';
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return res;
|
|
96
|
+
}
|
|
97
|
+
return rec(schema.properties, true);
|
|
98
|
+
}
|
|
99
|
+
let historyBrowserDrawerOpen = false;
|
|
67
100
|
</script>
|
|
68
101
|
|
|
102
|
+
{#if scriptPath}
|
|
103
|
+
<Drawer bind:open={historyBrowserDrawerOpen} size="1200px">
|
|
104
|
+
<DrawerContent title="Versions History" on:close={() => (historyBrowserDrawerOpen = false)}>
|
|
105
|
+
<ScriptVersionHistory {scriptPath} />
|
|
106
|
+
</DrawerContent>
|
|
107
|
+
</Drawer>
|
|
108
|
+
{/if}
|
|
109
|
+
|
|
69
110
|
<Drawer bind:this={scriptPicker} size="900px">
|
|
70
111
|
<DrawerContent title="Code" on:close={scriptPicker.closeDrawer}>
|
|
71
112
|
{#if pick_existing == 'hub'}
|
|
@@ -219,19 +260,48 @@ const dispatch = createEventDispatcher();
|
|
|
219
260
|
</div>
|
|
220
261
|
</ItemPicker>
|
|
221
262
|
|
|
263
|
+
{#if lang == 'deno'}
|
|
264
|
+
<ItemPicker
|
|
265
|
+
bind:this={resourceTypePicker}
|
|
266
|
+
pickCallback={async (_, name) => {
|
|
267
|
+
if (!editor) return
|
|
268
|
+
const toCamel = (s) => {
|
|
269
|
+
return s.replace(/([-_][a-z])/gi, ($1) => {
|
|
270
|
+
return $1.toUpperCase().replace('-', '').replace('_', '')
|
|
271
|
+
})
|
|
272
|
+
}
|
|
273
|
+
const resourceType = await ResourceService.getResourceType({
|
|
274
|
+
workspace: $workspaceStore ?? 'NO_W',
|
|
275
|
+
path: name
|
|
276
|
+
})
|
|
277
|
+
|
|
278
|
+
const tsSchema = compile(resourceType.schema)
|
|
279
|
+
console.log(tsSchema)
|
|
280
|
+
editor.insertAtCursor(`type ${toCamel(capitalize(name))} = ${tsSchema}\n`)
|
|
281
|
+
sendUserToast(`${name} inserted at cursor`)
|
|
282
|
+
}}
|
|
283
|
+
tooltip="Resources Types are the schemas associated with a Resource. They define the structure of the data that is returned from a Resource."
|
|
284
|
+
documentationLink="https://docs.windmill.dev/docs/core_concepts/resources_and_types"
|
|
285
|
+
itemName="Resource Type"
|
|
286
|
+
extraField="name"
|
|
287
|
+
loadItems={async () =>
|
|
288
|
+
await ResourceService.listResourceType({ workspace: $workspaceStore ?? 'NO_W' })}
|
|
289
|
+
/>
|
|
290
|
+
{/if}
|
|
222
291
|
<ResourceEditor bind:this={resourceEditor} on:refresh={resourcePicker.openDrawer} />
|
|
223
292
|
<VariableEditor bind:this={variableEditor} on:create={variablePicker.openDrawer} />
|
|
224
293
|
|
|
225
|
-
<div class="flex justify-between items-center overflow-y-auto w-full p-
|
|
294
|
+
<div class="flex justify-between items-center overflow-y-auto w-full p-0.5">
|
|
226
295
|
<div class="flex items-center">
|
|
227
|
-
<
|
|
228
|
-
{validCode ? '
|
|
229
|
-
|
|
230
|
-
|
|
296
|
+
<div
|
|
297
|
+
title={validCode ? 'Main function parsable' : 'Main function not parsable'}
|
|
298
|
+
class="rounded-full w-2 h-2 mx-2 {validCode ? 'bg-green-300' : 'bg-red-300'}"
|
|
299
|
+
/>
|
|
300
|
+
<div class="flex items-center">
|
|
231
301
|
<Button
|
|
232
302
|
title="Add context variable"
|
|
233
303
|
color="light"
|
|
234
|
-
btnClasses="!font-medium
|
|
304
|
+
btnClasses="!font-medium text-gray-600"
|
|
235
305
|
on:click={contextualVariablePicker.openDrawer}
|
|
236
306
|
size="xs"
|
|
237
307
|
spacingSize="md"
|
|
@@ -244,7 +314,7 @@ const dispatch = createEventDispatcher();
|
|
|
244
314
|
<Button
|
|
245
315
|
title="Add variable"
|
|
246
316
|
color="light"
|
|
247
|
-
btnClasses="!font-medium
|
|
317
|
+
btnClasses="!font-medium text-gray-600"
|
|
248
318
|
on:click={variablePicker.openDrawer}
|
|
249
319
|
size="xs"
|
|
250
320
|
spacingSize="md"
|
|
@@ -256,7 +326,7 @@ const dispatch = createEventDispatcher();
|
|
|
256
326
|
|
|
257
327
|
<Button
|
|
258
328
|
title="Add resource"
|
|
259
|
-
btnClasses="!font-medium
|
|
329
|
+
btnClasses="!font-medium text-gray-600"
|
|
260
330
|
size="xs"
|
|
261
331
|
spacingSize="md"
|
|
262
332
|
color="light"
|
|
@@ -267,9 +337,24 @@ const dispatch = createEventDispatcher();
|
|
|
267
337
|
+Resource
|
|
268
338
|
</Button>
|
|
269
339
|
|
|
340
|
+
{#if lang == 'deno'}
|
|
341
|
+
<Button
|
|
342
|
+
title="Add resource"
|
|
343
|
+
btnClasses="!font-medium text-gray-600"
|
|
344
|
+
size="xs"
|
|
345
|
+
spacingSize="md"
|
|
346
|
+
color="light"
|
|
347
|
+
on:click={resourceTypePicker.openDrawer}
|
|
348
|
+
{iconOnly}
|
|
349
|
+
startIcon={{ icon: faCube }}
|
|
350
|
+
>
|
|
351
|
+
+Resource Type
|
|
352
|
+
</Button>
|
|
353
|
+
{/if}
|
|
354
|
+
|
|
270
355
|
<Button
|
|
271
356
|
title="Reset Content"
|
|
272
|
-
btnClasses="!font-medium
|
|
357
|
+
btnClasses="!font-medium text-gray-600"
|
|
273
358
|
size="xs"
|
|
274
359
|
spacingSize="md"
|
|
275
360
|
color="light"
|
|
@@ -281,7 +366,7 @@ const dispatch = createEventDispatcher();
|
|
|
281
366
|
</Button>
|
|
282
367
|
|
|
283
368
|
<Button
|
|
284
|
-
btnClasses="!font-medium
|
|
369
|
+
btnClasses="!font-medium text-gray-600"
|
|
285
370
|
size="xs"
|
|
286
371
|
spacingSize="md"
|
|
287
372
|
color="light"
|
|
@@ -366,20 +451,36 @@ const dispatch = createEventDispatcher();
|
|
|
366
451
|
</div>
|
|
367
452
|
</div>
|
|
368
453
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
454
|
+
<div class="flex flex-row items-center gap-2">
|
|
455
|
+
{#if scriptPath}
|
|
456
|
+
<Button
|
|
457
|
+
btnClasses="!font-medium text-gray-600"
|
|
458
|
+
size="xs"
|
|
459
|
+
spacingSize="md"
|
|
460
|
+
color="light"
|
|
461
|
+
on:click={() => (historyBrowserDrawerOpen = true)}
|
|
462
|
+
{iconOnly}
|
|
463
|
+
startIcon={{ icon: faHistory }}
|
|
464
|
+
title="See history"
|
|
465
|
+
>
|
|
466
|
+
History
|
|
467
|
+
</Button>
|
|
468
|
+
{/if}
|
|
469
|
+
{#if SCRIPT_EDITOR_SHOW_EXPLORE_OTHER_SCRIPTS}
|
|
470
|
+
<Button
|
|
471
|
+
btnClasses="!font-medium text-gray-600"
|
|
472
|
+
size="xs"
|
|
473
|
+
spacingSize="md"
|
|
474
|
+
color="light"
|
|
475
|
+
on:click={scriptPicker.openDrawer}
|
|
476
|
+
{iconOnly}
|
|
477
|
+
startIcon={{ icon: faBook }}
|
|
478
|
+
title="Explore other scripts"
|
|
479
|
+
>
|
|
480
|
+
Library
|
|
481
|
+
</Button>
|
|
482
|
+
{/if}
|
|
483
|
+
</div>
|
|
383
484
|
</div>
|
|
384
485
|
|
|
385
486
|
<style>
|
|
@@ -23,11 +23,11 @@ export let prettify = false;
|
|
|
23
23
|
|
|
24
24
|
{#if displayType}
|
|
25
25
|
{#if format && format != ''}
|
|
26
|
-
<span class="text-sm italic ml-1 text-indigo-800">
|
|
26
|
+
<span class="text-sm italic ml-1 text-indigo-800 dark:text-indigo-400">
|
|
27
27
|
({format})
|
|
28
28
|
</span>
|
|
29
29
|
{:else}
|
|
30
|
-
<span class="text-sm italic ml-1 text-indigo-800">
|
|
30
|
+
<span class="text-sm italic ml-1 text-indigo-800 dark:text-indigo-400">
|
|
31
31
|
({type ?? 'any'}{contentEncoding && contentEncoding != ''
|
|
32
32
|
? `, encoding: ${contentEncoding}`
|
|
33
33
|
: ''})
|
|
@@ -20,6 +20,7 @@ import { Pen } from 'lucide-svelte';
|
|
|
20
20
|
import { loadHubScripts } from '../scripts';
|
|
21
21
|
import { createEventDispatcher } from 'svelte';
|
|
22
22
|
import Awareness from './Awareness.svelte';
|
|
23
|
+
import { getAllModules } from './flows/flowExplorer';
|
|
23
24
|
export let initialPath = '';
|
|
24
25
|
export let selectedId;
|
|
25
26
|
export let initialArgs = {};
|
|
@@ -83,10 +84,18 @@ async function saveDraft() {
|
|
|
83
84
|
}
|
|
84
85
|
loadingDraft = false;
|
|
85
86
|
}
|
|
87
|
+
export function computeUnlockedSteps(flow) {
|
|
88
|
+
return Object.fromEntries(getAllModules(flow.value.modules, flow.value.failure_module)
|
|
89
|
+
.filter((m) => m.value.type == 'script' && m.value.hash == null)
|
|
90
|
+
.map((m) => [m.id, m.value.path]));
|
|
91
|
+
}
|
|
86
92
|
async function saveFlow() {
|
|
87
93
|
loadingSave = true;
|
|
88
94
|
try {
|
|
89
95
|
const flow = cleanInputs($flowStore);
|
|
96
|
+
// console.log('flow', computeUnlockedSteps(flow)) // del
|
|
97
|
+
// loadingSave = false // del
|
|
98
|
+
// return
|
|
90
99
|
const { cron, timezone, args, enabled } = $scheduleStore;
|
|
91
100
|
$dirtyStore = false;
|
|
92
101
|
if (initialPath === '') {
|
|
@@ -10,6 +10,9 @@ declare const __propDef: {
|
|
|
10
10
|
loading?: boolean | undefined;
|
|
11
11
|
flowStore: Writable<Flow>;
|
|
12
12
|
flowStateStore: Writable<FlowState>;
|
|
13
|
+
computeUnlockedSteps?: ((flow: Flow) => {
|
|
14
|
+
[k: string]: string;
|
|
15
|
+
}) | undefined;
|
|
13
16
|
getSelectedId?: (() => string) | undefined;
|
|
14
17
|
};
|
|
15
18
|
events: {
|
|
@@ -25,6 +28,9 @@ export type FlowBuilderProps = typeof __propDef.props;
|
|
|
25
28
|
export type FlowBuilderEvents = typeof __propDef.events;
|
|
26
29
|
export type FlowBuilderSlots = typeof __propDef.slots;
|
|
27
30
|
export default class FlowBuilder extends SvelteComponentTyped<FlowBuilderProps, FlowBuilderEvents, FlowBuilderSlots> {
|
|
31
|
+
get computeUnlockedSteps(): (flow: Flow) => {
|
|
32
|
+
[k: string]: string;
|
|
33
|
+
};
|
|
28
34
|
get getSelectedId(): () => string;
|
|
29
35
|
}
|
|
30
36
|
export {};
|
|
@@ -7,11 +7,12 @@ export let col = false;
|
|
|
7
7
|
export let noBorder = false;
|
|
8
8
|
export let loading;
|
|
9
9
|
export let filename = undefined;
|
|
10
|
+
export let jobId = undefined;
|
|
10
11
|
</script>
|
|
11
12
|
|
|
12
13
|
<div
|
|
13
14
|
class:border={!noBorder}
|
|
14
|
-
class="grid {!col ? 'grid-cols-2' : 'grid-rows-2'} shadow
|
|
15
|
+
class="grid {!col ? 'grid-cols-2' : 'grid-rows-2'} shadow border-gray-400 h-full max-h-screen"
|
|
15
16
|
>
|
|
16
17
|
<div class="bg-white {col ? '' : 'max-h-80'} h-full p-1 overflow-auto relative">
|
|
17
18
|
<span class="text-gray-500">Result</span>
|
|
@@ -24,6 +25,6 @@ export let filename = undefined;
|
|
|
24
25
|
{/if}
|
|
25
26
|
</div>
|
|
26
27
|
<div class="overflow-auto {col ? '' : 'max-h-80'} h-full relative">
|
|
27
|
-
<LogViewer content={logs ?? ''} isLoading={false} />
|
|
28
|
+
<LogViewer content={logs ?? ''} {jobId} isLoading={false} />
|
|
28
29
|
</div>
|
|
29
30
|
</div>
|
|
@@ -13,9 +13,8 @@ import { FlowGraph } from './graph';
|
|
|
13
13
|
import ModuleStatus from './ModuleStatus.svelte';
|
|
14
14
|
import { displayDate, emptyString, isOwner, pluralize, truncateRev } from '../utils';
|
|
15
15
|
import JobArgs from './JobArgs.svelte';
|
|
16
|
-
import Tooltip from './Tooltip.svelte';
|
|
17
|
-
import SimpleEditor from './SimpleEditor.svelte';
|
|
18
16
|
import { Loader2 } from 'lucide-svelte';
|
|
17
|
+
import FlowStatusWaitingForEvents from './FlowStatusWaitingForEvents.svelte';
|
|
19
18
|
const dispatch = createEventDispatcher();
|
|
20
19
|
export let jobId;
|
|
21
20
|
export let workspaceId = undefined;
|
|
@@ -129,7 +128,6 @@ function loadOwner(path) {
|
|
|
129
128
|
is_owner = isOwner(path, $userStore, workspaceId ?? $workspaceStore);
|
|
130
129
|
}
|
|
131
130
|
$: selected = isListJob ? 'sequence' : 'graph';
|
|
132
|
-
let payload = '"a test payload in json"';
|
|
133
131
|
function isSuccess(arg) {
|
|
134
132
|
if (arg == undefined) {
|
|
135
133
|
return undefined;
|
|
@@ -185,47 +183,14 @@ function onJobsLoaded(mod, job) {
|
|
|
185
183
|
{#if `result` in job}
|
|
186
184
|
<div class="w-full h-full">
|
|
187
185
|
<FlowJobResult
|
|
186
|
+
jobId={job?.id}
|
|
188
187
|
loading={job['running'] == true}
|
|
189
188
|
result={job.result}
|
|
190
189
|
logs={job.logs ?? ''}
|
|
191
190
|
/>
|
|
192
191
|
</div>
|
|
193
192
|
{:else if job.flow_status?.modules?.[job?.flow_status?.step]?.type === FlowStatusModule.type.WAITING_FOR_EVENTS}
|
|
194
|
-
<
|
|
195
|
-
<p>Waiting to be resumed</p>
|
|
196
|
-
<div>
|
|
197
|
-
{#if is_owner}
|
|
198
|
-
<div class="flex flex-row gap-2 mt-2">
|
|
199
|
-
<div>
|
|
200
|
-
<Button
|
|
201
|
-
color="green"
|
|
202
|
-
variant="border"
|
|
203
|
-
on:click={async () =>
|
|
204
|
-
await JobService.resumeSuspendedFlowAsOwner({
|
|
205
|
-
workspace: workspaceId ?? $workspaceStore ?? '',
|
|
206
|
-
id: job?.id ?? '',
|
|
207
|
-
requestBody: JSON.parse(payload)
|
|
208
|
-
})}
|
|
209
|
-
>Resume <Tooltip
|
|
210
|
-
>Since you are an owner of this flow, you can send resume events without
|
|
211
|
-
necessarily knowing the resume id sent by the approval step</Tooltip
|
|
212
|
-
></Button
|
|
213
|
-
>
|
|
214
|
-
</div>
|
|
215
|
-
<div class="w-full border rounded-lg border-gray-600 p-2">
|
|
216
|
-
<SimpleEditor automaticLayout lang="json" bind:code={payload} autoHeight />
|
|
217
|
-
</div>
|
|
218
|
-
<Tooltip
|
|
219
|
-
>The payload is optional, it is passed to the following step through the
|
|
220
|
-
`resume` variable</Tooltip
|
|
221
|
-
>
|
|
222
|
-
</div>
|
|
223
|
-
{:else}
|
|
224
|
-
You cannot resume the flow yourself without receiving the resume secret since you
|
|
225
|
-
are not an owner of {job.script_path}
|
|
226
|
-
{/if}
|
|
227
|
-
</div>
|
|
228
|
-
</div>
|
|
193
|
+
<FlowStatusWaitingForEvents {workspaceId} {job} {is_owner} />
|
|
229
194
|
{:else if job.logs}
|
|
230
195
|
<div class="text-xs p-4 bg-gray-50 overflow-auto max-h-80 border">
|
|
231
196
|
<pre class="w-full">{job.logs}</pre>
|
|
@@ -456,11 +421,12 @@ function onJobsLoaded(mod, job) {
|
|
|
456
421
|
failureModule={job.raw_flow?.failure_module}
|
|
457
422
|
/>
|
|
458
423
|
</div>
|
|
459
|
-
<div class="border-l border-gray-400 pt-1 overflow-
|
|
424
|
+
<div class="border-l border-gray-400 pt-1 overflow-auto min-h-[800px] flex flex-col">
|
|
460
425
|
{#if selectedNode}
|
|
461
426
|
{@const node = localFlowModuleStates[selectedNode]}
|
|
462
427
|
{#if selectedNode == 'end'}
|
|
463
428
|
<FlowJobResult
|
|
429
|
+
jobId={job?.id}
|
|
464
430
|
filename={job.id}
|
|
465
431
|
loading={job['running']}
|
|
466
432
|
noBorder
|
|
@@ -499,6 +465,7 @@ function onJobsLoaded(mod, job) {
|
|
|
499
465
|
</div>
|
|
500
466
|
|
|
501
467
|
<FlowJobResult
|
|
468
|
+
jobId={job?.id}
|
|
502
469
|
loading={job['running'] == true}
|
|
503
470
|
noBorder
|
|
504
471
|
col
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<script>import { Job, JobService } from '../gen';
|
|
2
|
+
import { workspaceStore } from '../stores';
|
|
3
|
+
import SchemaForm from './SchemaForm.svelte';
|
|
4
|
+
import Tooltip from './Tooltip.svelte';
|
|
5
|
+
import { Button } from './common';
|
|
6
|
+
export let is_owner;
|
|
7
|
+
export let workspaceId;
|
|
8
|
+
export let job;
|
|
9
|
+
let payload = {};
|
|
10
|
+
$: approvalStep = (job?.flow_status?.step ?? 1) - 1;
|
|
11
|
+
$: job && getDefaultArgs();
|
|
12
|
+
async function getDefaultArgs() {
|
|
13
|
+
let jobId = job.flow_status?.modules?.[approvalStep]?.job;
|
|
14
|
+
if (!jobId) {
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
let job_result = await JobService.getCompletedJobResult({
|
|
18
|
+
workspace: workspaceId ?? $workspaceStore ?? '',
|
|
19
|
+
id: jobId
|
|
20
|
+
});
|
|
21
|
+
payload = job_result?.default_args ?? {};
|
|
22
|
+
}
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<div class="w-full h-full mt-2 text-sm text-gray-600">
|
|
26
|
+
<p>Waiting to be resumed</p>
|
|
27
|
+
<div>
|
|
28
|
+
{#if is_owner}
|
|
29
|
+
<div class="flex flex-row gap-2 mt-2">
|
|
30
|
+
<div>
|
|
31
|
+
<Button
|
|
32
|
+
color="green"
|
|
33
|
+
variant="border"
|
|
34
|
+
on:click={async () =>
|
|
35
|
+
await JobService.resumeSuspendedFlowAsOwner({
|
|
36
|
+
workspace: workspaceId ?? $workspaceStore ?? '',
|
|
37
|
+
id: job?.id ?? '',
|
|
38
|
+
requestBody: payload
|
|
39
|
+
})}
|
|
40
|
+
>Resume <Tooltip
|
|
41
|
+
>Since you are an owner of this flow, you can send resume events without necessarily
|
|
42
|
+
knowing the resume id sent by the approval step</Tooltip
|
|
43
|
+
></Button
|
|
44
|
+
>
|
|
45
|
+
</div>
|
|
46
|
+
{#if job.raw_flow?.modules?.[approvalStep]?.suspend?.resume_form?.schema}
|
|
47
|
+
<div class="w-full border rounded-lg p-2">
|
|
48
|
+
<SchemaForm
|
|
49
|
+
noVariablePicker
|
|
50
|
+
bind:args={payload}
|
|
51
|
+
schema={job.raw_flow?.modules?.[approvalStep]?.suspend?.resume_form?.schema}
|
|
52
|
+
/>
|
|
53
|
+
</div>
|
|
54
|
+
{/if}
|
|
55
|
+
<Tooltip
|
|
56
|
+
>The payload is optional, it is passed to the following step through the `resume` variable</Tooltip
|
|
57
|
+
>
|
|
58
|
+
</div>
|
|
59
|
+
{:else}
|
|
60
|
+
You cannot resume the flow yourself without receiving the resume secret since you are not an
|
|
61
|
+
owner of {job.script_path}
|
|
62
|
+
{/if}
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|