windmill-components 1.21.0 → 1.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/AppConnect.svelte +93 -47
- package/components/AppConnect.svelte.d.ts +2 -2
- package/components/ArgInfo.svelte +0 -5
- package/components/ArgInput.svelte +91 -66
- package/components/ArgInput.svelte.d.ts +8 -3
- package/components/Button.svelte +4 -4
- package/components/CenteredPage.svelte +1 -1
- package/components/CollapseLink.svelte +12 -0
- package/components/CollapseLink.svelte.d.ts +19 -0
- package/components/CronInput.svelte +84 -0
- package/components/CronInput.svelte.d.ts +18 -0
- package/components/DisplayResult.svelte +23 -7
- package/components/Editor.svelte +144 -61
- package/components/Editor.svelte.d.ts +2 -0
- package/components/EditorBar.svelte +215 -0
- package/components/EditorBar.svelte.d.ts +23 -0
- package/components/FlowBuilder.svelte +151 -79
- package/components/FlowEditor.svelte +77 -130
- package/components/FlowEditor.svelte.d.ts +3 -2
- package/components/FlowJobResult.svelte +1 -1
- package/components/FlowPreview.svelte +18 -24
- package/components/FlowPreviewContent.svelte +68 -0
- package/components/FlowPreviewContent.svelte.d.ts +21 -0
- package/components/FlowStatusViewer.svelte +85 -37
- package/components/FlowStatusViewer.svelte.d.ts +3 -2
- package/components/FlowViewer.svelte +100 -26
- package/components/FlowViewer.svelte.d.ts +8 -3
- package/components/IconedResourceType.svelte +30 -5
- package/components/InputTransformForm.svelte +209 -0
- package/components/InputTransformForm.svelte.d.ts +26 -0
- package/components/InviteGlobalUser.svelte +2 -2
- package/components/InviteUser.svelte +2 -2
- package/components/JobStatus.svelte +32 -25
- package/components/Modal.svelte +47 -43
- package/components/ModuleStep.svelte +100 -54
- package/components/ObjectResourceInput.svelte +58 -38
- package/components/ObjectTypeNarrowing.svelte +4 -19
- package/components/Path.svelte +3 -3
- package/components/Path.svelte.d.ts +1 -1
- package/components/RadioButton.svelte +11 -96
- package/components/RadioButton.svelte.d.ts +4 -2
- package/components/ResourceEditor.svelte +5 -6
- package/components/ResourceEditor.svelte.d.ts +2 -2
- package/components/ResourcePicker.svelte +25 -2
- package/components/ResourcePicker.svelte.d.ts +3 -0
- package/components/ResourceTypePicker.svelte +17 -29
- package/components/ResourceTypePicker.svelte.d.ts +1 -0
- package/components/RunForm.svelte +14 -15
- package/components/RunForm.svelte.d.ts +1 -1
- package/components/SchemaEditor.svelte +87 -71
- package/components/SchemaEditor.svelte.d.ts +2 -0
- package/components/SchemaEditorProperty.svelte +11 -0
- package/components/SchemaEditorProperty.svelte.d.ts +17 -0
- package/components/SchemaForm.svelte +21 -127
- package/components/SchemaForm.svelte.d.ts +3 -4
- package/components/SchemaModal.svelte +20 -33
- package/components/SchemaModal.svelte.d.ts +1 -1
- package/components/SchemaViewer.svelte +5 -7
- package/components/ScriptBuilder.svelte +41 -44
- package/components/ScriptEditor.svelte +76 -248
- package/components/ScriptPicker.svelte +13 -26
- package/components/ScriptPicker.svelte.d.ts +1 -1
- package/components/ScriptSchema.svelte +0 -5
- package/components/ShareModal.svelte +1 -1
- package/components/SharedBadge.svelte +12 -10
- package/components/StringTypeNarrowing.svelte +8 -4
- package/components/StringTypeNarrowing.svelte.d.ts +1 -0
- package/components/TableCustom.svelte +7 -9
- package/components/TableSimple.svelte +1 -1
- package/components/Toggle.svelte +8 -10
- package/components/Toggle.svelte.d.ts +5 -11
- package/components/Tooltip.svelte +56 -82
- package/components/Tooltip.svelte.d.ts +1 -5
- package/components/VariableEditor.svelte +21 -6
- package/components/flows/CopyFirstStepSchema.svelte +7 -5
- package/components/flows/DynamicInputHelpBox.svelte +1 -1
- package/components/flows/FlowBox.svelte +3 -0
- package/components/flows/FlowBox.svelte.d.ts +23 -0
- package/components/flows/FlowBoxHeader.svelte +9 -0
- package/components/flows/FlowBoxHeader.svelte.d.ts +18 -0
- package/components/flows/FlowInput.svelte +20 -0
- package/components/flows/FlowInput.svelte.d.ts +14 -0
- package/components/flows/FlowInputs.svelte +7 -3
- package/components/flows/FlowModuleHeader.svelte +44 -41
- package/components/flows/FlowModuleHeader.svelte.d.ts +1 -1
- package/components/flows/FlowSettings.svelte +174 -0
- package/components/flows/FlowSettings.svelte.d.ts +21 -0
- package/components/flows/flowStore.d.ts +5 -2
- package/components/flows/flowStore.js +65 -9
- package/components/flows/pickers/FlowScriptPicker.svelte +6 -1
- package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -0
- package/components/flows/utils.d.ts +11 -11
- package/components/flows/utils.js +103 -63
- package/components/icons/AirtableIcon.svelte +17 -0
- package/components/icons/AirtableIcon.svelte.d.ts +17 -0
- package/components/icons/GCloudIcon.svelte +16 -0
- package/components/icons/GCloudIcon.svelte.d.ts +17 -0
- package/components/icons/GItlabIcon.svelte +16 -0
- package/components/icons/GItlabIcon.svelte.d.ts +17 -0
- package/components/icons/GSheetsIcon.svelte +16 -0
- package/components/icons/GSheetsIcon.svelte.d.ts +17 -0
- package/components/icons/GcalIcon.svelte +16 -0
- package/components/icons/GcalIcon.svelte.d.ts +17 -0
- package/components/icons/GdriveIcon.svelte +16 -0
- package/components/icons/GdriveIcon.svelte.d.ts +17 -0
- package/components/icons/GmailIcon.svelte +16 -0
- package/components/icons/GmailIcon.svelte.d.ts +17 -0
- package/components/icons/PostgresIcon.svelte +8 -49
- package/components/icons/Slack.svelte +9 -18
- package/components/icons/TogglIcon.svelte +59 -0
- package/components/icons/TogglIcon.svelte.d.ts +17 -0
- package/components/propertyPicker/ObjectViewer.svelte +35 -37
- package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
- package/components/propertyPicker/OverlayPropertyPicker.svelte +53 -53
- package/components/propertyPicker/OverlayPropertyPicker.svelte.d.ts +5 -2
- package/components/propertyPicker/PropPicker.svelte +13 -15
- package/components/propertyPicker/PropPicker.svelte.d.ts +1 -1
- package/components/propertyPicker/WarningMessage.svelte +14 -41
- package/components/propertyPicker/WarningMessage.svelte.d.ts +11 -8
- package/components/propertyPicker/utils.d.ts +1 -0
- package/components/propertyPicker/utils.js +25 -0
- package/gen/core/OpenAPI.js +1 -1
- package/gen/index.d.ts +12 -2
- package/gen/index.js +1 -2
- package/gen/models/CompletedJob.d.ts +1 -1
- package/gen/models/Flow.d.ts +3 -13
- package/gen/models/FlowMetadata.d.ts +9 -0
- package/gen/models/FlowMetadata.js +4 -0
- package/gen/models/FlowModuleValue.d.ts +5 -22
- package/gen/models/FlowModuleValue.js +1 -15
- package/gen/models/ForloopFlow.d.ts +8 -0
- package/gen/models/ForloopFlow.js +4 -0
- package/gen/models/InputTransform.d.ts +3 -12
- package/gen/models/InputTransform.js +1 -8
- package/gen/models/JavascriptTransform.d.ts +4 -0
- package/gen/models/JavascriptTransform.js +4 -0
- package/gen/models/MainArgSignature.d.ts +1 -1
- package/gen/models/NewSchedule.d.ts +1 -0
- package/gen/models/OpenFlow.d.ts +7 -0
- package/gen/models/OpenFlow.js +4 -0
- package/gen/models/OpenFlowWPath.d.ts +4 -0
- package/gen/models/OpenFlowWPath.js +4 -0
- package/gen/models/PathFlow.d.ts +4 -0
- package/gen/models/PathFlow.js +4 -0
- package/gen/models/PathScript.d.ts +4 -0
- package/gen/models/PathScript.js +4 -0
- package/gen/models/RawScript.d.ts +12 -0
- package/gen/models/RawScript.js +11 -0
- package/gen/models/Schedule.d.ts +1 -1
- package/gen/models/StaticTransform.d.ts +4 -0
- package/gen/models/StaticTransform.js +4 -0
- package/gen/models/TokenResponse.d.ts +3 -3
- package/gen/models/Usage.d.ts +5 -0
- package/gen/models/Usage.js +4 -0
- package/gen/models/User.d.ts +2 -0
- package/gen/schemas/$AuditLog.d.ts +32 -0
- package/gen/schemas/$AuditLog.js +35 -0
- package/gen/schemas/$CompletedJob.d.ts +98 -0
- package/gen/schemas/$CompletedJob.js +103 -0
- package/gen/schemas/$ContextualVariable.d.ts +16 -0
- package/gen/schemas/$ContextualVariable.js +19 -0
- package/gen/schemas/$CreateResource.d.ts +22 -0
- package/gen/schemas/$CreateResource.js +25 -0
- package/gen/schemas/$CreateVariable.d.ts +26 -0
- package/gen/schemas/$CreateVariable.js +29 -0
- package/gen/schemas/$CreateWorkspace.d.ts +20 -0
- package/gen/schemas/$CreateWorkspace.js +23 -0
- package/gen/schemas/$EditResource.d.ts +13 -0
- package/gen/schemas/$EditResource.js +16 -0
- package/gen/schemas/$EditResourceType.d.ts +10 -0
- package/gen/schemas/$EditResourceType.js +13 -0
- package/gen/schemas/$EditSchedule.d.ts +20 -0
- package/gen/schemas/$EditSchedule.js +23 -0
- package/gen/schemas/$EditVariable.d.ts +16 -0
- package/gen/schemas/$EditVariable.js +19 -0
- package/gen/schemas/$EditWorkspaceUser.d.ts +7 -0
- package/gen/schemas/$EditWorkspaceUser.js +10 -0
- package/gen/schemas/$Flow.d.ts +23 -0
- package/gen/schemas/$Flow.js +26 -0
- package/gen/schemas/$FlowMetadata.d.ts +31 -0
- package/gen/schemas/$FlowMetadata.js +34 -0
- package/gen/schemas/$FlowPreview.d.ts +80 -0
- package/gen/schemas/$FlowPreview.js +83 -0
- package/gen/schemas/$GlobalUserInfo.d.ts +26 -0
- package/gen/schemas/$GlobalUserInfo.js +29 -0
- package/gen/schemas/$Group.d.ts +23 -0
- package/gen/schemas/$Group.js +26 -0
- package/gen/schemas/$Job.d.ts +17 -0
- package/gen/schemas/$Job.js +20 -0
- package/gen/schemas/$ListableVariable.d.ts +35 -0
- package/gen/schemas/$ListableVariable.js +38 -0
- package/gen/schemas/$Login.d.ts +12 -0
- package/gen/schemas/$Login.js +15 -0
- package/gen/schemas/$MainArgSignature.d.ts +50 -0
- package/gen/schemas/$MainArgSignature.js +53 -0
- package/gen/schemas/$NewSchedule.d.ts +30 -0
- package/gen/schemas/$NewSchedule.js +33 -0
- package/gen/schemas/$NewToken.d.ts +11 -0
- package/gen/schemas/$NewToken.js +14 -0
- package/gen/schemas/$NewUser.d.ts +16 -0
- package/gen/schemas/$NewUser.js +19 -0
- package/gen/schemas/$Preview.d.ts +19 -0
- package/gen/schemas/$Preview.js +22 -0
- package/gen/schemas/$QueuedJob.d.ts +139 -0
- package/gen/schemas/$QueuedJob.js +144 -0
- package/gen/schemas/$Resource.d.ts +31 -0
- package/gen/schemas/$Resource.js +34 -0
- package/gen/schemas/$ResourceType.d.ts +17 -0
- package/gen/schemas/$ResourceType.js +20 -0
- package/gen/schemas/$Schedule.d.ts +47 -0
- package/gen/schemas/$Schedule.js +50 -0
- package/gen/schemas/$Script.d.ts +77 -0
- package/gen/schemas/$Script.js +80 -0
- package/gen/schemas/$ScriptArgs.d.ts +6 -0
- package/gen/schemas/$ScriptArgs.js +9 -0
- package/gen/schemas/$SlackToken.d.ts +24 -0
- package/gen/schemas/$SlackToken.js +27 -0
- package/gen/schemas/$TokenResponse.d.ts +23 -0
- package/gen/schemas/$TokenResponse.js +26 -0
- package/gen/schemas/$TruncatedToken.d.ts +25 -0
- package/gen/schemas/$TruncatedToken.js +28 -0
- package/gen/schemas/$Usage.d.ts +13 -0
- package/gen/schemas/$Usage.js +16 -0
- package/gen/schemas/$User.d.ts +42 -0
- package/gen/schemas/$User.js +45 -0
- package/gen/schemas/$UserWorkspaceList.d.ts +28 -0
- package/gen/schemas/$UserWorkspaceList.js +31 -0
- package/gen/schemas/$WorkerPing.d.ts +31 -0
- package/gen/schemas/$WorkerPing.js +34 -0
- package/gen/schemas/$Workspace.d.ts +19 -0
- package/gen/schemas/$Workspace.js +22 -0
- package/gen/schemas/$WorkspaceInvite.d.ts +16 -0
- package/gen/schemas/$WorkspaceInvite.js +19 -0
- package/gen/services/FlowService.d.ts +30 -16
- package/gen/services/FlowService.js +25 -0
- package/gen/services/JobService.d.ts +1 -1
- package/gen/services/ScriptService.d.ts +13 -8
- package/gen/services/WorkspaceService.d.ts +1 -1
- package/gen/services/WorkspaceService.js +1 -1
- package/infer.js +8 -1
- package/package.json +87 -15
- package/script_helpers.d.ts +1 -1
- package/script_helpers.js +7 -6
- package/sql.d.ts +89 -0
- package/sql.js +817 -0
- package/stores.d.ts +1 -1
- package/stores.js +0 -6
- package/utils.d.ts +26 -6
- package/utils.js +94 -7
- package/components/RadioButtonV2.svelte +0 -38
- package/components/RadioButtonV2.svelte.d.ts +0 -20
package/components/Modal.svelte
CHANGED
|
@@ -3,16 +3,18 @@ export let open = false;
|
|
|
3
3
|
export let z = 'z-30';
|
|
4
4
|
const dispatch = createEventDispatcher();
|
|
5
5
|
export function closeModal() {
|
|
6
|
+
document.body.style.overflow = 'auto';
|
|
6
7
|
open = false;
|
|
7
8
|
dispatch('close');
|
|
8
9
|
}
|
|
9
10
|
export function openModal() {
|
|
11
|
+
document.body.style.overflow = 'hidden';
|
|
10
12
|
open = true;
|
|
11
13
|
dispatch('open');
|
|
12
14
|
}
|
|
13
15
|
function handleKeyUp(event) {
|
|
14
|
-
const key = event.key
|
|
15
|
-
if (key ===
|
|
16
|
+
const key = event.key;
|
|
17
|
+
if (key === 'Escape' || key === 'Esc') {
|
|
16
18
|
if (open) {
|
|
17
19
|
event.preventDefault();
|
|
18
20
|
closeModal();
|
|
@@ -23,45 +25,18 @@ function handleKeyUp(event) {
|
|
|
23
25
|
|
|
24
26
|
<svelte:window on:keyup={handleKeyUp} />
|
|
25
27
|
|
|
26
|
-
|
|
28
|
+
{#if open}
|
|
29
|
+
<div class="blurred-background" />
|
|
27
30
|
|
|
28
|
-
<div class="fixed top-0 w-screen h-screen
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
<button
|
|
35
|
-
on:click={() => {
|
|
36
|
-
open = false
|
|
37
|
-
closeModal()
|
|
38
|
-
}}
|
|
39
|
-
>
|
|
40
|
-
<svg
|
|
41
|
-
class="w-6 h-6"
|
|
42
|
-
fill="none"
|
|
43
|
-
stroke="currentColor"
|
|
44
|
-
viewBox="0 0 24 24"
|
|
45
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
46
|
-
>
|
|
47
|
-
<path
|
|
48
|
-
stroke-linecap="round"
|
|
49
|
-
stroke-linejoin="round"
|
|
50
|
-
stroke-width="2"
|
|
51
|
-
d="M6 18L18 6M6 6l12 12"
|
|
52
|
-
/>
|
|
53
|
-
</svg>
|
|
54
|
-
</button>
|
|
55
|
-
<p class="font-semibold text-gray-800"><slot name="title" /></p>
|
|
56
|
-
<div />
|
|
57
|
-
</div>
|
|
58
|
-
<div class="flex flex-col bg-gray-50 pt-3 px-6 grow overflow-y-auto">
|
|
59
|
-
<slot name="content" />
|
|
60
|
-
</div>
|
|
61
|
-
<div class="flex flex-col bg-white border-gray-200 p-2">
|
|
62
|
-
<div class="flex flex-row justify-between p-2 ">
|
|
31
|
+
<div class="fixed top-0 w-screen h-screen {z}">
|
|
32
|
+
<div
|
|
33
|
+
class="fixed right-0 top-0 flex flex-col w-3/4 sm:w-2/3 lg:w-1/2 h-screen border border-gray-300 shadow-xl"
|
|
34
|
+
>
|
|
35
|
+
{#if open}
|
|
36
|
+
<div class="flex flex-row justify-between p-2 bg-white border-b border-gray-200">
|
|
63
37
|
<button
|
|
64
38
|
on:click={() => {
|
|
39
|
+
open = false
|
|
65
40
|
closeModal()
|
|
66
41
|
}}
|
|
67
42
|
>
|
|
@@ -80,15 +55,44 @@ function handleKeyUp(event) {
|
|
|
80
55
|
/>
|
|
81
56
|
</svg>
|
|
82
57
|
</button>
|
|
83
|
-
<
|
|
58
|
+
<p class="font-semibold text-gray-800"><slot name="title" /></p>
|
|
59
|
+
<div />
|
|
60
|
+
</div>
|
|
61
|
+
<div class="flex flex-col bg-gray-50 pt-3 px-6 grow overflow-y-auto">
|
|
62
|
+
<slot name="content" />
|
|
63
|
+
</div>
|
|
64
|
+
<div class="flex flex-col bg-white border-gray-200 p-2">
|
|
65
|
+
<div class="flex flex-row justify-between p-2 ">
|
|
66
|
+
<button
|
|
67
|
+
on:click={() => {
|
|
68
|
+
closeModal()
|
|
69
|
+
}}
|
|
70
|
+
>
|
|
71
|
+
<svg
|
|
72
|
+
class="w-6 h-6"
|
|
73
|
+
fill="none"
|
|
74
|
+
stroke="currentColor"
|
|
75
|
+
viewBox="0 0 24 24"
|
|
76
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
77
|
+
>
|
|
78
|
+
<path
|
|
79
|
+
stroke-linecap="round"
|
|
80
|
+
stroke-linejoin="round"
|
|
81
|
+
stroke-width="2"
|
|
82
|
+
d="M6 18L18 6M6 6l12 12"
|
|
83
|
+
/>
|
|
84
|
+
</svg>
|
|
85
|
+
</button>
|
|
86
|
+
<span class="mr-4"><slot name="submission"> </slot></span>
|
|
87
|
+
</div>
|
|
84
88
|
</div>
|
|
85
|
-
|
|
86
|
-
|
|
89
|
+
{/if}
|
|
90
|
+
</div>
|
|
87
91
|
</div>
|
|
88
|
-
|
|
92
|
+
{/if}
|
|
89
93
|
|
|
90
94
|
<style>
|
|
91
95
|
.blurred-background {
|
|
92
96
|
/* @apply absolute sm:top-6 lg:top-8 left-28 sm:left-40 md:left-48; */ /* If we wanted to make the navbars visible */ position: fixed; top: 0px; left: 0px; --tw-bg-opacity: 1; background-color: rgb(156 163 175 / var(--tw-bg-opacity)); opacity: 0.75; width: 100vw; height: 100vh;
|
|
93
|
-
z-index:
|
|
97
|
+
z-index: 10;
|
|
94
98
|
}</style>
|
|
@@ -1,70 +1,110 @@
|
|
|
1
|
-
<script>import {
|
|
2
|
-
import {
|
|
3
|
-
import { buildExtraLib, objectToTsType,
|
|
4
|
-
import {
|
|
1
|
+
<script>import { RawScript } from '../gen';
|
|
2
|
+
import { previewResults } from '../stores';
|
|
3
|
+
import { buildExtraLib, objectToTsType, schemaToTsType } from '../utils';
|
|
4
|
+
import { faChevronDown, faChevronUp, faPlus } from '@fortawesome/free-solid-svg-icons';
|
|
5
5
|
import Icon from 'svelte-awesome';
|
|
6
6
|
import Editor from './Editor.svelte';
|
|
7
|
+
import EditorBar from './EditorBar.svelte';
|
|
7
8
|
import FlowPreview from './FlowPreview.svelte';
|
|
9
|
+
import FlowBox from './flows/FlowBox.svelte';
|
|
8
10
|
import FlowInputs from './flows/FlowInputs.svelte';
|
|
9
11
|
import FlowModuleHeader from './flows/FlowModuleHeader.svelte';
|
|
10
|
-
import { createInlineScriptModule, flowStore, loadSchema, pickScript, schemasStore } from './flows/flowStore';
|
|
12
|
+
import { addModule, createInlineScriptModule, flowStore, loadSchema, pickScript, schemasStore } from './flows/flowStore';
|
|
13
|
+
import { getPickableProperties, jobsToResults } from './flows/utils';
|
|
11
14
|
import SchemaForm from './SchemaForm.svelte';
|
|
15
|
+
import Tooltip from './Tooltip.svelte';
|
|
12
16
|
export let open;
|
|
13
17
|
export let mode;
|
|
14
18
|
export let i;
|
|
15
19
|
export let mod;
|
|
16
20
|
export let args = {};
|
|
21
|
+
let editor;
|
|
22
|
+
let websocketAlive = { pyright: false, black: false, deno: false };
|
|
23
|
+
let pickableProperties = undefined;
|
|
24
|
+
let bigEditor = false;
|
|
17
25
|
$: schema = $schemasStore[i];
|
|
18
|
-
$: shouldPick = mod.value.path === '' && mod.value
|
|
19
|
-
$:
|
|
20
|
-
$: extraLib = buildExtraLib(i === 0 ? schemaToTsType($flowStore?.schema) : objectToTsType($previewResults[i]));
|
|
26
|
+
$: shouldPick = 'path' in mod.value && mod.value.path === '' && !('language' in mod.value);
|
|
27
|
+
$: pickableProperties = getPickableProperties($flowStore?.schema, args, $previewResults, mode, i);
|
|
28
|
+
$: extraLib = buildExtraLib(schemaToTsType($flowStore?.schema), i === 0 ? schemaToTsType($flowStore?.schema) : objectToTsType($previewResults[i]));
|
|
29
|
+
const isTrigger = mode === 'pull' && i === 0;
|
|
21
30
|
</script>
|
|
22
31
|
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
32
|
+
<button
|
|
33
|
+
class="rounded-full h-10 w-10 bg-white border-2 border-gray-400"
|
|
34
|
+
on:click={() => {
|
|
35
|
+
addModule(i)
|
|
36
|
+
open = i
|
|
37
|
+
}}
|
|
38
|
+
>
|
|
39
|
+
<Icon class="text-gray-400 mb-1" data={faPlus} />
|
|
40
|
+
</button>
|
|
41
|
+
<FlowBox>
|
|
42
|
+
<div id="module-{i}">
|
|
43
|
+
<FlowModuleHeader bind:open {mod} {i} {shouldPick}>
|
|
44
|
+
<div>
|
|
45
|
+
<h3 class="text-lg font-bold text-gray-900">Step {i + 1}</h3>
|
|
46
|
+
{#if isTrigger}
|
|
47
|
+
<h3 class="font-bold">
|
|
48
|
+
Trigger Script
|
|
49
|
+
<Tooltip>
|
|
50
|
+
When a flow is 'Pull', the first step is a trigger script. Trigger scripts are scripts
|
|
51
|
+
that must return a list which are the new items to be treated one by one by the rest
|
|
52
|
+
of the flow, usually the list of new items since last time the flow was run. One can
|
|
53
|
+
retrieve the item in the next step using `previous_result._value`. To easily compute
|
|
54
|
+
the diff, windmill provides some helpers under the form of `getInternalState` and
|
|
55
|
+
`setInternalState`.
|
|
56
|
+
</Tooltip>
|
|
57
|
+
</h3>
|
|
58
|
+
{/if}
|
|
59
|
+
<p>
|
|
60
|
+
{#if 'path' in mod.value && mod.value.path}
|
|
61
|
+
{mod.value.path}
|
|
62
|
+
{/if}
|
|
63
|
+
{#if 'language' in mod.value && mod.value.language}
|
|
64
|
+
Inline {mod.value.language}
|
|
65
|
+
{/if}
|
|
66
|
+
{#if !('path' in mod.value) && !('language' in mod.value)}
|
|
67
|
+
Select a script
|
|
68
|
+
{/if}
|
|
69
|
+
</p>
|
|
70
|
+
</div>
|
|
71
|
+
</FlowModuleHeader>
|
|
47
72
|
{#if open == i}
|
|
48
73
|
<div class="p-6">
|
|
49
74
|
{#if shouldPick}
|
|
50
75
|
<FlowInputs
|
|
51
|
-
isTrigger
|
|
76
|
+
{isTrigger}
|
|
52
77
|
on:pick={(e) => pickScript(e.detail.path, i)}
|
|
53
78
|
on:new={(e) => createInlineScriptModule(e.detail.language, i, mode)}
|
|
54
79
|
/>
|
|
55
80
|
{/if}
|
|
56
|
-
{#if mod.value.type ===
|
|
57
|
-
<
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
81
|
+
{#if mod.value.type === 'rawscript'}
|
|
82
|
+
<div class="mb-2 overflow-hidden">
|
|
83
|
+
<EditorBar {editor} {websocketAlive} lang={mod.value.language ?? 'deno'} />
|
|
84
|
+
</div>
|
|
85
|
+
<div>
|
|
86
|
+
<Editor
|
|
87
|
+
bind:websocketAlive
|
|
88
|
+
bind:this={editor}
|
|
89
|
+
class="{bigEditor ? 'h-2/3' : 'h-80'} border p-2 rounded"
|
|
90
|
+
bind:code={mod.value.content}
|
|
91
|
+
deno={mod.value.language === RawScript.language.DENO}
|
|
92
|
+
automaticLayout={true}
|
|
93
|
+
on:blur={() => loadSchema(i)}
|
|
94
|
+
formatAction={() => loadSchema(i)}
|
|
95
|
+
/>
|
|
96
|
+
<button
|
|
97
|
+
class="w-full text-center"
|
|
98
|
+
on:click={() => {
|
|
99
|
+
bigEditor = !bigEditor
|
|
100
|
+
}}><Icon data={bigEditor ? faChevronUp : faChevronDown} scale={1.0} /></button
|
|
101
|
+
>
|
|
102
|
+
</div>
|
|
62
103
|
<div class="mt-2 mb-8">
|
|
63
|
-
<
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
</button>
|
|
104
|
+
<p class="text-gray-500 italic">
|
|
105
|
+
Move the focus outside of the text editor to recompute the input schema or press
|
|
106
|
+
Ctrl/Cmd+S
|
|
107
|
+
</p>
|
|
68
108
|
</div>
|
|
69
109
|
{/if}
|
|
70
110
|
{#if !shouldPick}
|
|
@@ -74,7 +114,7 @@ $: extraLib = buildExtraLib(i === 0 ? schemaToTsType($flowStore?.schema) : objec
|
|
|
74
114
|
{schema}
|
|
75
115
|
{extraLib}
|
|
76
116
|
{i}
|
|
77
|
-
|
|
117
|
+
bind:pickableProperties
|
|
78
118
|
bind:args={mod.input_transform}
|
|
79
119
|
/>
|
|
80
120
|
{/if}
|
|
@@ -90,18 +130,24 @@ $: extraLib = buildExtraLib(i === 0 ? schemaToTsType($flowStore?.schema) : objec
|
|
|
90
130
|
{mode}
|
|
91
131
|
schemas={$schemasStore}
|
|
92
132
|
on:change={(e) => {
|
|
93
|
-
|
|
133
|
+
previewResults.set(jobsToResults(e.detail))
|
|
94
134
|
}}
|
|
95
135
|
/>
|
|
96
136
|
</div>
|
|
97
|
-
<div>
|
|
98
|
-
<button class="w-full h-full" on:click={() => (open = -1)}>(-)</button>
|
|
99
|
-
</div>
|
|
100
|
-
{:else}
|
|
101
|
-
<div>
|
|
102
|
-
<button class="w-full h-full" on:click={() => (open = i)}>(+)</button>
|
|
103
|
-
</div>
|
|
104
137
|
{/if}
|
|
105
138
|
{/if}
|
|
139
|
+
{#if open == i}
|
|
140
|
+
<div>
|
|
141
|
+
<button class="w-full h-full" on:click={() => (open = -1)}>
|
|
142
|
+
<Icon data={faChevronUp} scale={1.0} />
|
|
143
|
+
</button>
|
|
144
|
+
</div>
|
|
145
|
+
{:else}
|
|
146
|
+
<div>
|
|
147
|
+
<button class="w-full h-full" on:click={() => (open = i)}>
|
|
148
|
+
<Icon data={faChevronDown} scale={1.0} />
|
|
149
|
+
</button>
|
|
150
|
+
</div>
|
|
151
|
+
{/if}
|
|
106
152
|
</div>
|
|
107
|
-
</
|
|
153
|
+
</FlowBox>
|
|
@@ -1,61 +1,81 @@
|
|
|
1
1
|
<script>import { ResourceService } from '../gen';
|
|
2
|
-
import ResourcePicker from './ResourcePicker.svelte';
|
|
3
2
|
import { workspaceStore } from '../stores';
|
|
4
|
-
import SchemaForm from './SchemaForm.svelte';
|
|
5
3
|
import RadioButton from './RadioButton.svelte';
|
|
4
|
+
import ResourcePicker from './ResourcePicker.svelte';
|
|
5
|
+
import SchemaForm from './SchemaForm.svelte';
|
|
6
6
|
export let format;
|
|
7
7
|
export let value;
|
|
8
8
|
function isString(value) {
|
|
9
9
|
return typeof value === 'string' || value instanceof String;
|
|
10
10
|
}
|
|
11
|
-
let path =
|
|
11
|
+
let path = '';
|
|
12
12
|
let args = {};
|
|
13
|
-
if (!isString(value) && value) {
|
|
14
|
-
args = value;
|
|
15
|
-
}
|
|
16
13
|
let schema = undefined;
|
|
17
14
|
let isValid = true;
|
|
18
15
|
let resourceTypeName = '';
|
|
16
|
+
let option = isString(value) || value == undefined ? 'resource' : 'raw';
|
|
17
|
+
$: format.startsWith('resource-') && loadSchema(format);
|
|
19
18
|
async function loadSchema(format) {
|
|
20
19
|
resourceTypeName = format.substring('resource-'.length);
|
|
21
20
|
schema = (await ResourceService.getResourceType({ workspace: $workspaceStore, path: resourceTypeName })).schema;
|
|
22
21
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
function argToValue() {
|
|
23
|
+
value = args;
|
|
24
|
+
}
|
|
25
|
+
function resourceToValue() {
|
|
26
|
+
value = `$res:${path}`;
|
|
27
|
+
}
|
|
28
|
+
function isResource() {
|
|
29
|
+
return isString(value) && value.length >= '$res:'.length;
|
|
30
|
+
}
|
|
31
|
+
function valueToPath() {
|
|
32
|
+
if (!isString(value) && value) {
|
|
33
|
+
args = value;
|
|
34
|
+
}
|
|
35
|
+
if (isResource()) {
|
|
36
|
+
path = value.substr('$res:'.length);
|
|
27
37
|
}
|
|
28
|
-
else {
|
|
29
|
-
|
|
38
|
+
else if (value !== undefined && value !== '') {
|
|
39
|
+
option = 'raw';
|
|
30
40
|
}
|
|
31
41
|
}
|
|
32
|
-
$:
|
|
42
|
+
$: value && valueToPath();
|
|
33
43
|
</script>
|
|
34
44
|
|
|
35
|
-
<div class="
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
[
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
45
|
+
<div class="flex flex-row w-full gap-2">
|
|
46
|
+
<div class="shrink w-40">
|
|
47
|
+
<RadioButton
|
|
48
|
+
options={[
|
|
49
|
+
[`Resource (${resourceTypeName})`, 'resource'],
|
|
50
|
+
[`Raw object value`, 'raw']
|
|
51
|
+
]}
|
|
52
|
+
on:change={argToValue}
|
|
53
|
+
bind:value={option}
|
|
54
|
+
/>
|
|
55
|
+
</div>
|
|
56
|
+
<div class="grow">
|
|
57
|
+
{#if option == 'resource'}
|
|
58
|
+
<ResourcePicker
|
|
59
|
+
on:refresh={() => loadSchema(format)}
|
|
60
|
+
on:change={(e) => {
|
|
61
|
+
path = e.detail
|
|
62
|
+
resourceToValue()
|
|
63
|
+
}}
|
|
64
|
+
bind:value={path}
|
|
65
|
+
resourceType={format.split('-').length > 1
|
|
66
|
+
? format.substring('resource-'.length)
|
|
67
|
+
: undefined}
|
|
68
|
+
/>
|
|
69
|
+
{:else}
|
|
70
|
+
<div class="border rounded p-5 w-full">
|
|
71
|
+
<h2 class="mb-5">
|
|
72
|
+
Object of <a target="_blank" href="/resources">resource type</a>
|
|
73
|
+
{resourceTypeName}
|
|
74
|
+
</h2>
|
|
75
|
+
{#if !isString(args)}
|
|
76
|
+
<SchemaForm {schema} bind:isValid bind:args />
|
|
77
|
+
{/if}
|
|
78
|
+
</div>
|
|
59
79
|
{/if}
|
|
60
80
|
</div>
|
|
61
|
-
|
|
81
|
+
</div>
|
|
@@ -1,25 +1,10 @@
|
|
|
1
|
-
<script>import
|
|
2
|
-
import ResourceTypePicker from './ResourceTypePicker.svelte';
|
|
1
|
+
<script>import ResourceTypePicker from './ResourceTypePicker.svelte';
|
|
3
2
|
export let format;
|
|
4
|
-
let kind = format?.startsWith('resource') ? 'resource' : 'none';
|
|
5
3
|
let resource = format?.startsWith('resource-')
|
|
6
4
|
? format.substring('resource-'.length)
|
|
7
5
|
: undefined;
|
|
8
|
-
$: format =
|
|
9
|
-
kind == 'resource' ? (resource != undefined ? `resource-${resource}` : 'resource') : undefined;
|
|
6
|
+
$: format = resource != undefined ? `resource-${resource}` : undefined;
|
|
10
7
|
</script>
|
|
11
8
|
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
small={true}
|
|
15
|
-
options={[
|
|
16
|
-
['None', 'none'],
|
|
17
|
-
['Resource Type', 'resource']
|
|
18
|
-
]}
|
|
19
|
-
bind:value={kind}
|
|
20
|
-
/>
|
|
21
|
-
|
|
22
|
-
{#if kind == 'resource'}
|
|
23
|
-
<div class="mt-1" />
|
|
24
|
-
<ResourceTypePicker bind:value={resource} />
|
|
25
|
-
{/if}
|
|
9
|
+
<div class="mt-2" />
|
|
10
|
+
<ResourceTypePicker bind:value={resource} nonePickable={true} />
|
package/components/Path.svelte
CHANGED
|
@@ -4,7 +4,6 @@ import { GroupService } from '../gen';
|
|
|
4
4
|
import Tooltip from './Tooltip.svelte';
|
|
5
5
|
import { userStore, workspaceStore } from '../stores';
|
|
6
6
|
import { sleep } from '../utils';
|
|
7
|
-
import { workspace } from 'vscode';
|
|
8
7
|
export let meta = {
|
|
9
8
|
ownerKind: 'user',
|
|
10
9
|
owner: '',
|
|
@@ -114,8 +113,8 @@ $: {
|
|
|
114
113
|
<div>
|
|
115
114
|
<div class="flex flex-col sm:grid sm:grid-cols-4 sm:gap-4 pb-0 mb-1">
|
|
116
115
|
<label class="block">
|
|
117
|
-
<span class="text-gray-700 text-sm">
|
|
118
|
-
Owner Kind<Tooltip
|
|
116
|
+
<span class="text-gray-700 text-sm whitespace-nowrap">
|
|
117
|
+
Owner Kind <Tooltip>
|
|
119
118
|
<slot name="ownerToolkit" />
|
|
120
119
|
</Tooltip>
|
|
121
120
|
</span>
|
|
@@ -156,6 +155,7 @@ $: {
|
|
|
156
155
|
<label class="block col-span-2">
|
|
157
156
|
<span class="text-gray-700 text-sm">Name<span class="text-red-600 text-sm">*</span></span>
|
|
158
157
|
<input
|
|
158
|
+
autofocus
|
|
159
159
|
bind:value={meta.name}
|
|
160
160
|
placeholder={namePlaceholder}
|
|
161
161
|
class={error === ''
|
|
@@ -7,7 +7,7 @@ declare const __propDef: {
|
|
|
7
7
|
initialPath: string;
|
|
8
8
|
path?: string | undefined;
|
|
9
9
|
error?: string | undefined;
|
|
10
|
-
kind: "
|
|
10
|
+
kind: "flow" | "script" | "resource" | "schedule" | "variable";
|
|
11
11
|
getPath?: (() => string) | undefined;
|
|
12
12
|
reset?: (() => Promise<void>) | undefined;
|
|
13
13
|
};
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
<script>export let label = '';
|
|
2
2
|
export let options;
|
|
3
3
|
export let value;
|
|
4
|
-
export let small = false;
|
|
5
4
|
import { createEventDispatcher } from 'svelte';
|
|
5
|
+
import Tooltip from './Tooltip.svelte';
|
|
6
6
|
const dispatch = createEventDispatcher();
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
|
-
<fieldset>
|
|
9
|
+
<fieldset class="w-full">
|
|
10
10
|
<legend class="sr-only">{label}</legend>
|
|
11
|
-
<div class="flex flex-row gap-2">
|
|
11
|
+
<div class="flex flex-row flex-wrap gap-2 items-center mb-2 w-full">
|
|
12
12
|
{#each options as [label, val]}
|
|
13
|
-
<label
|
|
13
|
+
<label
|
|
14
|
+
class:item-button-selected={val == value}
|
|
15
|
+
class="item-button text-center text-sm h-full p-2 grow"
|
|
16
|
+
>
|
|
14
17
|
<input
|
|
15
18
|
type="radio"
|
|
16
19
|
value={val}
|
|
@@ -19,99 +22,11 @@ const dispatch = createEventDispatcher();
|
|
|
19
22
|
aria-labelledby="memory-option-0-label"
|
|
20
23
|
on:click={() => dispatch('change', val)}
|
|
21
24
|
/>
|
|
22
|
-
<p>
|
|
25
|
+
<p>
|
|
26
|
+
{#if typeof label !== 'string'}{label.title} <Tooltip>{label.desc}</Tooltip>
|
|
27
|
+
{:else}{label}{/if}
|
|
28
|
+
</p>
|
|
23
29
|
</label>
|
|
24
30
|
{/each}
|
|
25
31
|
</div>
|
|
26
32
|
</fieldset>
|
|
27
|
-
|
|
28
|
-
<style>
|
|
29
|
-
label {
|
|
30
|
-
|
|
31
|
-
display: flex;
|
|
32
|
-
|
|
33
|
-
cursor: pointer;
|
|
34
|
-
|
|
35
|
-
align-items: center;
|
|
36
|
-
|
|
37
|
-
justify-content: center;
|
|
38
|
-
|
|
39
|
-
border-radius: 0.375rem;
|
|
40
|
-
|
|
41
|
-
border-width: 1px;
|
|
42
|
-
|
|
43
|
-
padding-left: 0.75rem;
|
|
44
|
-
|
|
45
|
-
padding-right: 0.75rem;
|
|
46
|
-
|
|
47
|
-
font-size: 0.875rem;
|
|
48
|
-
|
|
49
|
-
line-height: 1.25rem;
|
|
50
|
-
|
|
51
|
-
font-weight: 500;
|
|
52
|
-
|
|
53
|
-
text-transform: uppercase
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
label:focus {
|
|
57
|
-
|
|
58
|
-
outline: 2px solid transparent;
|
|
59
|
-
|
|
60
|
-
outline-offset: 2px
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
@media (min-width: 640px) {
|
|
64
|
-
|
|
65
|
-
label {
|
|
66
|
-
|
|
67
|
-
flex: 1 1 0%
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
label.selected {
|
|
72
|
-
|
|
73
|
-
display: flex;
|
|
74
|
-
|
|
75
|
-
cursor: pointer;
|
|
76
|
-
|
|
77
|
-
align-items: center;
|
|
78
|
-
|
|
79
|
-
justify-content: center;
|
|
80
|
-
|
|
81
|
-
border-radius: 0.375rem;
|
|
82
|
-
|
|
83
|
-
border-width: 1px;
|
|
84
|
-
|
|
85
|
-
background-color: rgb(59 130 246 / 0.7);
|
|
86
|
-
|
|
87
|
-
padding-left: 0.75rem;
|
|
88
|
-
|
|
89
|
-
padding-right: 0.75rem;
|
|
90
|
-
|
|
91
|
-
font-size: 0.875rem;
|
|
92
|
-
|
|
93
|
-
line-height: 1.25rem;
|
|
94
|
-
|
|
95
|
-
font-weight: 500;
|
|
96
|
-
|
|
97
|
-
text-transform: uppercase;
|
|
98
|
-
|
|
99
|
-
--tw-text-opacity: 1;
|
|
100
|
-
|
|
101
|
-
color: rgb(255 255 255 / var(--tw-text-opacity))
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
label.selected:focus {
|
|
105
|
-
|
|
106
|
-
outline: 2px solid transparent;
|
|
107
|
-
|
|
108
|
-
outline-offset: 2px
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
@media (min-width: 640px) {
|
|
112
|
-
|
|
113
|
-
label.selected {
|
|
114
|
-
|
|
115
|
-
flex: 1 1 0%
|
|
116
|
-
}
|
|
117
|
-
}</style>
|
|
@@ -2,9 +2,11 @@ import { SvelteComponentTyped } from "svelte";
|
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
4
|
label?: string | undefined;
|
|
5
|
-
options: [string
|
|
5
|
+
options: [string | {
|
|
6
|
+
title: string;
|
|
7
|
+
desc: string;
|
|
8
|
+
}, any][];
|
|
6
9
|
value: any;
|
|
7
|
-
small?: boolean | undefined;
|
|
8
10
|
};
|
|
9
11
|
events: {
|
|
10
12
|
change: CustomEvent<any>;
|