windmill-components 1.504.6 → 1.511.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/ata/index.js +1 -1
- package/package/components/AppConnectInner.svelte +184 -29
- package/package/components/ArgInput.svelte +33 -103
- package/package/components/AuthSettings.svelte +45 -1
- package/package/components/Dev.svelte +31 -24
- package/package/components/DisplayResult.svelte +53 -26
- package/package/components/DisplayResult.svelte.d.ts +1 -1
- package/package/components/DynSelect.svelte +3 -3
- package/package/components/Editor.svelte +115 -88
- package/package/components/Editor.svelte.d.ts +30 -55
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/ErrorOrRecoveryHandler.svelte +73 -67
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +8 -24
- package/package/components/FlowBuilder.svelte +11 -2
- package/package/components/FlowJobResult.svelte +12 -17
- package/package/components/FlowJobResult.svelte.d.ts +5 -18
- package/package/components/FlowPreviewContent.svelte +13 -10
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowPreviewResult.svelte +14 -6
- package/package/components/FlowStatusViewer.svelte +11 -24
- package/package/components/FlowStatusViewer.svelte.d.ts +19 -18
- package/package/components/FlowStatusViewerInner.svelte +110 -131
- package/package/components/FlowStatusViewerInner.svelte.d.ts +20 -18
- package/package/components/GitDiffPreview.svelte +55 -0
- package/package/components/GitDiffPreview.svelte.d.ts +13 -0
- package/package/components/HistoricInputs.svelte +2 -2
- package/package/components/HttpAgentWorkerDrawer.svelte +1 -1
- package/package/components/InitGitRepoPopover.svelte +410 -0
- package/package/components/InitGitRepoPopover.svelte.d.ts +13 -0
- package/package/components/InstanceSetting.svelte +21 -9
- package/package/components/InstanceSettings.svelte +16 -3
- package/package/components/JobLoader.svelte +567 -0
- package/package/components/JobLoader.svelte.d.ts +53 -0
- package/package/components/JobLogs.svelte +6 -4
- package/package/components/JobLogs.svelte.d.ts +5 -18
- package/package/components/JsonEditor.svelte +11 -11
- package/package/components/JsonEditor.svelte.d.ts +14 -56
- package/package/components/Label.svelte +6 -11
- package/package/components/Label.svelte.d.ts +14 -39
- package/package/components/LightweightResourcePicker.svelte +18 -39
- package/package/components/LightweightResourcePicker.svelte.d.ts +6 -22
- package/package/components/LogViewer.svelte +35 -41
- package/package/components/LogViewer.svelte.d.ts +6 -20
- package/package/components/ModulePreviewResultViewer.svelte +3 -1
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -0
- package/package/components/ModuleTest.svelte +16 -11
- package/package/components/NumberTypeNarrowing.svelte +13 -16
- package/package/components/NumberTypeNarrowing.svelte.d.ts +4 -18
- package/package/components/PullGitRepoPopover.svelte +355 -0
- package/package/components/PullGitRepoPopover.svelte.d.ts +18 -0
- package/package/components/ResourceTypePicker.svelte +20 -17
- package/package/components/ResourceTypePicker.svelte.d.ts +7 -6
- package/package/components/S3FilePicker.svelte +5 -3
- package/package/components/SavedInputs.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +4 -3
- package/package/components/ScriptEditor.svelte +34 -31
- package/package/components/ScriptEditor.svelte.d.ts +3 -3
- package/package/components/Section.svelte +7 -20
- package/package/components/Section.svelte.d.ts +20 -47
- package/package/components/ServiceLogsInner.svelte +2 -1
- package/package/components/ServiceLogsInner.svelte.d.ts +1 -0
- package/package/components/SimpleEditor.svelte +4 -4
- package/package/components/SimpleEditor.svelte.d.ts +1 -0
- package/package/components/SqlRepl.svelte +0 -1
- package/package/components/Subsection.svelte +10 -12
- package/package/components/Subsection.svelte.d.ts +15 -39
- package/package/components/UserSettings.svelte +1 -1
- package/package/components/WorkerGroup.svelte +260 -165
- package/package/components/WorkerGroup.svelte.d.ts +2 -0
- package/package/components/WorkerTagPicker.svelte +3 -3
- package/package/components/WorkerTagSelect.svelte +33 -4
- package/package/components/apps/components/buttons/AppButton.svelte +7 -1
- package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
- package/package/components/apps/components/display/AppDisplayComponentByJobId.svelte +16 -11
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte +13 -10
- package/package/components/apps/components/display/AppMenu.svelte +5 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +3 -3
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +3 -3
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +3 -3
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +3 -3
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +3 -3
- package/package/components/apps/components/helpers/RunnableComponent.svelte +65 -54
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -5
- package/package/components/apps/components/inputs/AppUserResource.svelte +26 -8
- package/package/components/apps/editor/AppEditorHeader.svelte +11 -5
- package/package/components/apps/editor/AppJobsDrawer.svelte +5 -5
- package/package/components/apps/editor/RunnableJobPanel.svelte +4 -4
- package/package/components/apps/editor/component/components.d.ts +12 -0
- package/package/components/apps/editor/component/components.js +19 -7
- package/package/components/assets/AssetButtons.svelte +38 -0
- package/package/components/assets/AssetButtons.svelte.d.ts +15 -0
- package/package/components/assets/AssetsDropdownButton.svelte +60 -72
- package/package/components/assets/AssetsDropdownButton.svelte.d.ts +3 -4
- package/package/components/assets/AssetsUsageDrawer.svelte +10 -10
- package/package/components/assets/JobAssetsViewer.svelte +79 -0
- package/package/components/assets/JobAssetsViewer.svelte.d.ts +7 -0
- package/package/components/assets/README_DEV.md +0 -0
- package/package/components/assets/lib.d.ts +9 -1
- package/package/components/assets/lib.js +48 -7
- package/package/components/common/fileUpload/FileUpload.svelte +126 -84
- package/package/components/common/fileUpload/FileUpload.svelte.d.ts +13 -3
- package/package/components/common/fileUpload/S3ArgInput.svelte +111 -0
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +21 -0
- package/package/components/common/table/ScriptRow.svelte +3 -1
- package/package/components/copilot/AIFormSettings.svelte +3 -4
- package/package/components/copilot/AIFormSettings.svelte.d.ts +5 -19
- package/package/components/copilot/autocomplete/Autocompletor.d.ts +3 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +269 -35
- package/package/components/copilot/autocomplete/request.d.ts +3 -0
- package/package/components/copilot/autocomplete/request.js +15 -7
- package/package/components/copilot/chat/AIChatDisplay.svelte +8 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +13 -8
- package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte +5 -5
- package/package/components/copilot/chat/flow/core.d.ts +1 -1
- package/package/components/copilot/chat/flow/core.js +2 -38
- package/package/components/copilot/chat/navigator/apiTools.d.ts +8 -0
- package/package/components/copilot/chat/navigator/apiTools.js +95 -15
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +2 -1
- package/package/components/copilot/chat/script/core.d.ts +11 -2
- package/package/components/copilot/chat/script/core.js +165 -23
- package/package/components/copilot/chat/shared.d.ts +10 -0
- package/package/components/copilot/chat/shared.js +56 -0
- package/package/components/copilot/lib.d.ts +1 -0
- package/package/components/copilot/lib.js +30 -9
- package/package/components/custom_ui.d.ts +1 -0
- package/package/components/flows/FlowAssetsHandler.svelte +133 -0
- package/package/components/flows/FlowAssetsHandler.svelte.d.ts +14 -0
- package/package/components/flows/content/FlowModuleCache.svelte +4 -4
- package/package/components/flows/content/FlowModuleCache.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleComponent.svelte +16 -19
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +3 -4
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleSleep.svelte +6 -7
- package/package/components/flows/content/FlowModuleSleep.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleSuspend.svelte +19 -17
- package/package/components/flows/content/FlowModuleSuspend.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleTimeout.svelte +4 -4
- package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +4 -18
- package/package/components/flows/flowStore.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +9 -4
- package/package/components/flows/scheduleUtils.js +1 -1
- package/package/components/flows/types.d.ts +2 -1
- package/package/components/graph/FlowGraphV2.svelte +8 -104
- package/package/components/graph/FlowGraphV2.svelte.d.ts +0 -2
- package/package/components/graph/graphBuilder.svelte.d.ts +6 -3
- package/package/components/graph/graphBuilder.svelte.js +35 -9
- package/package/components/graph/renderers/edges/BaseEdge.svelte +2 -5
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/AssetNode.svelte +23 -20
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +5 -10
- package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +1 -1
- package/package/components/graph/util.js +1 -1
- package/package/components/home/ItemsList.svelte +2 -0
- package/package/components/icons/AssetGenericIcon.svelte +0 -3
- package/package/components/jobs/JobPreview.svelte +10 -6
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +13 -12
- package/package/components/runs/BatchReRunOptionsPane.svelte +5 -1
- package/package/components/runs/JobPreview.svelte +26 -16
- package/package/components/runs/{JobLoader.svelte.d.ts → JobsLoader.svelte.d.ts} +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte +2 -2
- package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -0
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +3 -2
- package/package/components/script_builder.d.ts +2 -2
- package/package/components/settings/CreateToken.svelte +76 -41
- package/package/components/settings/CreateToken.svelte.d.ts +1 -1
- package/package/components/settings/ScopeSelector.svelte +613 -0
- package/package/components/settings/ScopeSelector.svelte.d.ts +8 -0
- package/package/components/settings/TokenDisplay.svelte +103 -0
- package/package/components/settings/TokenDisplay.svelte.d.ts +10 -0
- package/package/components/settings/TokensTable.svelte +70 -349
- package/package/components/sidebar/CriticalAlertModal.svelte +3 -0
- package/package/components/triggers/DeleteTriggerButton.svelte +1 -1
- package/package/components/triggers/TriggerEditorToolbar.svelte +3 -3
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte +55 -0
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +13 -0
- package/package/components/triggers/TriggersEditor.svelte +45 -3
- package/package/components/triggers/TriggersWrapper.svelte +2 -2
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/gcp/utils.js +9 -1
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +3 -2
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +26 -23
- package/package/components/triggers/http/RouteEditorConfigSection.svelte.d.ts +5 -19
- package/package/components/triggers/http/RouteEditorInner.svelte +219 -175
- package/package/components/triggers/http/RouteEditorInner.svelte.d.ts +6 -2
- package/package/components/triggers/http/utils.js +9 -3
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/kafka/utils.js +9 -1
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte +4 -132
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte.d.ts +2 -5
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +182 -13
- package/package/components/triggers/mqtt/utils.js +9 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/nats/utils.js +9 -1
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +41 -2
- package/package/components/triggers/postgres/utils.js +9 -1
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +38 -92
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/sqs/utils.js +9 -1
- package/package/components/triggers/utils.js +12 -0
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/websocket/utils.js +11 -1
- package/package/components/workspaceSettings/AISettings.svelte +0 -2
- package/package/components/workspaceSettings/FilterList.svelte +56 -0
- package/package/components/workspaceSettings/FilterList.svelte.d.ts +8 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +785 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +18 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +305 -23
- package/package/gen/schemas.gen.js +305 -23
- package/package/gen/services.gen.d.ts +33 -1
- package/package/gen/services.gen.js +66 -2
- package/package/gen/types.gen.d.ts +216 -11
- package/package/history.svelte.js +0 -2
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +5 -2
- package/package/infer.js +16 -10
- package/package/svelte5Utils.svelte.d.ts +1 -0
- package/package/svelte5Utils.svelte.js +25 -18
- package/package/toast.js +10 -0
- package/package/utils.d.ts +3 -2
- package/package/utils.js +20 -5
- package/package.json +11 -11
- package/package/components/ResultJobLoader.svelte +0 -219
- package/package/components/ResultJobLoader.svelte.d.ts +0 -52
- package/package/components/TestJobLoader.svelte +0 -274
- package/package/components/TestJobLoader.svelte.d.ts +0 -43
- package/package/components/icons/AssetVarIcon.svelte +0 -31
- package/package/components/icons/AssetVarIcon.svelte.d.ts +0 -9
- /package/package/components/runs/{JobLoader.svelte → JobsLoader.svelte} +0 -0
|
@@ -3,7 +3,7 @@ import { twMerge } from 'tailwind-merge';
|
|
|
3
3
|
import { initConfig, initOutput } from '../../editor/appUtils';
|
|
4
4
|
import { IS_APP_PUBLIC_CONTEXT_KEY } from '../../types';
|
|
5
5
|
import { initCss } from '../../utils';
|
|
6
|
-
import
|
|
6
|
+
import JobLoader from '../../../JobLoader.svelte';
|
|
7
7
|
import { components } from '../../editor/component';
|
|
8
8
|
import ResolveConfig from '../helpers/ResolveConfig.svelte';
|
|
9
9
|
import ResolveStyle from '../helpers/ResolveStyle.svelte';
|
|
@@ -21,7 +21,7 @@ const outputs = initOutput($worldStore, id, {
|
|
|
21
21
|
});
|
|
22
22
|
initializing = false;
|
|
23
23
|
let css = $state(initCss($app.css?.jobiddisplaycomponent, customCss));
|
|
24
|
-
let
|
|
24
|
+
let jobLoader = $state(undefined);
|
|
25
25
|
let testIsLoading = $state(false);
|
|
26
26
|
let testJob = $state(undefined);
|
|
27
27
|
$effect(() => {
|
|
@@ -30,12 +30,22 @@ $effect(() => {
|
|
|
30
30
|
outputs.loading.set(true);
|
|
31
31
|
const jobId = resolvedConfig?.['jobId'];
|
|
32
32
|
if (jobId) {
|
|
33
|
-
|
|
33
|
+
jobLoader?.watchJob(jobId, {
|
|
34
|
+
done(x) {
|
|
35
|
+
onDone(x);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
34
38
|
}
|
|
35
39
|
});
|
|
36
40
|
}
|
|
37
41
|
});
|
|
38
42
|
let result = $state(undefined);
|
|
43
|
+
function onDone(job) {
|
|
44
|
+
outputs.loading.set(false);
|
|
45
|
+
outputs.jobId.set(job.id);
|
|
46
|
+
outputs.result.set(job.result);
|
|
47
|
+
result = job.result;
|
|
48
|
+
}
|
|
39
49
|
</script>
|
|
40
50
|
|
|
41
51
|
{#each Object.keys(components['jobiddisplaycomponent'].initialData.configuration) as key (key)}
|
|
@@ -57,17 +67,12 @@ let result = $state(undefined);
|
|
|
57
67
|
/>
|
|
58
68
|
{/each}
|
|
59
69
|
|
|
60
|
-
<
|
|
70
|
+
<JobLoader
|
|
71
|
+
noCode={true}
|
|
61
72
|
workspaceOverride={workspace}
|
|
62
|
-
bind:this={
|
|
73
|
+
bind:this={jobLoader}
|
|
63
74
|
bind:isLoading={testIsLoading}
|
|
64
75
|
bind:job={testJob}
|
|
65
|
-
on:done={(e) => {
|
|
66
|
-
outputs.loading.set(false)
|
|
67
|
-
outputs.jobId.set(e.detail.id)
|
|
68
|
-
outputs.result.set(e.detail.result)
|
|
69
|
-
result = e.detail.result
|
|
70
|
-
}}
|
|
71
76
|
/>
|
|
72
77
|
|
|
73
78
|
<InitializeComponent {id} />
|
|
@@ -3,7 +3,7 @@ import { twMerge } from 'tailwind-merge';
|
|
|
3
3
|
import { initConfig, initOutput } from '../../editor/appUtils';
|
|
4
4
|
import { initCss } from '../../utils';
|
|
5
5
|
import LogViewer from '../../../LogViewer.svelte';
|
|
6
|
-
import
|
|
6
|
+
import JobLoader from '../../../JobLoader.svelte';
|
|
7
7
|
import { components } from '../../editor/component';
|
|
8
8
|
import ResolveConfig from '../helpers/ResolveConfig.svelte';
|
|
9
9
|
import ResolveStyle from '../helpers/ResolveStyle.svelte';
|
|
@@ -23,7 +23,7 @@ const outputs = initOutput($worldStore, id, {
|
|
|
23
23
|
});
|
|
24
24
|
initializing = false;
|
|
25
25
|
let css = $state(initCss($app.css?.jobidlogcomponent, customCss));
|
|
26
|
-
let
|
|
26
|
+
let jobLoader = $state(undefined);
|
|
27
27
|
let testIsLoading = $state(false);
|
|
28
28
|
let testJob = $state(undefined);
|
|
29
29
|
$effect(() => {
|
|
@@ -32,7 +32,14 @@ $effect(() => {
|
|
|
32
32
|
outputs.loading.set(true);
|
|
33
33
|
const jobId = resolvedConfig?.['jobId'];
|
|
34
34
|
if (jobId) {
|
|
35
|
-
|
|
35
|
+
let callbacks = {
|
|
36
|
+
done(x) {
|
|
37
|
+
outputs.loading.set(false);
|
|
38
|
+
outputs.jobId.set(x.id);
|
|
39
|
+
outputs.result.set(x.result);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
jobLoader?.watchJob(jobId, callbacks);
|
|
36
43
|
}
|
|
37
44
|
});
|
|
38
45
|
}
|
|
@@ -58,16 +65,12 @@ $effect(() => {
|
|
|
58
65
|
/>
|
|
59
66
|
{/each}
|
|
60
67
|
|
|
61
|
-
<
|
|
68
|
+
<JobLoader
|
|
69
|
+
noCode={true}
|
|
62
70
|
workspaceOverride={workspace}
|
|
63
|
-
bind:this={
|
|
71
|
+
bind:this={jobLoader}
|
|
64
72
|
bind:isLoading={testIsLoading}
|
|
65
73
|
bind:job={testJob}
|
|
66
|
-
on:done={(e) => {
|
|
67
|
-
outputs.loading.set(false)
|
|
68
|
-
outputs.jobId.set(e.detail.id)
|
|
69
|
-
outputs.result.set(e.detail.result)
|
|
70
|
-
}}
|
|
71
74
|
/>
|
|
72
75
|
|
|
73
76
|
<InitializeComponent {id} />
|
|
@@ -38,6 +38,7 @@ $effect(() => {
|
|
|
38
38
|
$effect(() => {
|
|
39
39
|
resolvedConfig.afterIcon && afterIconComponent && untrack(() => handleAfterIcon());
|
|
40
40
|
});
|
|
41
|
+
let menu = $state();
|
|
41
42
|
</script>
|
|
42
43
|
|
|
43
44
|
<InitializeComponent {id} />
|
|
@@ -66,6 +67,7 @@ $effect(() => {
|
|
|
66
67
|
<Menubar class={resolvedConfig.fillContainer ? 'w-full h-full' : ''}>
|
|
67
68
|
{#snippet children({ createMenu })}
|
|
68
69
|
<Menu
|
|
70
|
+
bind:this={menu}
|
|
69
71
|
{createMenu}
|
|
70
72
|
placement="bottom-end"
|
|
71
73
|
justifyEnd={false}
|
|
@@ -134,6 +136,9 @@ $effect(() => {
|
|
|
134
136
|
componentInput={actionButton.componentInput}
|
|
135
137
|
noWFull={false}
|
|
136
138
|
isMenuItem={true}
|
|
139
|
+
onDone={() => {
|
|
140
|
+
menu?.close()
|
|
141
|
+
}}
|
|
137
142
|
/>
|
|
138
143
|
</div>
|
|
139
144
|
{/if}
|
|
@@ -150,7 +150,7 @@ let datasource = $state({
|
|
|
150
150
|
return;
|
|
151
151
|
}
|
|
152
152
|
runnableComponent?.runComponent(undefined, undefined, undefined, currentParams, {
|
|
153
|
-
|
|
153
|
+
onDone: (items) => {
|
|
154
154
|
let lastRow = -1;
|
|
155
155
|
if (datasource?.rowCount && datasource.rowCount <= params.endRow) {
|
|
156
156
|
lastRow = datasource.rowCount;
|
|
@@ -178,10 +178,10 @@ let datasource = $state({
|
|
|
178
178
|
params.failCallback();
|
|
179
179
|
}
|
|
180
180
|
},
|
|
181
|
-
|
|
181
|
+
onCancel: () => {
|
|
182
182
|
params.failCallback();
|
|
183
183
|
},
|
|
184
|
-
|
|
184
|
+
onError: (error) => {
|
|
185
185
|
params.failCallback();
|
|
186
186
|
}
|
|
187
187
|
});
|
|
@@ -26,14 +26,14 @@ export async function triggerDelete(resource, table, allColumns, data, dbType) {
|
|
|
26
26
|
ndata[x.field] = data[x.field];
|
|
27
27
|
});
|
|
28
28
|
await runnableComponent?.runComponent(undefined, undefined, undefined, { ...ndata }, {
|
|
29
|
-
|
|
29
|
+
onDone: (_x) => {
|
|
30
30
|
sendUserToast('Row deleted', false);
|
|
31
31
|
dispatch('deleted');
|
|
32
32
|
},
|
|
33
|
-
|
|
33
|
+
onCancel: () => {
|
|
34
34
|
sendUserToast('Error deleting row', true);
|
|
35
35
|
},
|
|
36
|
-
|
|
36
|
+
onError: () => {
|
|
37
37
|
sendUserToast('Error updating row', true);
|
|
38
38
|
}
|
|
39
39
|
});
|
|
@@ -23,14 +23,14 @@ export async function insertRow(resource, workspace, table, columns, values, res
|
|
|
23
23
|
await tick();
|
|
24
24
|
if (runnableComponent) {
|
|
25
25
|
await runnableComponent?.runComponent(undefined, undefined, undefined, values, {
|
|
26
|
-
|
|
26
|
+
onDone: (_x) => {
|
|
27
27
|
dispatch('insert');
|
|
28
28
|
sendUserToast('Row inserted', false);
|
|
29
29
|
},
|
|
30
|
-
|
|
30
|
+
onCancel: () => {
|
|
31
31
|
sendUserToast('Error inserting row', true);
|
|
32
32
|
},
|
|
33
|
-
|
|
33
|
+
onError: () => {
|
|
34
34
|
sendUserToast('Error inserting row', true);
|
|
35
35
|
}
|
|
36
36
|
});
|
|
@@ -27,13 +27,13 @@ export async function triggerUpdate(resource, table, column, allColumns, valueTo
|
|
|
27
27
|
});
|
|
28
28
|
ndata[column.field] = oldValue;
|
|
29
29
|
await runnableComponent?.runComponent(undefined, undefined, undefined, { value_to_update: valueToUpdate, ...ndata }, {
|
|
30
|
-
|
|
30
|
+
onDone: (x) => {
|
|
31
31
|
sendUserToast('Value updated', false);
|
|
32
32
|
},
|
|
33
|
-
|
|
33
|
+
onCancel: () => {
|
|
34
34
|
sendUserToast('Error updating value', true);
|
|
35
35
|
},
|
|
36
|
-
|
|
36
|
+
onError: () => {
|
|
37
37
|
sendUserToast('Error updating value', true);
|
|
38
38
|
}
|
|
39
39
|
});
|
|
@@ -67,7 +67,7 @@ const datasource = $state({
|
|
|
67
67
|
return;
|
|
68
68
|
}
|
|
69
69
|
runnableComponent?.runComponent(undefined, undefined, undefined, currentParams, {
|
|
70
|
-
|
|
70
|
+
onDone: (items) => {
|
|
71
71
|
let lastRow = -1;
|
|
72
72
|
if (datasource?.rowCount && datasource.rowCount <= params.endRow) {
|
|
73
73
|
lastRow = datasource.rowCount;
|
|
@@ -92,10 +92,10 @@ const datasource = $state({
|
|
|
92
92
|
params.failCallback();
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
|
-
|
|
95
|
+
onCancel: () => {
|
|
96
96
|
params.failCallback();
|
|
97
97
|
},
|
|
98
|
-
|
|
98
|
+
onError: () => {
|
|
99
99
|
params.failCallback();
|
|
100
100
|
}
|
|
101
101
|
});
|
|
@@ -8,7 +8,6 @@ import { createEventDispatcher, getContext, onDestroy, onMount, untrack } from '
|
|
|
8
8
|
import { computeGlobalContext, eval_like } from './eval';
|
|
9
9
|
import InputValue from './InputValue.svelte';
|
|
10
10
|
import { collectOneOfFields, selectId } from '../../editor/appUtils';
|
|
11
|
-
import ResultJobLoader from '../../../ResultJobLoader.svelte';
|
|
12
11
|
import { userStore } from '../../../../stores';
|
|
13
12
|
import { get } from 'svelte/store';
|
|
14
13
|
import RefreshButton from './RefreshButton.svelte';
|
|
@@ -16,6 +15,7 @@ import { ctxRegex } from '../../utils';
|
|
|
16
15
|
import { computeWorkspaceS3FileInputPolicy } from '../../editor/appUtilsS3';
|
|
17
16
|
import { executeRunnable } from './executeRunnable';
|
|
18
17
|
import SchemaForm from '../../../SchemaForm.svelte';
|
|
18
|
+
import JobLoader, {} from '../../../JobLoader.svelte';
|
|
19
19
|
let { id, fields, runnable, transformer, extraQueryParams = {}, autoRefresh = true, result = $bindable(undefined), forceSchemaDisplay = false, wrapperClass = '', wrapperStyle = '', render, outputs, extraKey = '', initializing = false, recomputeOnInputChanged = true, loading = $bindable(false), refreshOnStart = false, recomputableByRefreshButton, errorHandledByComponent = false, hideRefreshButton = false, hasChildrens, allowConcurentRequests = false, noInitialize = false, overrideCallback = undefined, overrideAutoRefresh = false, replaceCallback = false, children } = $props();
|
|
20
20
|
const { worldStore, runnableComponents, workspace, appPath, isEditor, jobs, jobsById, noBackend, errorByComponent, mode, stateId, state: stateStore, componentControl, initialized, selectedComponent, app, connectingInput, bgRuns, recomputeAllContext } = getContext('AppViewerContext');
|
|
21
21
|
const editorContext = getContext('AppEditorContext');
|
|
@@ -34,7 +34,7 @@ function setDebouncedExecute() {
|
|
|
34
34
|
executeTimeout && clearTimeout(executeTimeout);
|
|
35
35
|
executeTimeout = setTimeout(() => {
|
|
36
36
|
console.debug('debounce execute');
|
|
37
|
-
executeComponent(
|
|
37
|
+
executeComponent();
|
|
38
38
|
}, 200);
|
|
39
39
|
}
|
|
40
40
|
function computeStaticValues() {
|
|
@@ -56,6 +56,57 @@ function refreshOnStaticChange() {
|
|
|
56
56
|
// $: sendUserToast('args' + JSON.stringify(runnableInputValues) + Boolean(extraQueryParams) || args)
|
|
57
57
|
// $: console.log(runnableInputValues)
|
|
58
58
|
let firstRefresh = true;
|
|
59
|
+
function genCallbacks({ onDone, onCancel, onError }) {
|
|
60
|
+
const callbacks = {
|
|
61
|
+
started({ id }) {
|
|
62
|
+
console.log('started', id);
|
|
63
|
+
loading = true;
|
|
64
|
+
outputs.jobId?.set(id);
|
|
65
|
+
dispatch('started', id);
|
|
66
|
+
},
|
|
67
|
+
doneWithoutCompute(r) {
|
|
68
|
+
onDone?.(r);
|
|
69
|
+
},
|
|
70
|
+
doneResult({ id, result }) {
|
|
71
|
+
onDone?.(result);
|
|
72
|
+
lastJobId = id;
|
|
73
|
+
setResult(result, id);
|
|
74
|
+
loading = false;
|
|
75
|
+
dispatch('done', { id, result });
|
|
76
|
+
},
|
|
77
|
+
cancel({ id }) {
|
|
78
|
+
onCancel?.();
|
|
79
|
+
let jobId = id;
|
|
80
|
+
console.debug('cancel', jobId);
|
|
81
|
+
let job = $jobsById[jobId];
|
|
82
|
+
if (job && job.created_at && !job.duration_ms) {
|
|
83
|
+
$jobsById[jobId] = {
|
|
84
|
+
...job,
|
|
85
|
+
started_at: job.started_at ?? Date.now(),
|
|
86
|
+
duration_ms: Date.now() - (job.started_at ?? job.created_at)
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
dispatch('cancel', { id });
|
|
90
|
+
},
|
|
91
|
+
doneError({ id, error }) {
|
|
92
|
+
onError?.(error);
|
|
93
|
+
setResult({ error }, id);
|
|
94
|
+
loading = false;
|
|
95
|
+
dispatch('doneError', { id, error });
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
if (isEditor) {
|
|
99
|
+
callbacks.running = ({ id }) => {
|
|
100
|
+
console.log('running', id);
|
|
101
|
+
let jobId = id;
|
|
102
|
+
let job = $jobsById[jobId];
|
|
103
|
+
if (job && !job.started_at) {
|
|
104
|
+
$jobsById[jobId] = { ...job, started_at: Date.now() };
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return callbacks;
|
|
109
|
+
}
|
|
59
110
|
function refreshIfAutoRefresh(src) {
|
|
60
111
|
// console.log(
|
|
61
112
|
// 'refreshIfAutoRefresh',
|
|
@@ -151,7 +202,7 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
|
|
|
151
202
|
let jobId;
|
|
152
203
|
console.debug(`Executing ${id}`);
|
|
153
204
|
if (iterContext && $iterContext.disabled) {
|
|
154
|
-
callbacks?.
|
|
205
|
+
callbacks?.onDone?.({});
|
|
155
206
|
console.debug(`Skipping execution of ${id} because it is part of a disabled list`);
|
|
156
207
|
return;
|
|
157
208
|
}
|
|
@@ -185,7 +236,7 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
|
|
|
185
236
|
await setResult(r, job);
|
|
186
237
|
}
|
|
187
238
|
loading = false;
|
|
188
|
-
callbacks?.
|
|
239
|
+
callbacks?.onDone?.(r);
|
|
189
240
|
if (setRunnableJobEditorPanel && editorContext) {
|
|
190
241
|
editorContext.runnableJobEditorPanel.update((p) => {
|
|
191
242
|
return {
|
|
@@ -200,16 +251,16 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
|
|
|
200
251
|
if (!noToast) {
|
|
201
252
|
sendUserToast('This app is not connected to a windmill backend, it is a static preview');
|
|
202
253
|
}
|
|
203
|
-
callbacks?.
|
|
254
|
+
callbacks?.onDone?.({});
|
|
204
255
|
return;
|
|
205
256
|
}
|
|
206
257
|
if (runnable?.type === 'runnableByName' && !runnable.inlineScript) {
|
|
207
|
-
callbacks?.
|
|
258
|
+
callbacks?.onDone?.({});
|
|
208
259
|
return;
|
|
209
260
|
}
|
|
210
261
|
if (!resultJobLoader) {
|
|
211
262
|
console.warn('No test job loader');
|
|
212
|
-
callbacks?.
|
|
263
|
+
callbacks?.onDone?.({});
|
|
213
264
|
return;
|
|
214
265
|
}
|
|
215
266
|
try {
|
|
@@ -219,7 +270,7 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
|
|
|
219
270
|
addJob(uuid);
|
|
220
271
|
}
|
|
221
272
|
return uuid;
|
|
222
|
-
}, callbacks);
|
|
273
|
+
}, genCallbacks(callbacks ?? {}));
|
|
223
274
|
if (setRunnableJobEditorPanel && editorContext) {
|
|
224
275
|
editorContext.runnableJobEditorPanel.update((p) => {
|
|
225
276
|
return {
|
|
@@ -234,7 +285,7 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
|
|
|
234
285
|
let error = e.body ?? e.message;
|
|
235
286
|
updateResult({ error });
|
|
236
287
|
$errorByComponent[id] = { error };
|
|
237
|
-
callbacks?.
|
|
288
|
+
callbacks?.onError?.({ error });
|
|
238
289
|
sendUserToast(error, true);
|
|
239
290
|
loading = false;
|
|
240
291
|
}
|
|
@@ -301,9 +352,6 @@ export async function runComponent(noToast = true, inlineScriptOverride, setRunn
|
|
|
301
352
|
$errorByComponent[id] = { error };
|
|
302
353
|
}
|
|
303
354
|
}
|
|
304
|
-
async function setJobId(jobId) {
|
|
305
|
-
outputs.jobId?.set(jobId);
|
|
306
|
-
}
|
|
307
355
|
function recordJob(jobId, result, jobError, transformer) {
|
|
308
356
|
const error = jobError ?? JSON.stringify(transformer?.error, null, 4);
|
|
309
357
|
if (isEditor && jobId) {
|
|
@@ -415,13 +463,13 @@ onMount(() => {
|
|
|
415
463
|
dispatch('recompute');
|
|
416
464
|
rejectCb = reject;
|
|
417
465
|
executeComponent(true, inlineScript, setRunnableJobEditorPanel, undefined, {
|
|
418
|
-
|
|
466
|
+
onDone: (x) => {
|
|
419
467
|
resolve(x);
|
|
420
468
|
},
|
|
421
|
-
|
|
469
|
+
onCancel: () => {
|
|
422
470
|
reject();
|
|
423
471
|
},
|
|
424
|
-
|
|
472
|
+
onError: (e) => {
|
|
425
473
|
console.error(e);
|
|
426
474
|
reject(e);
|
|
427
475
|
}
|
|
@@ -570,47 +618,10 @@ $effect(() => {
|
|
|
570
618
|
{/each}
|
|
571
619
|
{/if}
|
|
572
620
|
|
|
573
|
-
<
|
|
621
|
+
<JobLoader
|
|
574
622
|
{allowConcurentRequests}
|
|
575
|
-
|
|
576
|
-
on:started={(e) => {
|
|
577
|
-
console.log('started', e.detail)
|
|
578
|
-
loading = true
|
|
579
|
-
setJobId(e.detail)
|
|
580
|
-
dispatch('started', e.detail)
|
|
581
|
-
}}
|
|
623
|
+
onlyResult
|
|
582
624
|
workspaceOverride={workspace}
|
|
583
|
-
on:done={(e) => {
|
|
584
|
-
lastJobId = e.detail.id
|
|
585
|
-
setResult(e.detail.result, e.detail.id)
|
|
586
|
-
loading = false
|
|
587
|
-
dispatch('done', { id: e.detail?.id, result: e.detail?.result })
|
|
588
|
-
}}
|
|
589
|
-
on:cancel={(e) => {
|
|
590
|
-
let jobId = e.detail
|
|
591
|
-
console.debug('cancel', jobId)
|
|
592
|
-
let job = $jobsById[jobId]
|
|
593
|
-
if (job && job.created_at && !job.duration_ms) {
|
|
594
|
-
$jobsById[jobId] = {
|
|
595
|
-
...job,
|
|
596
|
-
started_at: job.started_at ?? Date.now(),
|
|
597
|
-
duration_ms: Date.now() - (job.started_at ?? job.created_at)
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
dispatch('cancel', { id: e.detail })
|
|
601
|
-
}}
|
|
602
|
-
on:running={(e) => {
|
|
603
|
-
let jobId = e.detail
|
|
604
|
-
let job = $jobsById[jobId]
|
|
605
|
-
if (job && !job.started_at) {
|
|
606
|
-
$jobsById[jobId] = { ...job, started_at: Date.now() }
|
|
607
|
-
}
|
|
608
|
-
}}
|
|
609
|
-
on:doneError={(e) => {
|
|
610
|
-
setResult({ error: e.detail.error }, e.detail.id)
|
|
611
|
-
loading = false
|
|
612
|
-
dispatch('doneError', { id: e.detail.id, result: e.detail.result })
|
|
613
|
-
}}
|
|
614
625
|
bind:this={resultJobLoader}
|
|
615
626
|
/>
|
|
616
627
|
|
|
@@ -36,10 +36,10 @@ interface Props {
|
|
|
36
36
|
replaceCallback?: boolean;
|
|
37
37
|
children?: import('svelte').Snippet;
|
|
38
38
|
}
|
|
39
|
-
type
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
type RunnableCallback = {
|
|
40
|
+
onDone?: (r: any) => void;
|
|
41
|
+
onCancel?: () => void;
|
|
42
|
+
onError?: (e: any) => void;
|
|
43
43
|
};
|
|
44
44
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
45
45
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -92,7 +92,7 @@ declare const RunnableComponent: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
92
92
|
};
|
|
93
93
|
force_viewer_allow_user_resources?: Array<(string)>;
|
|
94
94
|
}>;
|
|
95
|
-
runComponent: (noToast?: boolean, inlineScriptOverride?: InlineScript, setRunnableJobEditorPanel?: boolean, dynamicArgsOverride?: Record<string, any>, callbacks?:
|
|
95
|
+
runComponent: (noToast?: boolean, inlineScriptOverride?: InlineScript, setRunnableJobEditorPanel?: boolean, dynamicArgsOverride?: Record<string, any>, callbacks?: RunnableCallback) => Promise<string | undefined>;
|
|
96
96
|
}, "result" | "loading">;
|
|
97
97
|
type RunnableComponent = InstanceType<typeof RunnableComponent>;
|
|
98
98
|
export default RunnableComponent;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang="ts">import { getContext, onDestroy } from 'svelte';
|
|
1
|
+
<script lang="ts">import { getContext, onDestroy, untrack } from 'svelte';
|
|
2
2
|
import { initConfig, initOutput } from '../../editor/appUtils';
|
|
3
3
|
import { initCss } from '../../utils';
|
|
4
4
|
import AlignWrapper from '../helpers/AlignWrapper.svelte';
|
|
@@ -9,7 +9,7 @@ import ResolveStyle from '../helpers/ResolveStyle.svelte';
|
|
|
9
9
|
import { twMerge } from 'tailwind-merge';
|
|
10
10
|
import LightweightResourcePicker from '../../../LightweightResourcePicker.svelte';
|
|
11
11
|
let { id, configuration, verticalAlignment = undefined, customCss = undefined, render } = $props();
|
|
12
|
-
const { app, worldStore, componentControl } = getContext('AppViewerContext');
|
|
12
|
+
const { app, worldStore, componentControl, isEditor, mode } = getContext('AppViewerContext');
|
|
13
13
|
let resolvedConfig = $state(initConfig(components['userresourcecomponent'].initialData.configuration, configuration));
|
|
14
14
|
const iterContext = getContext('ListWrapperContext');
|
|
15
15
|
const listInputs = getContext('ListInputs');
|
|
@@ -18,8 +18,29 @@ let outputs = initOutput($worldStore, id, {
|
|
|
18
18
|
});
|
|
19
19
|
let css = $state(initCss($app.css?.['userresourcecomponent'], customCss));
|
|
20
20
|
let classInput = $derived(twMerge('windmillapp w-full px-2', css?.input?.class ?? '', 'wm-input', 'wm-user-resource-select'));
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
function getDefaultValue() {
|
|
22
|
+
if (resolvedConfig.defaultValue && typeof resolvedConfig.defaultValue === 'string') {
|
|
23
|
+
const nval = resolvedConfig.defaultValue;
|
|
24
|
+
return nval.replace('$res:', '');
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
let value = $state(outputs.result.peak()?.replace('$res:', '') ?? getDefaultValue());
|
|
29
|
+
$effect(() => {
|
|
30
|
+
value;
|
|
31
|
+
untrack(() => assignValue(value));
|
|
32
|
+
});
|
|
33
|
+
let lastDefaultValue = $state(getDefaultValue());
|
|
34
|
+
$effect(() => {
|
|
35
|
+
// when in dnd mode, we react to the default value being changed for better UX
|
|
36
|
+
if (isEditor && $mode === 'dnd') {
|
|
37
|
+
const currentDefaultValue = getDefaultValue(); // reactive
|
|
38
|
+
if (lastDefaultValue !== currentDefaultValue) {
|
|
39
|
+
value = currentDefaultValue;
|
|
40
|
+
lastDefaultValue = currentDefaultValue;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
23
44
|
onDestroy(() => {
|
|
24
45
|
listInputs?.remove(id);
|
|
25
46
|
});
|
|
@@ -76,10 +97,7 @@ let resourcePicker = $state(undefined);
|
|
|
76
97
|
<LightweightResourcePicker
|
|
77
98
|
expressOAuthSetup={resolvedConfig.expressOauthSetup}
|
|
78
99
|
bind:this={resourcePicker}
|
|
79
|
-
|
|
80
|
-
on:change={(e) => {
|
|
81
|
-
assignValue(e.detail)
|
|
82
|
-
}}
|
|
100
|
+
bind:value
|
|
83
101
|
disabled={resolvedConfig.disabled}
|
|
84
102
|
resourceType={resolvedConfig.resourceType}
|
|
85
103
|
/>
|
|
@@ -179,11 +179,17 @@ async function computeTriggerables() {
|
|
|
179
179
|
.filter(Boolean);
|
|
180
180
|
if (items.findIndex((x) => {
|
|
181
181
|
const c = x.data;
|
|
182
|
-
if (c.type === 'schemaformcomponent'
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
182
|
+
if (c.type === 'schemaformcomponent' ||
|
|
183
|
+
c.type === 'formbuttoncomponent' ||
|
|
184
|
+
c.type === 'formcomponent') {
|
|
185
|
+
const props = c.type === 'schemaformcomponent'
|
|
186
|
+
? c.componentInput?.value?.properties
|
|
187
|
+
: c.componentInput?.runnable?.type === 'runnableByName'
|
|
188
|
+
? c.componentInput?.runnable?.inlineScript?.schema?.properties
|
|
189
|
+
: c.componentInput?.runnable?.schema?.properties;
|
|
190
|
+
return (Object.values(props ?? {}).findIndex((p) => (p?.type === 'object' && p?.format === 'resource-s3_object') ||
|
|
191
|
+
(p?.type === 'array' &&
|
|
192
|
+
(p?.items?.resourceType === 's3object' || p?.items?.resourceType === 's3_object'))) !== -1);
|
|
187
193
|
}
|
|
188
194
|
else {
|
|
189
195
|
return false;
|
|
@@ -12,18 +12,18 @@ import { classNames, truncateRev, isFlowPreview } from '../../../utils';
|
|
|
12
12
|
import PanelSection from './settingsPanel/common/PanelSection.svelte';
|
|
13
13
|
import AppTimeline from './AppTimeline.svelte';
|
|
14
14
|
import HighlightCode from '../../HighlightCode.svelte';
|
|
15
|
-
import
|
|
15
|
+
import JobLoader from '../../JobLoader.svelte';
|
|
16
16
|
import { createEventDispatcher, untrack } from 'svelte';
|
|
17
17
|
let { open = $bindable(false), jobs, jobsById, hasErrors = false, selectedJobId = $bindable(undefined), refreshComponents = undefined, errorByComponent = {} } = $props();
|
|
18
18
|
const dispatch = createEventDispatcher();
|
|
19
|
-
let
|
|
19
|
+
let jobLoader = $state();
|
|
20
20
|
let job = $state(undefined);
|
|
21
21
|
let testIsLoading = $state(false);
|
|
22
22
|
let rightColumnSelect = $state('timeline');
|
|
23
23
|
$effect(() => {
|
|
24
24
|
selectedJobId &&
|
|
25
25
|
!selectedJobId?.includes('Frontend') &&
|
|
26
|
-
untrack(() => selectedJobId &&
|
|
26
|
+
untrack(() => selectedJobId && jobLoader?.watchJob(selectedJobId));
|
|
27
27
|
});
|
|
28
28
|
$effect(() => {
|
|
29
29
|
if (selectedJobId?.includes('Frontend') && selectedJobId) {
|
|
@@ -32,7 +32,7 @@ $effect(() => {
|
|
|
32
32
|
});
|
|
33
33
|
</script>
|
|
34
34
|
|
|
35
|
-
<
|
|
35
|
+
<JobLoader noCode={true} bind:this={jobLoader} bind:isLoading={testIsLoading} bind:job />
|
|
36
36
|
|
|
37
37
|
<Drawer bind:open size="900px">
|
|
38
38
|
<DrawerContent
|
|
@@ -149,7 +149,7 @@ $effect(() => {
|
|
|
149
149
|
<Button
|
|
150
150
|
color="red"
|
|
151
151
|
variant="border"
|
|
152
|
-
on:click={() =>
|
|
152
|
+
on:click={() => jobLoader?.cancelJob()}
|
|
153
153
|
>
|
|
154
154
|
<Loader2 size={14} class="animate-spin mr-2" />
|
|
155
155
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<script lang="ts">import { getContext, untrack } from 'svelte';
|
|
2
|
-
import
|
|
2
|
+
import JobLoader from '../../JobLoader.svelte';
|
|
3
3
|
import RunnableJobPanelInner from './RunnableJobPanelInner.svelte';
|
|
4
4
|
let { float = true, hidden = false, testJob = $bindable(undefined), jobToWatch = $bindable(undefined), width = undefined } = $props();
|
|
5
5
|
const { runnableJobEditorPanel, selectedComponentInEditor } = getContext('AppEditorContext');
|
|
6
6
|
let testIsLoading = $state(false);
|
|
7
|
-
let
|
|
7
|
+
let jobLoader = $state();
|
|
8
8
|
function updateSelectedJob() {
|
|
9
9
|
const selectedComponent = $selectedComponentInEditor;
|
|
10
10
|
if (selectedComponent) {
|
|
@@ -17,7 +17,7 @@ function updateSelectedJob() {
|
|
|
17
17
|
testJob = undefined;
|
|
18
18
|
}
|
|
19
19
|
jobToWatch = { componentId: selectedComponent, job: backendJob };
|
|
20
|
-
|
|
20
|
+
jobLoader?.watchJob(backendJob);
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
23
|
testJob = undefined;
|
|
@@ -38,7 +38,7 @@ $effect(() => {
|
|
|
38
38
|
});
|
|
39
39
|
</script>
|
|
40
40
|
|
|
41
|
-
<
|
|
41
|
+
<JobLoader bind:this={jobLoader} bind:isLoading={testIsLoading} bind:job={testJob} />
|
|
42
42
|
|
|
43
43
|
{#if ($runnableJobEditorPanel.focused && $selectedComponentInEditor) || logDrawerOpen || resultDrawerOpen || !float}
|
|
44
44
|
{@const frontendJob = $runnableJobEditorPanel?.frontendJobs[$selectedComponentInEditor ?? '']}
|
|
@@ -2665,6 +2665,12 @@ export declare const components: {
|
|
|
2665
2665
|
readonly componentInput: undefined;
|
|
2666
2666
|
readonly configuration: {
|
|
2667
2667
|
readonly items: StaticAppInput;
|
|
2668
|
+
readonly defaultValue: {
|
|
2669
|
+
readonly type: "static";
|
|
2670
|
+
readonly fieldType: "text";
|
|
2671
|
+
readonly value: undefined;
|
|
2672
|
+
readonly tooltip: "Format: $res:path/to/resource";
|
|
2673
|
+
};
|
|
2668
2674
|
readonly placeholder: {
|
|
2669
2675
|
readonly type: "static";
|
|
2670
2676
|
readonly fieldType: "text";
|
|
@@ -2704,6 +2710,12 @@ export declare const components: {
|
|
|
2704
2710
|
readonly fieldType: "text";
|
|
2705
2711
|
readonly value: "postgresql";
|
|
2706
2712
|
};
|
|
2713
|
+
readonly defaultValue: {
|
|
2714
|
+
readonly type: "static";
|
|
2715
|
+
readonly fieldType: "text";
|
|
2716
|
+
readonly value: undefined;
|
|
2717
|
+
readonly tooltip: "Format: $res:path/to/resource";
|
|
2718
|
+
};
|
|
2707
2719
|
readonly expressOauthSetup: {
|
|
2708
2720
|
readonly type: "static";
|
|
2709
2721
|
readonly fieldType: "boolean";
|