windmill-components 1.352.9 → 1.362.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/assets/app.css +8 -45
- package/package/components/ApiConnectForm.svelte +1 -0
- package/package/components/ArgInput.svelte +5 -1
- package/package/components/ChangeInstanceUsername.svelte +20 -12
- package/package/components/ContentSearchInner.svelte +359 -0
- package/package/components/{ContentSearch.svelte.d.ts → ContentSearchInner.svelte.d.ts} +9 -5
- package/package/components/CustomPopover.svelte +73 -0
- package/package/components/CustomPopover.svelte.d.ts +29 -0
- package/package/components/DateTimeInput.svelte +29 -3
- package/package/components/DateTimeInput.svelte.d.ts +4 -0
- package/package/components/Dev.svelte +8 -3
- package/package/components/DurationMs.svelte +2 -2
- package/package/components/FlowBuilder.svelte +122 -24
- package/package/components/FlowBuilder.svelte.d.ts +1 -0
- package/package/components/FlowGraphViewerStep.svelte +2 -2
- package/package/components/FlowJobResult.svelte +5 -3
- package/package/components/FlowStatusViewer.svelte +4 -3
- package/package/components/FlowStatusViewerInner.svelte +265 -160
- package/package/components/FlowStatusViewerInner.svelte.d.ts +15 -2
- package/package/components/HighlightTheme.svelte +75 -77
- package/package/components/InputTransformForm.svelte +2 -0
- package/package/components/JobArgs.svelte +59 -44
- package/package/components/JobArgs.svelte.d.ts +2 -0
- package/package/components/LightweightArgInput.svelte +27 -2
- package/package/components/Path.svelte +3 -8
- package/package/components/Popover.svelte +1 -1
- package/package/components/ResourceEditor.svelte +3 -2
- package/package/components/ResourceEditorDrawer.svelte +4 -1
- package/package/components/ResourcePicker.svelte +1 -0
- package/package/components/RunChart.svelte +6 -3
- package/package/components/RunChart.svelte.d.ts +1 -0
- package/package/components/RunForm.svelte +24 -23
- package/package/components/RunForm.svelte.d.ts +0 -2
- package/package/components/SavedInputs.svelte +50 -39
- package/package/components/ScheduleEditorInner.svelte +26 -4
- package/package/components/ScriptBuilder.svelte +47 -22
- package/package/components/ScriptBuilder.svelte.d.ts +1 -0
- package/package/components/SearchItems.svelte +5 -4
- package/package/components/Summary.svelte +74 -0
- package/package/components/Summary.svelte.d.ts +16 -0
- package/package/components/apps/components/display/AppMarkdown.svelte +3 -2
- package/package/components/apps/components/display/AppMenu.svelte +2 -2
- package/package/components/apps/components/display/AppNavbar.svelte +94 -0
- package/package/components/apps/components/display/AppNavbar.svelte.d.ts +24 -0
- package/package/components/apps/components/display/AppNavbarItem.svelte +146 -0
- package/package/components/apps/components/display/AppNavbarItem.svelte.d.ts +27 -0
- package/package/components/apps/components/display/ResolveNavbarItemPath.svelte +21 -0
- package/package/components/apps/components/display/ResolveNavbarItemPath.svelte.d.ts +20 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +16 -0
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +12 -16
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +5 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +28 -6
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +68 -43
- package/package/components/apps/components/inputs/AppDateSelect.svelte +284 -0
- package/package/components/apps/components/inputs/AppDateSelect.svelte.d.ts +21 -0
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte +2 -0
- package/package/components/apps/components/inputs/AppFileInput.svelte +22 -27
- package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +32 -30
- package/package/components/apps/components/layout/AppModal.svelte +17 -6
- package/package/components/apps/editor/AppDeploymentHistory.svelte +2 -3
- package/package/components/apps/editor/AppDeploymentHistory.svelte.d.ts +3 -2
- package/package/components/apps/editor/AppEditor.svelte +9 -2
- package/package/components/apps/editor/AppEditorHeader.svelte +7 -10
- package/package/components/apps/editor/AppPreview.svelte +12 -3
- package/package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
- package/package/components/apps/editor/DecisionTreeDebug.svelte +92 -68
- package/package/components/apps/editor/DeploymentHistory.svelte +0 -2
- package/package/components/apps/editor/appUtils.d.ts +1 -0
- package/package/components/apps/editor/appUtils.js +17 -0
- package/package/components/apps/editor/component/Component.svelte +23 -0
- package/package/components/apps/editor/component/components.d.ts +205 -3
- package/package/components/apps/editor/component/components.js +160 -1
- package/package/components/apps/editor/component/default-codes.js +13 -13
- package/package/components/apps/editor/component/sets.js +4 -2
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +12 -12
- package/package/components/apps/editor/componentsPanel/cssUtils.js +39 -3
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
- package/package/components/apps/editor/contextPanel/ComponentOutput.svelte +2 -2
- package/package/components/apps/editor/contextPanel/ContextPanel.svelte +6 -0
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +11 -0
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +4 -0
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +21 -8
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -20
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +48 -15
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +25 -5
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/DocLink.svelte +33 -0
- package/package/components/apps/editor/settingsPanel/DocLink.svelte.d.ts +19 -0
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +192 -0
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte.d.ts +18 -0
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte +17 -0
- package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte.d.ts +16 -0
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +81 -38
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +12 -5
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +11 -12
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +4 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +4 -1
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +7 -1
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/apps/svelte-select/lib/Select.svelte +2 -3
- package/package/components/apps/types.d.ts +3 -0
- package/package/components/auditLogs/AuditLogsTable.svelte +2 -2
- package/package/components/common/CloseButton.svelte +10 -10
- package/package/components/common/CloseButton.svelte.d.ts +6 -14
- package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +7 -1
- package/package/components/common/fileInput/FileInput.svelte +2 -0
- package/package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
- package/package/components/common/popup/Popup.svelte +4 -3
- package/package/components/common/popup/Popup.svelte.d.ts +1 -0
- package/package/components/common/table/AppRow.svelte +3 -10
- package/package/components/common/table/FlowRow.svelte +12 -1
- package/package/components/copilot/IteratorGen.svelte +1 -1
- package/package/components/copilot/PredicateGen.svelte +1 -1
- package/package/components/copilot/StepInputGen.svelte +8 -3
- package/package/components/copilot/StepInputsGen.svelte +5 -2
- package/package/components/details/WebhooksPanel.svelte +32 -1
- package/package/components/details/WebhooksPanel.svelte.d.ts +2 -11
- package/package/components/flows/FlowHistory.svelte +208 -0
- package/package/components/flows/FlowHistory.svelte.d.ts +21 -0
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +1 -1
- package/package/components/flows/content/FlowEditorPanel.svelte +1 -1
- package/package/components/flows/content/FlowLoop.svelte +23 -26
- package/package/components/flows/content/FlowModuleComponent.svelte +2 -18
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +10 -4
- package/package/components/flows/content/FlowModuleHeader.svelte +3 -4
- package/package/components/flows/content/FlowModuleScript.svelte +1 -1
- package/package/components/flows/content/FlowModuleSleep.svelte +1 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
- package/package/components/flows/content/SuspendDrawer.svelte +7 -7
- package/package/components/flows/flowStateUtils.js +2 -1
- package/package/components/flows/flowStore.js +1 -1
- package/package/components/flows/header/FlowImportExportMenu.svelte +3 -16
- package/package/components/flows/header/FlowImportExportMenu.svelte.d.ts +4 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +69 -0
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +22 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +7 -4
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
- package/package/components/flows/map/MapItem.svelte +20 -0
- package/package/components/flows/map/MapItem.svelte.d.ts +9 -0
- package/package/components/flows/map/VirtualItem.svelte +4 -2
- package/package/components/flows/map/VirtualItem.svelte.d.ts +1 -0
- package/package/components/flows/previousResults.d.ts +9 -0
- package/package/components/flows/previousResults.js +42 -8
- 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 +1 -1
- package/package/components/graph/FlowGraph.svelte +80 -42
- package/package/components/graph/FlowGraph.svelte.d.ts +1 -0
- package/package/components/graph/model.d.ts +6 -1
- package/package/components/graph/svelvet/container/controllers/middleware.js +4 -4
- package/package/components/graph/svelvet/container/views/GraphView.svelte +2 -0
- package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +24 -25
- package/package/components/graph/util.d.ts +1 -1
- package/package/components/graph/util.js +1 -2
- package/package/components/home/ItemsList.svelte +22 -19
- package/package/components/jobs/JobPreview.svelte +11 -2
- package/package/components/propertyPicker/PropPicker.svelte +30 -0
- package/package/components/propertyPicker/PropPickerResult.svelte +14 -1
- package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
- package/package/components/runs/JobLoader.svelte +21 -8
- package/package/components/runs/JobLoader.svelte.d.ts +2 -0
- package/package/components/runs/JobPreview.svelte +5 -1
- package/package/components/runs/RunRow.svelte +12 -8
- package/package/components/runs/RunsFilter.svelte +2 -4
- package/package/components/runs/RunsFilter.svelte.d.ts +0 -1
- package/package/components/runs/RunsTable.svelte +63 -29
- package/package/components/runs/RunsTable.svelte.d.ts +1 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +9 -1
- package/package/components/schema/PropertyEditor.svelte +1 -1
- package/package/components/search/GlobalSearchModal.svelte +559 -0
- package/package/components/search/GlobalSearchModal.svelte.d.ts +17 -0
- package/package/components/search/QuickMenuItem.svelte +76 -0
- package/package/components/search/QuickMenuItem.svelte.d.ts +27 -0
- package/package/components/sidebar/MenuButton.svelte +11 -0
- package/package/components/sidebar/MenuButton.svelte.d.ts +4 -0
- package/package/components/sidebar/changelogs.js +35 -0
- package/package/components/wizards/AppPicker.svelte +68 -0
- package/package/components/wizards/AppPicker.svelte.d.ts +17 -0
- package/package/components/wizards/NavbarWizard.svelte +131 -0
- package/package/components/wizards/NavbarWizard.svelte.d.ts +19 -0
- package/package/defaults.d.ts +1 -1
- package/package/defaults.js +1 -1
- package/package/es6.d.ts.txt +370 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +42 -3
- package/package/gen/schemas.gen.js +42 -3
- package/package/gen/services.gen.d.ts +80 -5
- package/package/gen/services.gen.js +149 -8
- package/package/gen/types.gen.d.ts +265 -11
- package/package/inferArgSig.js +4 -0
- package/package/script_helpers.d.ts +3 -3
- package/package/script_helpers.js +46 -22
- package/package/stores.d.ts +1 -1
- package/package/stores.js +1 -1
- package/package/utils.d.ts +7 -23
- package/package/utils.js +54 -33
- package/package/windmill_fetch.d.ts.txt +6 -6
- package/package.json +3 -11
- package/package/components/ContentSearch.svelte +0 -355
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
<script>import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
2
|
+
import PanelSection from '../apps/editor/settingsPanel/common/PanelSection.svelte';
|
|
3
|
+
import { classNames, displayDate, emptyString, sendUserToast } from '../../utils';
|
|
4
|
+
import { FlowService } from '../../gen';
|
|
5
|
+
import { workspaceStore } from '../../stores';
|
|
6
|
+
import { Skeleton } from '../common';
|
|
7
|
+
import FlowViewer from '../FlowViewer.svelte';
|
|
8
|
+
import Drawer from '../common/drawer/Drawer.svelte';
|
|
9
|
+
import DrawerContent from '../common/drawer/DrawerContent.svelte';
|
|
10
|
+
import Button from '../common/button/Button.svelte';
|
|
11
|
+
import { ArrowRight, Pencil, X } from 'lucide-svelte';
|
|
12
|
+
import { createEventDispatcher } from 'svelte';
|
|
13
|
+
import { goto } from '$app/navigation';
|
|
14
|
+
export let path;
|
|
15
|
+
let drawer;
|
|
16
|
+
let loading = false;
|
|
17
|
+
let versions = [];
|
|
18
|
+
let selectedVersion = undefined;
|
|
19
|
+
let selected = undefined;
|
|
20
|
+
let deploymentMsgUpdateMode = false;
|
|
21
|
+
let deploymentMsgUpdate = undefined;
|
|
22
|
+
export function open() {
|
|
23
|
+
loadVersions();
|
|
24
|
+
drawer.openDrawer();
|
|
25
|
+
}
|
|
26
|
+
async function loadFlow(version) {
|
|
27
|
+
selected = await FlowService.getFlowVersion({
|
|
28
|
+
workspace: $workspaceStore,
|
|
29
|
+
version,
|
|
30
|
+
path
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
async function loadVersions() {
|
|
34
|
+
loading = true;
|
|
35
|
+
versions = await FlowService.getFlowHistory({
|
|
36
|
+
workspace: $workspaceStore,
|
|
37
|
+
path: path
|
|
38
|
+
});
|
|
39
|
+
loading = false;
|
|
40
|
+
}
|
|
41
|
+
async function updateDeploymentMsg(version) {
|
|
42
|
+
if (selectedVersion === undefined ||
|
|
43
|
+
version === undefined ||
|
|
44
|
+
emptyString(deploymentMsgUpdate)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
await FlowService.updateFlowHistory({
|
|
48
|
+
workspace: $workspaceStore,
|
|
49
|
+
version,
|
|
50
|
+
path,
|
|
51
|
+
requestBody: {
|
|
52
|
+
deployment_msg: deploymentMsgUpdate
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
selectedVersion.deployment_msg = deploymentMsgUpdate;
|
|
56
|
+
deploymentMsgUpdateMode = false;
|
|
57
|
+
loadVersions();
|
|
58
|
+
}
|
|
59
|
+
const dispatch = createEventDispatcher();
|
|
60
|
+
async function restoreVersion(flow) {
|
|
61
|
+
if (!flow)
|
|
62
|
+
return;
|
|
63
|
+
await FlowService.updateFlow({
|
|
64
|
+
workspace: $workspaceStore,
|
|
65
|
+
requestBody: {
|
|
66
|
+
...flow,
|
|
67
|
+
path
|
|
68
|
+
},
|
|
69
|
+
path
|
|
70
|
+
});
|
|
71
|
+
dispatch('historyRestore');
|
|
72
|
+
drawer?.closeDrawer();
|
|
73
|
+
sendUserToast('Flow restored from previous deployment');
|
|
74
|
+
}
|
|
75
|
+
$: selectedVersion !== undefined && loadFlow(selectedVersion.id);
|
|
76
|
+
</script>
|
|
77
|
+
|
|
78
|
+
<Drawer bind:this={drawer} size="1200px">
|
|
79
|
+
<DrawerContent
|
|
80
|
+
on:close={() => {
|
|
81
|
+
drawer?.closeDrawer()
|
|
82
|
+
}}
|
|
83
|
+
>
|
|
84
|
+
<Splitpanes class="!overflow-visible">
|
|
85
|
+
<Pane size={20}>
|
|
86
|
+
<PanelSection title="Past Deployments">
|
|
87
|
+
<div class="flex flex-col gap-2 w-full">
|
|
88
|
+
{#if !loading}
|
|
89
|
+
{#if versions.length > 0}
|
|
90
|
+
<div class="flex gap-2 flex-col">
|
|
91
|
+
{#each versions ?? [] as version}
|
|
92
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
93
|
+
<div
|
|
94
|
+
class={classNames(
|
|
95
|
+
'border flex gap-1 truncate justify-between flex-row w-full items-center p-2 rounded-md cursor-pointer hover:bg-blue-50 hover:text-blue-400',
|
|
96
|
+
selectedVersion?.id == version.id ? 'bg-blue-100 text-blue-600' : ''
|
|
97
|
+
)}
|
|
98
|
+
role="button"
|
|
99
|
+
tabindex="0"
|
|
100
|
+
on:click={() => {
|
|
101
|
+
selectedVersion = version
|
|
102
|
+
}}
|
|
103
|
+
>
|
|
104
|
+
<span class="text-xs truncate">
|
|
105
|
+
{#if emptyString(version.deployment_msg)}Version {version.id}{:else}{version.deployment_msg}{/if}
|
|
106
|
+
</span>
|
|
107
|
+
</div>
|
|
108
|
+
{/each}
|
|
109
|
+
</div>
|
|
110
|
+
{:else}
|
|
111
|
+
<div class="text-sm text-tertiary">No items</div>
|
|
112
|
+
{/if}
|
|
113
|
+
{:else}
|
|
114
|
+
<Skeleton layout={[[40], [40], [40], [40], [40]]} />
|
|
115
|
+
{/if}
|
|
116
|
+
</div>
|
|
117
|
+
</PanelSection>
|
|
118
|
+
</Pane>
|
|
119
|
+
<Pane size={80}>
|
|
120
|
+
<div class="h-full w-full overflow-auto">
|
|
121
|
+
{#if selectedVersion}
|
|
122
|
+
{#if selected}
|
|
123
|
+
<div class="px-2 flex flex-col gap-2">
|
|
124
|
+
<span class="flex flex-row text-sm p-1 text-tertiary">
|
|
125
|
+
{#if deploymentMsgUpdateMode}
|
|
126
|
+
<div class="flex w-full">
|
|
127
|
+
<input
|
|
128
|
+
type="text"
|
|
129
|
+
bind:value={deploymentMsgUpdate}
|
|
130
|
+
class="!w-auto grow"
|
|
131
|
+
on:click|stopPropagation={() => {}}
|
|
132
|
+
on:keydown|stopPropagation
|
|
133
|
+
on:keypress|stopPropagation={({ key }) => {
|
|
134
|
+
if (key === 'Enter') updateDeploymentMsg(selectedVersion?.id)
|
|
135
|
+
}}
|
|
136
|
+
/>
|
|
137
|
+
<Button
|
|
138
|
+
size="xs"
|
|
139
|
+
color="blue"
|
|
140
|
+
buttonType="button"
|
|
141
|
+
btnClasses="!p-1 !w-[34px] !ml-1"
|
|
142
|
+
aria-label="Save Deployment Message"
|
|
143
|
+
on:click={() => {
|
|
144
|
+
updateDeploymentMsg(selectedVersion?.id)
|
|
145
|
+
}}
|
|
146
|
+
>
|
|
147
|
+
<ArrowRight size={14} />
|
|
148
|
+
</Button>
|
|
149
|
+
<Button
|
|
150
|
+
size="xs"
|
|
151
|
+
color="light"
|
|
152
|
+
buttonType="button"
|
|
153
|
+
btnClasses="!p-1 !w-[34px] !ml-1"
|
|
154
|
+
aria-label="Abort"
|
|
155
|
+
on:click={() => {
|
|
156
|
+
deploymentMsgUpdateMode = false
|
|
157
|
+
deploymentMsgUpdate = undefined
|
|
158
|
+
}}
|
|
159
|
+
>
|
|
160
|
+
<X size={14} />
|
|
161
|
+
</Button>
|
|
162
|
+
</div>
|
|
163
|
+
{:else}
|
|
164
|
+
{#if selectedVersion.deployment_msg}
|
|
165
|
+
{selectedVersion.deployment_msg}
|
|
166
|
+
{:else}
|
|
167
|
+
Deployed {displayDate(selected.edited_at)} by {selected.edited_by}
|
|
168
|
+
{/if}
|
|
169
|
+
<button
|
|
170
|
+
on:click={() => {
|
|
171
|
+
deploymentMsgUpdate = selectedVersion?.deployment_msg
|
|
172
|
+
deploymentMsgUpdateMode = true
|
|
173
|
+
}}
|
|
174
|
+
title="Update commit message"
|
|
175
|
+
class="flex items-center px-1 rounded-sm hover:text-primary text-secondary h-5"
|
|
176
|
+
aria-label="Update commit message"
|
|
177
|
+
>
|
|
178
|
+
<Pencil size={14} />
|
|
179
|
+
</button>
|
|
180
|
+
{/if}
|
|
181
|
+
</span>
|
|
182
|
+
<div class="flex p-1 gap-2">
|
|
183
|
+
<Button
|
|
184
|
+
size="xs"
|
|
185
|
+
on:click={() =>
|
|
186
|
+
goto(`/flows/add?template_id=${selectedVersion?.id}&template=${path}`)}
|
|
187
|
+
>
|
|
188
|
+
Restore as fork
|
|
189
|
+
</Button>
|
|
190
|
+
<Button size="xs" on:click={() => restoreVersion(selected)}
|
|
191
|
+
>Redeploy with that version
|
|
192
|
+
</Button>
|
|
193
|
+
</div>
|
|
194
|
+
<FlowViewer flow={selected} />
|
|
195
|
+
</div>
|
|
196
|
+
{:else}
|
|
197
|
+
<Skeleton layout={[[40]]} />
|
|
198
|
+
{/if}
|
|
199
|
+
{:else}
|
|
200
|
+
<div class="text-sm p-2 text-tertiary"
|
|
201
|
+
>Select a deployment version to see its details</div
|
|
202
|
+
>
|
|
203
|
+
{/if}
|
|
204
|
+
</div>
|
|
205
|
+
</Pane>
|
|
206
|
+
</Splitpanes>
|
|
207
|
+
</DrawerContent>
|
|
208
|
+
</Drawer>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
path: string;
|
|
5
|
+
open?: (() => void) | undefined;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
keydown: KeyboardEvent;
|
|
9
|
+
historyRestore: CustomEvent<any>;
|
|
10
|
+
} & {
|
|
11
|
+
[evt: string]: CustomEvent<any>;
|
|
12
|
+
};
|
|
13
|
+
slots: {};
|
|
14
|
+
};
|
|
15
|
+
export type FlowHistoryProps = typeof __propDef.props;
|
|
16
|
+
export type FlowHistoryEvents = typeof __propDef.events;
|
|
17
|
+
export type FlowHistorySlots = typeof __propDef.slots;
|
|
18
|
+
export default class FlowHistory extends SvelteComponent<FlowHistoryProps, FlowHistoryEvents, FlowHistorySlots> {
|
|
19
|
+
get open(): () => void;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -39,7 +39,6 @@ let selected = 'early-stop';
|
|
|
39
39
|
<h3 class="mb-4"
|
|
40
40
|
>{value.branches.length} branch{value.branches.length > 1 ? 'es' : ''}</h3
|
|
41
41
|
>
|
|
42
|
-
<p>Add branches and steps directly on the graph.</p>
|
|
43
42
|
<div class="flex flex-col gap-y-4 py-2 w-full">
|
|
44
43
|
{#each value.branches as branch, i}
|
|
45
44
|
<div class="flex flex-row gap-x-4 w-full items-center">
|
|
@@ -58,6 +57,7 @@ let selected = 'early-stop';
|
|
|
58
57
|
</div>
|
|
59
58
|
{/each}
|
|
60
59
|
</div>
|
|
60
|
+
<p class="text-sm">Add branches and steps directly on the graph.</p>
|
|
61
61
|
<div class="mt-6 mb-2 text-sm font-bold">Run in parallel</div>
|
|
62
62
|
<Toggle
|
|
63
63
|
bind:checked={value.parallel}
|
|
@@ -41,7 +41,6 @@ let selected = 'early-stop';
|
|
|
41
41
|
<h3 class="my-4">
|
|
42
42
|
{value.branches.length + 1} branch{value.branches.length + 1 > 1 ? 'es' : ''}
|
|
43
43
|
</h3>
|
|
44
|
-
<p>Add branches and steps directly on the graph.</p>
|
|
45
44
|
<div class="py-2">
|
|
46
45
|
<div class="flex flex-row gap-2 text-sm p-2">
|
|
47
46
|
<Badge large={true} color="blue">Default branch</Badge>
|
|
@@ -77,6 +76,7 @@ let selected = 'early-stop';
|
|
|
77
76
|
</div>
|
|
78
77
|
{/each}
|
|
79
78
|
</div>
|
|
79
|
+
<p class="text-sm">Add branches and steps directly on the graph.</p>
|
|
80
80
|
</div>
|
|
81
81
|
</Pane>
|
|
82
82
|
{#if flowModule}
|
|
@@ -7,7 +7,7 @@ import PropPickerWrapper from '../propPicker/PropPickerWrapper.svelte';
|
|
|
7
7
|
import FlowModuleEarlyStop from './FlowModuleEarlyStop.svelte';
|
|
8
8
|
import FlowModuleSuspend from './FlowModuleSuspend.svelte';
|
|
9
9
|
// import FlowRetries from './FlowRetries.svelte'
|
|
10
|
-
import { Button, Drawer, Tab, TabContent, Tabs
|
|
10
|
+
import { Button, Drawer, Tab, TabContent, Tabs } from '../../common';
|
|
11
11
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
12
12
|
import { getStepPropPicker } from '../previousResults';
|
|
13
13
|
import { enterpriseLicense } from '../../../stores';
|
|
@@ -50,24 +50,29 @@ $: previewIterationArgs = $flowStateStore[mod.id]?.previewArgs ?? {};
|
|
|
50
50
|
<div class="h-full flex flex-col">
|
|
51
51
|
<FlowCard {noEditor} title="For loop">
|
|
52
52
|
<div slot="header" class="grow">
|
|
53
|
-
<
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
<Splitpanes horizontal class="!max-h-[calc(100%-48px)]">
|
|
57
|
-
<Pane size={60} minSize={20} class="p-4">
|
|
58
|
-
{#if !noEditor}
|
|
59
|
-
<Alert
|
|
60
|
-
type="info"
|
|
61
|
-
title="For loops"
|
|
62
|
-
documentationLink="https://www.windmill.dev/docs/flows/flow_loops"
|
|
63
|
-
class="mb-4"
|
|
64
|
-
size="xs"
|
|
65
|
-
>
|
|
53
|
+
<div class="my-2 flex flex-row gap-2 items-center">
|
|
54
|
+
<div>
|
|
55
|
+
<Tooltip documentationLink="https://www.windmill.dev/docs/flows/flow_loops">
|
|
66
56
|
Add steps inside the loop and specify an iterator expression that defines the sequence
|
|
67
57
|
over which your subsequent steps will iterate.
|
|
68
|
-
</
|
|
69
|
-
|
|
58
|
+
</Tooltip>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="grow">
|
|
61
|
+
<input bind:value={mod.summary} placeholder={'Summary'} />
|
|
62
|
+
</div>
|
|
63
|
+
<div class="justify-end">
|
|
64
|
+
<Button
|
|
65
|
+
on:click={() => (previewOpen = true)}
|
|
66
|
+
startIcon={{ icon: Play }}
|
|
67
|
+
color="dark"
|
|
68
|
+
size="sm">Test an iteration</Button
|
|
69
|
+
>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
70
73
|
|
|
74
|
+
<Splitpanes horizontal class="!max-h-[calc(100%-30px)]">
|
|
75
|
+
<Pane size={60} minSize={20} class="p-4">
|
|
71
76
|
{#if mod.value.type === 'forloopflow'}
|
|
72
77
|
<div class="flex flex-row gap-8 mt-2 mb-6">
|
|
73
78
|
<div>
|
|
@@ -108,12 +113,12 @@ $: previewIterationArgs = $flowStateStore[mod.id]?.previewArgs ?? {};
|
|
|
108
113
|
/>
|
|
109
114
|
</div>
|
|
110
115
|
</div>
|
|
111
|
-
|
|
112
116
|
<div class="my-2 flex flex-row gap-2 items-center">
|
|
113
117
|
<div class="text-sm font-bold whitespace-nowrap">
|
|
114
118
|
Iterator expression
|
|
115
119
|
<Tooltip documentationLink="https://www.windmill.dev/docs/flows/flow_loops">
|
|
116
|
-
|
|
120
|
+
The JavaScript expression that will be evaluated to get the list of items to iterate
|
|
121
|
+
over. Example : ["banana", "apple", flow_input.my_fruit].
|
|
117
122
|
</Tooltip>
|
|
118
123
|
</div>
|
|
119
124
|
{#if enableAi}
|
|
@@ -137,14 +142,6 @@ $: previewIterationArgs = $flowStateStore[mod.id]?.previewArgs ?? {};
|
|
|
137
142
|
pickableProperties={stepPropPicker.pickableProperties}
|
|
138
143
|
/>
|
|
139
144
|
{/if}
|
|
140
|
-
<div class="flex w-full justify-end">
|
|
141
|
-
<Button
|
|
142
|
-
on:click={() => (previewOpen = true)}
|
|
143
|
-
startIcon={{ icon: Play }}
|
|
144
|
-
color="dark"
|
|
145
|
-
size="sm">Test an iteration</Button
|
|
146
|
-
>
|
|
147
|
-
</div>
|
|
148
145
|
</div>
|
|
149
146
|
|
|
150
147
|
{#if mod.value.iterator.type == 'javascript'}
|
|
@@ -17,7 +17,7 @@ import FlowModuleSuspend from './FlowModuleSuspend.svelte';
|
|
|
17
17
|
import FlowModuleCache from './FlowModuleCache.svelte';
|
|
18
18
|
import FlowModuleDeleteAfterUse from './FlowModuleDeleteAfterUse.svelte';
|
|
19
19
|
import FlowRetries from './FlowRetries.svelte';
|
|
20
|
-
import { getStepPropPicker } from '../previousResults';
|
|
20
|
+
import { getFailureStepPropPicker, getStepPropPicker } from '../previousResults';
|
|
21
21
|
import { deepEqual } from 'fast-equals';
|
|
22
22
|
import Section from '../../Section.svelte';
|
|
23
23
|
import Button from '../../common/button/Button.svelte';
|
|
@@ -25,7 +25,6 @@ import Alert from '../../common/alert/Alert.svelte';
|
|
|
25
25
|
import FlowModuleSleep from './FlowModuleSleep.svelte';
|
|
26
26
|
import FlowPathViewer from './FlowPathViewer.svelte';
|
|
27
27
|
import InputTransformSchemaForm from '../../InputTransformSchemaForm.svelte';
|
|
28
|
-
import { schemaToObject } from '../../../schema';
|
|
29
28
|
import FlowModuleMock from './FlowModuleMock.svelte';
|
|
30
29
|
import Tooltip from '../../Tooltip.svelte';
|
|
31
30
|
import { SecondsInput } from '../../common';
|
|
@@ -80,22 +79,7 @@ function setCopilotModuleEditor() {
|
|
|
80
79
|
}
|
|
81
80
|
$: editor !== undefined && setCopilotModuleEditor();
|
|
82
81
|
$: stepPropPicker = failureModule
|
|
83
|
-
?
|
|
84
|
-
pickableProperties: {
|
|
85
|
-
flow_input: schemaToObject($flowStore.schema, $previewArgs),
|
|
86
|
-
priorIds: {},
|
|
87
|
-
previousId: undefined,
|
|
88
|
-
hasResume: false
|
|
89
|
-
},
|
|
90
|
-
extraLib: `
|
|
91
|
-
declare const error: {
|
|
92
|
-
message: string
|
|
93
|
-
name: string
|
|
94
|
-
stack: string
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
`
|
|
98
|
-
}
|
|
82
|
+
? getFailureStepPropPicker($flowStateStore, $flowStore, $previewArgs)
|
|
99
83
|
: getStepPropPicker($flowStateStore, parentModule, previousModule, flowModule.id, $flowStore, $previewArgs, false);
|
|
100
84
|
function onKeyDown(event) {
|
|
101
85
|
if ((event.ctrlKey || event.metaKey) && event.key == 'Enter') {
|
|
@@ -5,9 +5,11 @@ import Tooltip from '../../Tooltip.svelte';
|
|
|
5
5
|
import { getContext } from 'svelte';
|
|
6
6
|
import { NEVER_TESTED_THIS_FAR } from '../models';
|
|
7
7
|
import Section from '../../Section.svelte';
|
|
8
|
-
|
|
8
|
+
import { getStepPropPicker } from '../previousResults';
|
|
9
|
+
const { flowStateStore, flowStore, previewArgs } = getContext('FlowEditorContext');
|
|
9
10
|
export let flowModule;
|
|
10
11
|
let editor = undefined;
|
|
12
|
+
$: stepPropPicker = getStepPropPicker($flowStateStore, undefined, undefined, flowModule.id, $flowStore, $previewArgs, false);
|
|
11
13
|
$: isStopAfterIfEnabled = Boolean(flowModule.stop_after_if);
|
|
12
14
|
$: result = $flowStateStore[flowModule.id]?.previewResult ?? NEVER_TESTED_THIS_FAR;
|
|
13
15
|
</script>
|
|
@@ -45,16 +47,19 @@ $: result = $flowStateStore[flowModule.id]?.previewResult ?? NEVER_TESTED_THIS_F
|
|
|
45
47
|
>
|
|
46
48
|
{#if flowModule.stop_after_if}
|
|
47
49
|
<Toggle
|
|
50
|
+
size="xs"
|
|
48
51
|
bind:checked={flowModule.stop_after_if.skip_if_stopped}
|
|
49
52
|
options={{
|
|
50
53
|
right: 'Label flow as "skipped" if stopped'
|
|
51
54
|
}}
|
|
52
55
|
/>
|
|
53
|
-
<span class="text-xs font-bold">Stop condition expression</span>
|
|
56
|
+
<span class="mt-2 text-xs font-bold">Stop condition expression</span>
|
|
54
57
|
<div class="border w-full">
|
|
55
58
|
<PropPickerWrapper
|
|
56
|
-
|
|
59
|
+
notSelectable
|
|
60
|
+
flow_input={stepPropPicker.pickableProperties.flow_input}
|
|
57
61
|
pickableProperties={undefined}
|
|
62
|
+
{result}
|
|
58
63
|
on:select={({ detail }) => {
|
|
59
64
|
editor?.insertAtCursor(detail)
|
|
60
65
|
editor?.focus()
|
|
@@ -72,10 +77,11 @@ $: result = $flowStateStore[flowModule.id]?.previewResult ?? NEVER_TESTED_THIS_F
|
|
|
72
77
|
{:else}
|
|
73
78
|
<Toggle
|
|
74
79
|
disabled
|
|
80
|
+
size="xs"
|
|
75
81
|
options={{
|
|
76
82
|
right: 'Label flow as "skipped" if stopped'
|
|
77
83
|
}}
|
|
78
|
-
/> <span class="text-xs font-bold">Stop condition expression</span>
|
|
84
|
+
/> <span class="mt-2 text-xs font-bold">Stop condition expression</span>
|
|
79
85
|
<textarea disabled rows="3" class="min-h-[80px]" />
|
|
80
86
|
{/if}
|
|
81
87
|
</div>
|
|
@@ -43,7 +43,7 @@ $: moduleRetry = module.retry?.constant || module.retry?.exponential;
|
|
|
43
43
|
{#if module.cache_ttl != undefined}
|
|
44
44
|
<Popover
|
|
45
45
|
placement="bottom"
|
|
46
|
-
class="center-center rounded p-2
|
|
46
|
+
class="center-center rounded p-2 bg-blue-100 text-blue-800 border border-blue-300 hover:bg-blue-200 dark:bg-frost-700 dark:text-frost-100 dark:border-frost-600"
|
|
47
47
|
on:click={() => dispatch('toggleCache')}
|
|
48
48
|
>
|
|
49
49
|
<Database size={14} />
|
|
@@ -73,8 +73,7 @@ $: moduleRetry = module.retry?.constant || module.retry?.exponential;
|
|
|
73
73
|
{#if module.sleep}
|
|
74
74
|
<Popover
|
|
75
75
|
placement="bottom"
|
|
76
|
-
class="center-center rounded p-
|
|
77
|
-
dark:bg-frost-700 dark:text-frost-100 dark:border-frost-600"
|
|
76
|
+
class="center-center rounded p-2 bg-blue-100 text-blue-800 border border-blue-300 hover:bg-blue-200 dark:bg-frost-700 dark:text-frost-100 dark:border-frost-600"
|
|
78
77
|
on:click={() => dispatch('toggleSleep')}
|
|
79
78
|
>
|
|
80
79
|
<Bed size={14} />
|
|
@@ -84,7 +83,7 @@ $: moduleRetry = module.retry?.constant || module.retry?.exponential;
|
|
|
84
83
|
{#if module.mock?.enabled}
|
|
85
84
|
<Popover
|
|
86
85
|
placement="bottom"
|
|
87
|
-
class="center-center rounded p-2 bg-blue-100
|
|
86
|
+
class="center-center rounded p-2 bg-blue-100 text-blue-800 border border-blue-300 hover:bg-blue-200 dark:bg-frost-700 dark:text-frost-100 dark:border-frost-600"
|
|
88
87
|
on:click={() => dispatch('toggleMock')}
|
|
89
88
|
>
|
|
90
89
|
<Voicemail size={14} />
|
|
@@ -36,7 +36,7 @@ function toggleShowAll() {
|
|
|
36
36
|
|
|
37
37
|
<div class="flex flex-col flex-1 h-full overflow-auto p-2">
|
|
38
38
|
{#if showDate && date}
|
|
39
|
-
<span class="text-xs text-tertiary mb-4"><TimeAgo {date} /></span>
|
|
39
|
+
<span class="text-xs text-tertiary mb-4"><TimeAgo agoOnlyIfRecent withDate {date} /></span>
|
|
40
40
|
{/if}
|
|
41
41
|
{#if notFound}
|
|
42
42
|
<div class="text-red-400">script not found at {path} in workspace {$workspaceStore}</div>
|
|
@@ -42,10 +42,10 @@ export let text = 'Approval Help';
|
|
|
42
42
|
code={`import * as wmill from "npm:windmill-client@^1.158.2"
|
|
43
43
|
|
|
44
44
|
export async function main() {
|
|
45
|
-
const
|
|
45
|
+
const urls = await wmill.getResumeUrls("approver1")
|
|
46
46
|
|
|
47
47
|
return {
|
|
48
|
-
resume:
|
|
48
|
+
resume: urls['resume'],
|
|
49
49
|
default_args: {}, // optional, see below
|
|
50
50
|
enums: {} // optional, see below
|
|
51
51
|
}
|
|
@@ -58,10 +58,10 @@ export async function main() {
|
|
|
58
58
|
code={`import * as wmill from "windmill-client"
|
|
59
59
|
|
|
60
60
|
export async function main() {
|
|
61
|
-
const
|
|
61
|
+
const urls = await wmill.getResumeUrls("approver1")
|
|
62
62
|
|
|
63
63
|
return {
|
|
64
|
-
resume:
|
|
64
|
+
resume: urls['resume'],
|
|
65
65
|
default_args: {}, // optional, see below
|
|
66
66
|
enums: {} // optional, see below
|
|
67
67
|
}
|
|
@@ -97,7 +97,7 @@ import * as wmill from "npm:windmill-client@^1.158.2"
|
|
|
97
97
|
|
|
98
98
|
export async function main() {
|
|
99
99
|
// if no argument is passed, if user is logged in, it will use the user's username
|
|
100
|
-
const
|
|
100
|
+
const urls = await wmill.getResumeUrls("approver1")
|
|
101
101
|
|
|
102
102
|
// send the resumeUrls to the recipient or see Prompt section above
|
|
103
103
|
|
|
@@ -112,7 +112,7 @@ export async function main() {
|
|
|
112
112
|
</Section>
|
|
113
113
|
<Section label="Dynamics enums">
|
|
114
114
|
As one of the return key of this step, return an object `enums` that contains the default
|
|
115
|
-
|
|
115
|
+
options of the form arguments. e.g:
|
|
116
116
|
<HighlightCode
|
|
117
117
|
language={'deno'}
|
|
118
118
|
code={`
|
|
@@ -123,7 +123,7 @@ import * as wmill from "npm:windmill-client@^1.158.2"
|
|
|
123
123
|
|
|
124
124
|
export async function main() {
|
|
125
125
|
// if no argument is passed, if user is logged in, it will use the user's username
|
|
126
|
-
const
|
|
126
|
+
const url = await wmill.getResumeUrls("approver1")
|
|
127
127
|
|
|
128
128
|
// send the resumeUrls to the recipient or see Prompt section above
|
|
129
129
|
|
|
@@ -9,7 +9,7 @@ export async function copyFirstStepSchema(flowState, flowStore) {
|
|
|
9
9
|
flowStore.update((flow) => {
|
|
10
10
|
const firstModuleId = flow.value.modules[0]?.id;
|
|
11
11
|
if (flowState[firstModuleId] && firstModuleId) {
|
|
12
|
-
flow.schema = flowState[firstModuleId].schema;
|
|
12
|
+
flow.schema = structuredClone(flowState[firstModuleId].schema);
|
|
13
13
|
const v = flow.value.modules[0].value;
|
|
14
14
|
if (v.type == 'rawscript' || v.type == 'script') {
|
|
15
15
|
Object.keys(v.input_transforms ?? {}).forEach((key) => {
|
|
@@ -2,26 +2,13 @@
|
|
|
2
2
|
import DrawerContent from '../../common/drawer/DrawerContent.svelte';
|
|
3
3
|
import FlowViewer from '../../FlowViewer.svelte';
|
|
4
4
|
import { getContext } from 'svelte';
|
|
5
|
-
import { Button } from '../../common';
|
|
6
5
|
import { cleanInputs } from '../utils';
|
|
7
|
-
import { FileJson } from 'lucide-svelte';
|
|
8
6
|
const { flowStore } = getContext('FlowEditorContext');
|
|
9
|
-
let
|
|
7
|
+
export let drawer;
|
|
10
8
|
</script>
|
|
11
9
|
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
size="xs"
|
|
15
|
-
variant="border"
|
|
16
|
-
color="light"
|
|
17
|
-
on:click={() => jsonViewerDrawer.toggleDrawer()}
|
|
18
|
-
startIcon={{ icon: FileJson }}
|
|
19
|
-
>
|
|
20
|
-
Export
|
|
21
|
-
</Button>
|
|
22
|
-
|
|
23
|
-
<Drawer bind:this={jsonViewerDrawer} size="800px">
|
|
24
|
-
<DrawerContent title="OpenFlow" on:close={() => jsonViewerDrawer.toggleDrawer()}>
|
|
10
|
+
<Drawer bind:this={drawer} size="800px">
|
|
11
|
+
<DrawerContent title="OpenFlow" on:close={() => drawer?.toggleDrawer()}>
|
|
25
12
|
{#if $flowStore}
|
|
26
13
|
<FlowViewer flow={cleanInputs($flowStore)} tab="raw" />
|
|
27
14
|
{/if}
|