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
|
@@ -1,27 +1,9 @@
|
|
|
1
1
|
<script lang="ts">import { writable } from 'svelte/store';
|
|
2
2
|
import FlowStatusViewerInner from './FlowStatusViewerInner.svelte';
|
|
3
|
-
import { createEventDispatcher, setContext } from 'svelte';
|
|
3
|
+
import { createEventDispatcher, setContext, untrack } from 'svelte';
|
|
4
4
|
import { isOwner as loadIsOwner } from '../utils';
|
|
5
5
|
import { userStore, workspaceStore } from '../stores';
|
|
6
|
-
|
|
7
|
-
export let initialJob = undefined;
|
|
8
|
-
export let workspaceId = undefined;
|
|
9
|
-
export let flowStateStore = writable({});
|
|
10
|
-
export let selectedJobStep = undefined;
|
|
11
|
-
export let hideFlowResult = false;
|
|
12
|
-
export let hideTimeline = false;
|
|
13
|
-
export let hideDownloadInGraph = false;
|
|
14
|
-
export let hideNodeDefinition = false;
|
|
15
|
-
export let hideJobId = false;
|
|
16
|
-
export let hideDownloadLogs = false;
|
|
17
|
-
export let rightColumnSelect = 'timeline';
|
|
18
|
-
export let isOwner = false;
|
|
19
|
-
export let wideResults = false;
|
|
20
|
-
export let localModuleStates = writable({});
|
|
21
|
-
export let localDurationStatuses = writable({});
|
|
22
|
-
export let job = undefined;
|
|
23
|
-
export let render = true;
|
|
24
|
-
export let suspendStatus = writable({});
|
|
6
|
+
let { jobId, initialJob = undefined, workspaceId = undefined, flowStateStore = writable({}), selectedJobStep = $bindable(undefined), hideFlowResult = false, hideTimeline = false, hideDownloadInGraph = false, hideNodeDefinition = false, hideJobId = false, hideDownloadLogs = false, rightColumnSelect = $bindable('timeline'), isOwner = $bindable(false), wideResults = false, localModuleStates = $bindable(writable({})), localDurationStatuses = $bindable(writable({})), job = $bindable(undefined), render = true, suspendStatus = $bindable(writable({})) } = $props();
|
|
25
7
|
let lastJobId = jobId;
|
|
26
8
|
let retryStatus = writable({});
|
|
27
9
|
setContext('FlowStatusViewer', {
|
|
@@ -45,8 +27,13 @@ async function updateJobId() {
|
|
|
45
27
|
}
|
|
46
28
|
}
|
|
47
29
|
const dispatch = createEventDispatcher();
|
|
48
|
-
let lastScriptPath = undefined;
|
|
49
|
-
|
|
30
|
+
let lastScriptPath = $state(undefined);
|
|
31
|
+
$effect.pre(() => {
|
|
32
|
+
jobId;
|
|
33
|
+
untrack(() => {
|
|
34
|
+
jobId && updateJobId();
|
|
35
|
+
});
|
|
36
|
+
});
|
|
50
37
|
</script>
|
|
51
38
|
|
|
52
39
|
<FlowStatusViewerInner
|
|
@@ -61,8 +48,8 @@ $: jobId && updateJobId();
|
|
|
61
48
|
}}
|
|
62
49
|
globalModuleStates={[]}
|
|
63
50
|
globalDurationStatuses={[]}
|
|
64
|
-
|
|
65
|
-
|
|
51
|
+
{localModuleStates}
|
|
52
|
+
{localDurationStatuses}
|
|
66
53
|
bind:selectedNode={selectedJobStep}
|
|
67
54
|
on:start
|
|
68
55
|
on:done
|
|
@@ -2,20 +2,7 @@ import { type Writable } from 'svelte/store';
|
|
|
2
2
|
import type { FlowState } from './flows/flowState';
|
|
3
3
|
import type { DurationStatus, GraphModuleState } from './graph';
|
|
4
4
|
import type { Job } from '../gen';
|
|
5
|
-
interface
|
|
6
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
7
|
-
$$bindings?: Bindings;
|
|
8
|
-
} & Exports;
|
|
9
|
-
(internal: unknown, props: Props & {
|
|
10
|
-
$$events?: Events;
|
|
11
|
-
$$slots?: Slots;
|
|
12
|
-
}): Exports & {
|
|
13
|
-
$set?: any;
|
|
14
|
-
$on?: any;
|
|
15
|
-
};
|
|
16
|
-
z_$$bindings?: Bindings;
|
|
17
|
-
}
|
|
18
|
-
declare const FlowStatusViewer: $$__sveltets_2_IsomorphicComponent<{
|
|
5
|
+
interface Props {
|
|
19
6
|
jobId: string;
|
|
20
7
|
initialJob?: Job | undefined;
|
|
21
8
|
workspaceId?: string | undefined;
|
|
@@ -27,20 +14,34 @@ declare const FlowStatusViewer: $$__sveltets_2_IsomorphicComponent<{
|
|
|
27
14
|
hideNodeDefinition?: boolean;
|
|
28
15
|
hideJobId?: boolean;
|
|
29
16
|
hideDownloadLogs?: boolean;
|
|
30
|
-
rightColumnSelect?:
|
|
17
|
+
rightColumnSelect?: 'timeline' | 'node_status' | 'node_definition' | 'user_states';
|
|
31
18
|
isOwner?: boolean;
|
|
32
19
|
wideResults?: boolean;
|
|
33
20
|
localModuleStates?: Writable<Record<string, GraphModuleState>>;
|
|
34
21
|
localDurationStatuses?: Writable<Record<string, DurationStatus>>;
|
|
35
22
|
job?: Job | undefined;
|
|
36
23
|
render?: boolean;
|
|
37
|
-
suspendStatus?:
|
|
38
|
-
}
|
|
24
|
+
suspendStatus?: any;
|
|
25
|
+
}
|
|
26
|
+
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> {
|
|
27
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
28
|
+
$$bindings?: Bindings;
|
|
29
|
+
} & Exports;
|
|
30
|
+
(internal: unknown, props: Props & {
|
|
31
|
+
$$events?: Events;
|
|
32
|
+
$$slots?: Slots;
|
|
33
|
+
}): Exports & {
|
|
34
|
+
$set?: any;
|
|
35
|
+
$on?: any;
|
|
36
|
+
};
|
|
37
|
+
z_$$bindings?: Bindings;
|
|
38
|
+
}
|
|
39
|
+
declare const FlowStatusViewer: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
39
40
|
start: CustomEvent<any>;
|
|
40
41
|
done: CustomEvent<any>;
|
|
41
42
|
jobsLoaded: CustomEvent<any>;
|
|
42
43
|
} & {
|
|
43
44
|
[evt: string]: CustomEvent<any>;
|
|
44
|
-
}, {}, {},
|
|
45
|
+
}, {}, {}, "job" | "isOwner" | "suspendStatus" | "localDurationStatuses" | "rightColumnSelect" | "localModuleStates" | "selectedJobStep">;
|
|
45
46
|
type FlowStatusViewer = InstanceType<typeof FlowStatusViewer>;
|
|
46
47
|
export default FlowStatusViewer;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
<script lang="ts">import
|
|
1
|
+
<script lang="ts">import FlowStatusViewerInner from './FlowStatusViewerInner.svelte';
|
|
2
|
+
import { JobService, ResourceService } from '../gen';
|
|
2
3
|
import { workspaceStore } from '../stores';
|
|
3
4
|
import { base } from '../base';
|
|
4
5
|
import FlowJobResult from './FlowJobResult.svelte';
|
|
5
6
|
import DisplayResult from './DisplayResult.svelte';
|
|
6
|
-
import { createEventDispatcher, getContext, tick } from 'svelte';
|
|
7
|
+
import { createEventDispatcher, getContext, setContext, tick, untrack } from 'svelte';
|
|
7
8
|
import { onDestroy } from 'svelte';
|
|
8
9
|
import { Badge, Button, Skeleton, Tab } from './common';
|
|
9
10
|
import Tabs from './common/tabs/Tabs.svelte';
|
|
10
11
|
import {} from './graph';
|
|
11
12
|
import ModuleStatus from './ModuleStatus.svelte';
|
|
12
|
-
import { isScriptPreview, msToSec, truncateRev } from '../utils';
|
|
13
|
+
import { clone, isScriptPreview, msToSec, readFieldsRecursively, truncateRev } from '../utils';
|
|
13
14
|
import JobArgs from './JobArgs.svelte';
|
|
14
15
|
import { ChevronDown, Hourglass } from 'lucide-svelte';
|
|
15
16
|
import { deepEqual } from 'fast-equals';
|
|
@@ -20,60 +21,45 @@ import Alert from './common/alert/Alert.svelte';
|
|
|
20
21
|
import FlowGraphViewerStep from './FlowGraphViewerStep.svelte';
|
|
21
22
|
import FlowGraphV2 from './graph/FlowGraphV2.svelte';
|
|
22
23
|
import { buildPrefix } from './graph/graphBuilder.svelte';
|
|
23
|
-
import {
|
|
24
|
+
import { parseInputArgsAssets } from './assets/lib';
|
|
24
25
|
import FlowPreviewResult from './FlowPreviewResult.svelte';
|
|
26
|
+
import { createState } from '../svelte5Utils.svelte';
|
|
27
|
+
import JobLoader from './JobLoader.svelte';
|
|
25
28
|
const dispatch = createEventDispatcher();
|
|
26
29
|
let { flowStateStore, retryStatus, suspendStatus, hideDownloadInGraph, hideTimeline, hideNodeDefinition, hideDownloadLogs, hideJobId } = getContext('FlowStatusViewer');
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
export let localDurationStatuses = writable({});
|
|
54
|
-
let recursiveRefresh = {};
|
|
55
|
-
$: inputAssets = parseInputAssets(job?.args ?? {});
|
|
56
|
-
function parseInputAssets(args) {
|
|
57
|
-
const arr = [];
|
|
58
|
-
for (const v of Object.values(args)) {
|
|
59
|
-
if (typeof v === 'string') {
|
|
60
|
-
const asset = parseAssetFromString(v);
|
|
61
|
-
if (asset)
|
|
62
|
-
arr.push(asset);
|
|
63
|
-
}
|
|
64
|
-
else if (v && typeof v === 'object' && typeof v['s3'] === 'string') {
|
|
65
|
-
const s3 = v['s3'];
|
|
66
|
-
const storage = typeof v['storage'] == 'string' ? v['storage'] : undefined;
|
|
67
|
-
arr.push({ kind: 's3object', path: `${storage ?? ''}/${s3}` });
|
|
30
|
+
let { jobId, initialJob = undefined, workspaceId = undefined, flowJobIds = undefined, innerModule = undefined, globalRefreshes = $bindable({}), render = true, isOwner = false, selectedNode = $bindable(undefined), globalModuleStates, globalDurationStatuses, childFlow = false, isSubflow = false, reducedPolling = false, wideResults = false, hideFlowResult = false, workspace = $workspaceStore, prefix = undefined, subflowParentsGlobalModuleStates = [], subflowParentsDurationStatuses = [], isForloopSelected = false, parentRecursiveRefresh = $bindable({}), job = $bindable(undefined), rightColumnSelect = $bindable('timeline'), localModuleStates = writable({}), localDurationStatuses = writable({}) } = $props();
|
|
31
|
+
let recursiveRefresh = $state({});
|
|
32
|
+
// Add support for the input args assets shown as an asset node
|
|
33
|
+
const _flowGraphAssetsCtx = getContext('FlowGraphAssetContext');
|
|
34
|
+
let extendedFlowGraphAssetsCtx = $state(createState(clone(_flowGraphAssetsCtx)));
|
|
35
|
+
setContext('FlowGraphAssetContext', extendedFlowGraphAssetsCtx);
|
|
36
|
+
$effect(() => {
|
|
37
|
+
readFieldsRecursively(_flowGraphAssetsCtx);
|
|
38
|
+
job?.args;
|
|
39
|
+
untrack(() => {
|
|
40
|
+
if (extendedFlowGraphAssetsCtx && _flowGraphAssetsCtx) {
|
|
41
|
+
const inputAssets = parseInputArgsAssets(job?.args ?? {});
|
|
42
|
+
const resourceMetadataCache = _flowGraphAssetsCtx.val.resourceMetadataCache;
|
|
43
|
+
for (const asset of inputAssets) {
|
|
44
|
+
if (asset.kind === 'resource' && !(asset.path in resourceMetadataCache)) {
|
|
45
|
+
resourceMetadataCache[asset.path] = undefined;
|
|
46
|
+
ResourceService.getResource({
|
|
47
|
+
workspace: workspace ?? $workspaceStore,
|
|
48
|
+
path: asset.path
|
|
49
|
+
})
|
|
50
|
+
.then((r) => (resourceMetadataCache[asset.path] = r))
|
|
51
|
+
.catch((err) => { });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
extendedFlowGraphAssetsCtx.val = clone(_flowGraphAssetsCtx?.val);
|
|
55
|
+
extendedFlowGraphAssetsCtx.val.additionalAssetsMap['Input'] = inputAssets;
|
|
68
56
|
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
let
|
|
73
|
-
let retry_selected = '';
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
let jobResults = $state(flowJobIds?.flowJobs?.map((x, id) => `iter #${id + 1} not loaded by frontend yet`) ?? []);
|
|
60
|
+
let retry_selected = $state('');
|
|
74
61
|
let timeout = undefined;
|
|
75
|
-
let expandedSubflows = {};
|
|
76
|
-
$: flowJobIds?.moduleId && onFlowModuleId();
|
|
62
|
+
let expandedSubflows = $state({});
|
|
77
63
|
let selectedId = writable(selectedNode);
|
|
78
64
|
function onFlowModuleId() {
|
|
79
65
|
if (globalRefreshes) {
|
|
@@ -247,7 +233,7 @@ function initializeByJob(modId) {
|
|
|
247
233
|
}));
|
|
248
234
|
}
|
|
249
235
|
}
|
|
250
|
-
let innerModules = [];
|
|
236
|
+
let innerModules = $state([]);
|
|
251
237
|
function updateStatus(status) {
|
|
252
238
|
innerModules =
|
|
253
239
|
status?.modules?.concat(status.failure_module.type != 'WaitingForPriorSteps' ? status.failure_module : []) ?? [];
|
|
@@ -283,7 +269,8 @@ function updateInnerModules() {
|
|
|
283
269
|
JobService.getJob({
|
|
284
270
|
workspace: workspaceId ?? $workspaceStore ?? '',
|
|
285
271
|
id: mod.job ?? '',
|
|
286
|
-
noLogs: true
|
|
272
|
+
noLogs: true,
|
|
273
|
+
noCode: true
|
|
287
274
|
})
|
|
288
275
|
.then((job) => {
|
|
289
276
|
const newState = {
|
|
@@ -300,54 +287,27 @@ function updateInnerModules() {
|
|
|
300
287
|
console.error(`Could not load inner module for job ${mod.job}`, e);
|
|
301
288
|
});
|
|
302
289
|
}
|
|
303
|
-
else if (mod.flow_jobs &&
|
|
290
|
+
else if ((mod.flow_jobs || mod.branch_chosen) &&
|
|
304
291
|
(mod.type == 'Success' || mod.type == 'Failure') &&
|
|
305
292
|
!['Success', 'Failure'].includes($localModuleStates?.[mod.id ?? '']?.type)) {
|
|
293
|
+
let branchChosen = mod.branch_chosen
|
|
294
|
+
? {
|
|
295
|
+
branchChosen: mod.branch_chosen.type == 'default' ? 0 : (mod.branch_chosen.branch ?? 0) + 1
|
|
296
|
+
}
|
|
297
|
+
: {};
|
|
306
298
|
setModuleState(mod.id ?? '', {
|
|
307
|
-
type: mod.type
|
|
299
|
+
type: mod.type,
|
|
300
|
+
...branchChosen
|
|
308
301
|
}, true);
|
|
309
302
|
}
|
|
310
303
|
else if (isForloopSelected) {
|
|
311
304
|
setModuleState(mod.id ?? '', {}, true);
|
|
312
305
|
}
|
|
313
|
-
|
|
314
|
-
// let states = getTopModuleStates()
|
|
315
|
-
// if (states) {
|
|
316
|
-
// states[mod.id ?? ''] = $localModuleStates[mod.id ?? '']
|
|
317
|
-
// }
|
|
318
|
-
// }
|
|
319
|
-
if (mod.branch_chosen) {
|
|
306
|
+
if (mod.flow_jobs_success) {
|
|
320
307
|
setModuleState(mod.id ?? '', {
|
|
321
|
-
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* else if (mod.type === 'Failure' || mod.type === 'WaitingForPriorSteps') {
|
|
326
|
-
if (job?.type === 'CompletedJob') {
|
|
327
|
-
setModuleState('b', {
|
|
328
|
-
type: 'Failure',
|
|
329
|
-
args: job?.args,
|
|
330
|
-
job_id: job?.id,
|
|
331
|
-
result: job?.result
|
|
332
|
-
})
|
|
333
|
-
}
|
|
308
|
+
flow_jobs_success: mod.flow_jobs_success
|
|
309
|
+
});
|
|
334
310
|
}
|
|
335
|
-
*/
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
$: isForloopSelected && globalModuleStates && debounceLoadJobInProgress();
|
|
340
|
-
async function getNewJob(jobId, initialJob) {
|
|
341
|
-
if (jobId == initialJob?.id &&
|
|
342
|
-
initialJob?.id != undefined &&
|
|
343
|
-
initialJob?.type === 'CompletedJob') {
|
|
344
|
-
return initialJob;
|
|
345
|
-
}
|
|
346
|
-
else {
|
|
347
|
-
return await JobService.getJob({
|
|
348
|
-
workspace: workspaceId ?? $workspaceStore ?? '',
|
|
349
|
-
id: jobId ?? '',
|
|
350
|
-
noLogs: true
|
|
351
311
|
});
|
|
352
312
|
}
|
|
353
313
|
}
|
|
@@ -367,9 +327,20 @@ function debounceLoadJobInProgress() {
|
|
|
367
327
|
timeout = undefined;
|
|
368
328
|
}, pollingRate);
|
|
369
329
|
}
|
|
370
|
-
let
|
|
371
|
-
let notAnonynmous = false;
|
|
330
|
+
let notAnonynmous = $state(false);
|
|
372
331
|
let started = false;
|
|
332
|
+
let jobLoader = undefined;
|
|
333
|
+
function setJob(newJob, force) {
|
|
334
|
+
if (!deepEqual(job, newJob) || isForloopSelected || force) {
|
|
335
|
+
job = newJob;
|
|
336
|
+
job?.flow_status && updateStatus(job?.flow_status);
|
|
337
|
+
dispatch('jobsLoaded', { job, force: false });
|
|
338
|
+
notAnonynmous = false;
|
|
339
|
+
if (job?.type == 'CompletedJob' && !destroyed) {
|
|
340
|
+
dispatch('done', job);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
373
344
|
async function loadJobInProgress() {
|
|
374
345
|
if (!started) {
|
|
375
346
|
started = true;
|
|
@@ -377,31 +348,28 @@ async function loadJobInProgress() {
|
|
|
377
348
|
}
|
|
378
349
|
if (jobId != '00000000-0000-0000-0000-000000000000') {
|
|
379
350
|
try {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
351
|
+
if (jobId == initialJob?.id &&
|
|
352
|
+
initialJob?.id != undefined &&
|
|
353
|
+
initialJob?.type === 'CompletedJob') {
|
|
354
|
+
setJob(initialJob, false);
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
jobLoader?.watchJob(jobId, {
|
|
358
|
+
change(newJob) {
|
|
359
|
+
setJob(newJob, true);
|
|
360
|
+
}
|
|
361
|
+
});
|
|
385
362
|
}
|
|
386
|
-
errorCount = 0;
|
|
387
|
-
notAnonynmous = false;
|
|
388
363
|
}
|
|
389
364
|
catch (e) {
|
|
390
365
|
if (e?.body?.includes('As a non logged in user, you can only see jobs ran by anonymous users')) {
|
|
391
366
|
notAnonynmous = true;
|
|
392
367
|
}
|
|
393
368
|
else {
|
|
394
|
-
errorCount += 1;
|
|
395
369
|
console.error(e);
|
|
396
370
|
}
|
|
397
371
|
}
|
|
398
372
|
}
|
|
399
|
-
if (job?.type !== 'CompletedJob' && errorCount < 4 && !destroyed) {
|
|
400
|
-
debounceLoadJobInProgress();
|
|
401
|
-
}
|
|
402
|
-
else {
|
|
403
|
-
dispatch('done', job);
|
|
404
|
-
}
|
|
405
373
|
}
|
|
406
374
|
let destroyed = false;
|
|
407
375
|
updateRecursiveRefresh(jobId);
|
|
@@ -435,16 +403,13 @@ async function updateJobId() {
|
|
|
435
403
|
await loadJobInProgress();
|
|
436
404
|
}
|
|
437
405
|
}
|
|
438
|
-
$: jobId && updateJobId();
|
|
439
|
-
$: isListJob = flowJobIds != undefined && Array.isArray(flowJobIds?.flowJobs);
|
|
440
406
|
function getTopModuleStates() {
|
|
441
407
|
return get(globalModuleStates?.[globalModuleStates?.length - 1]);
|
|
442
408
|
}
|
|
443
|
-
let forloop_selected = getTopModuleStates()?.[flowJobIds?.moduleId ?? '']?.selectedForloop;
|
|
409
|
+
let forloop_selected = $state(getTopModuleStates()?.[flowJobIds?.moduleId ?? '']?.selectedForloop);
|
|
444
410
|
let sub = undefined;
|
|
445
411
|
let timeoutForloopSelectedSub = undefined;
|
|
446
412
|
let timeoutForloopSelected = undefined;
|
|
447
|
-
$: flowJobIds?.moduleId && onModuleIdChange();
|
|
448
413
|
function onModuleIdChange() {
|
|
449
414
|
clearTimeout(timeoutForloopSelectedSub);
|
|
450
415
|
timeoutForloopSelectedSub = setTimeout(() => {
|
|
@@ -465,7 +430,6 @@ onDestroy(() => {
|
|
|
465
430
|
timeout && clearTimeout(timeout);
|
|
466
431
|
sub?.();
|
|
467
432
|
});
|
|
468
|
-
$: selected = isListJob ? 'sequence' : 'graph';
|
|
469
433
|
function isSuccess(arg) {
|
|
470
434
|
if (arg == undefined) {
|
|
471
435
|
return undefined;
|
|
@@ -653,7 +617,7 @@ function innerJobLoaded(jobLoaded, j, clicked, force) {
|
|
|
653
617
|
}
|
|
654
618
|
}
|
|
655
619
|
}
|
|
656
|
-
let flowTimeline;
|
|
620
|
+
let flowTimeline = $state();
|
|
657
621
|
function loadPreviousIters(lenToAdd) {
|
|
658
622
|
let r = $localDurationStatuses[flowJobIds?.moduleId ?? ''];
|
|
659
623
|
if (r.iteration_from) {
|
|
@@ -667,9 +631,9 @@ function loadPreviousIters(lenToAdd) {
|
|
|
667
631
|
];
|
|
668
632
|
// updateSlicedListJobIds()
|
|
669
633
|
}
|
|
670
|
-
let stepDetail = undefined;
|
|
671
|
-
let storedListJobs = {};
|
|
672
|
-
let wrapperHeight = 0;
|
|
634
|
+
let stepDetail = $state(undefined);
|
|
635
|
+
let storedListJobs = $state({});
|
|
636
|
+
let wrapperHeight = $state(0);
|
|
673
637
|
function removeFailureNode(id, parent_module) {
|
|
674
638
|
if (id?.startsWith('failure-') && parent_module) {
|
|
675
639
|
;
|
|
@@ -704,9 +668,24 @@ function allModulesForTimeline(modules, expandedSubflows) {
|
|
|
704
668
|
}
|
|
705
669
|
return rec(ids, undefined);
|
|
706
670
|
}
|
|
707
|
-
let subflowsSize = 500;
|
|
671
|
+
let subflowsSize = $state(500);
|
|
672
|
+
$effect(() => {
|
|
673
|
+
flowJobIds?.moduleId && untrack(() => onFlowModuleId());
|
|
674
|
+
});
|
|
675
|
+
$effect(() => {
|
|
676
|
+
isForloopSelected && globalModuleStates && untrack(() => debounceLoadJobInProgress());
|
|
677
|
+
});
|
|
678
|
+
$effect(() => {
|
|
679
|
+
jobId && untrack(() => updateJobId());
|
|
680
|
+
});
|
|
681
|
+
let isListJob = $derived(flowJobIds != undefined && Array.isArray(flowJobIds?.flowJobs));
|
|
682
|
+
$effect(() => {
|
|
683
|
+
flowJobIds?.moduleId && untrack(() => onModuleIdChange());
|
|
684
|
+
});
|
|
685
|
+
let selected = $derived(isListJob ? 'sequence' : 'graph');
|
|
708
686
|
</script>
|
|
709
687
|
|
|
688
|
+
<JobLoader noCode noLogs bind:this={jobLoader} />
|
|
710
689
|
{#if notAnonynmous}
|
|
711
690
|
<Alert type="error" title="Required Auth">
|
|
712
691
|
As a non logged in user, you can only see jobs ran by anonymous users like you
|
|
@@ -727,7 +706,7 @@ let subflowsSize = 500;
|
|
|
727
706
|
<p class="text-tertiary italic text-xs">
|
|
728
707
|
For performance reasons, only the last 20 items are shown by default <button
|
|
729
708
|
class="text-primary underline ml-4"
|
|
730
|
-
|
|
709
|
+
onclick={() => {
|
|
731
710
|
loadPreviousIters(lenToAdd)
|
|
732
711
|
}}
|
|
733
712
|
>Load {lenToAdd} prior
|
|
@@ -736,7 +715,7 @@ let subflowsSize = 500;
|
|
|
736
715
|
{sliceFrom}
|
|
737
716
|
<button
|
|
738
717
|
class="text-primary underline ml-4"
|
|
739
|
-
|
|
718
|
+
onclick={() => {
|
|
740
719
|
loadPreviousIters(allToAdd)
|
|
741
720
|
}}
|
|
742
721
|
>Load {allToAdd} prior
|
|
@@ -807,7 +786,8 @@ let subflowsSize = 500;
|
|
|
807
786
|
storedJob = await JobService.getJob({
|
|
808
787
|
workspace: workspaceId ?? $workspaceStore ?? '',
|
|
809
788
|
id: loopJobId,
|
|
810
|
-
noLogs: true
|
|
789
|
+
noLogs: true,
|
|
790
|
+
noCode: true
|
|
811
791
|
})
|
|
812
792
|
storedListJobs[j] = storedJob
|
|
813
793
|
}
|
|
@@ -829,7 +809,7 @@ let subflowsSize = 500;
|
|
|
829
809
|
(innerModule?.type != 'forloopflow' && innerModule?.type != 'whileloopflow')}
|
|
830
810
|
<!-- <LogId id={loopJobId} /> -->
|
|
831
811
|
<div class="border p-6" class:hidden={forloop_selected != loopJobId}>
|
|
832
|
-
<
|
|
812
|
+
<FlowStatusViewerInner
|
|
833
813
|
{globalRefreshes}
|
|
834
814
|
parentRecursiveRefresh={recursiveRefresh}
|
|
835
815
|
{childFlow}
|
|
@@ -848,7 +828,7 @@ let subflowsSize = 500;
|
|
|
848
828
|
isForloopSelected={forloop_selected == loopJobId &&
|
|
849
829
|
(innerModule?.type == 'forloopflow' || innerModule?.type == 'whileloopflow')}
|
|
850
830
|
reducedPolling={reducedPolling ||
|
|
851
|
-
(flowJobIds?.flowJobs.length && flowJobIds?.flowJobs.length > 20)}
|
|
831
|
+
(!!flowJobIds?.flowJobs.length && flowJobIds?.flowJobs.length > 20)}
|
|
852
832
|
{workspaceId}
|
|
853
833
|
jobId={loopJobId}
|
|
854
834
|
on:jobsLoaded={(e) => {
|
|
@@ -918,7 +898,7 @@ let subflowsSize = 500;
|
|
|
918
898
|
|
|
919
899
|
<!-- <LogId id={loopJobId} /> -->
|
|
920
900
|
<div class="border p-6" class:hidden={retry_selected != failedRetry}>
|
|
921
|
-
<
|
|
901
|
+
<FlowStatusViewerInner
|
|
922
902
|
{globalRefreshes}
|
|
923
903
|
parentRecursiveRefresh={recursiveRefresh}
|
|
924
904
|
{childFlow}
|
|
@@ -937,7 +917,7 @@ let subflowsSize = 500;
|
|
|
937
917
|
{/if}
|
|
938
918
|
{#if ['InProgress', 'Success', 'Failure'].includes(mod.type)}
|
|
939
919
|
{#if job.raw_flow?.modules[i]?.value.type == 'flow'}
|
|
940
|
-
<
|
|
920
|
+
<FlowStatusViewerInner
|
|
941
921
|
{globalRefreshes}
|
|
942
922
|
parentRecursiveRefresh={recursiveRefresh}
|
|
943
923
|
globalModuleStates={[]}
|
|
@@ -955,7 +935,7 @@ let subflowsSize = 500;
|
|
|
955
935
|
]}
|
|
956
936
|
render={selected == 'sequence' && render}
|
|
957
937
|
{workspaceId}
|
|
958
|
-
jobId={mod.job}
|
|
938
|
+
jobId={mod.job ?? ''}
|
|
959
939
|
{reducedPolling}
|
|
960
940
|
isSubflow
|
|
961
941
|
childFlow
|
|
@@ -967,7 +947,7 @@ let subflowsSize = 500;
|
|
|
967
947
|
{:else if mod.flow_jobs?.length == 0 && mod.job == '00000000-0000-0000-0000-000000000000'}
|
|
968
948
|
<div class="text-secondary">no subflow (empty loop?)</div>
|
|
969
949
|
{:else}
|
|
970
|
-
<
|
|
950
|
+
<FlowStatusViewerInner
|
|
971
951
|
{globalRefreshes}
|
|
972
952
|
parentRecursiveRefresh={recursiveRefresh}
|
|
973
953
|
{childFlow}
|
|
@@ -978,14 +958,14 @@ let subflowsSize = 500;
|
|
|
978
958
|
{prefix}
|
|
979
959
|
{subflowParentsGlobalModuleStates}
|
|
980
960
|
{subflowParentsDurationStatuses}
|
|
981
|
-
jobId={mod.job}
|
|
961
|
+
jobId={mod.job ?? ''}
|
|
982
962
|
{reducedPolling}
|
|
983
963
|
innerModule={mod.flow_jobs ? job.raw_flow?.modules[i]?.value : undefined}
|
|
984
964
|
flowJobIds={mod.flow_jobs
|
|
985
965
|
? {
|
|
986
|
-
moduleId: mod.id,
|
|
966
|
+
moduleId: mod.id ?? '',
|
|
987
967
|
flowJobs: mod.flow_jobs,
|
|
988
|
-
flowJobsSuccess: mod.flow_jobs_success,
|
|
968
|
+
flowJobsSuccess: mod.flow_jobs_success ?? [],
|
|
989
969
|
length: mod.iterator?.itered?.length ?? mod.flow_jobs.length,
|
|
990
970
|
branchall: job?.raw_flow?.modules?.[i]?.value?.type == 'branchall'
|
|
991
971
|
}
|
|
@@ -1033,7 +1013,6 @@ let subflowsSize = 500;
|
|
|
1033
1013
|
</div>
|
|
1034
1014
|
|
|
1035
1015
|
<FlowGraphV2
|
|
1036
|
-
{inputAssets}
|
|
1037
1016
|
{selectedId}
|
|
1038
1017
|
triggerNode={true}
|
|
1039
1018
|
download={!hideDownloadInGraph}
|
|
@@ -1,20 +1,8 @@
|
|
|
1
|
+
import FlowStatusViewerInner from './FlowStatusViewerInner.svelte';
|
|
1
2
|
import { type Job, type FlowModuleValue } from '../gen';
|
|
2
3
|
import { type DurationStatus, type GraphModuleState } from './graph';
|
|
3
4
|
import { type Writable } from 'svelte/store';
|
|
4
|
-
interface
|
|
5
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
6
|
-
$$bindings?: Bindings;
|
|
7
|
-
} & Exports;
|
|
8
|
-
(internal: unknown, props: Props & {
|
|
9
|
-
$$events?: Events;
|
|
10
|
-
$$slots?: Slots;
|
|
11
|
-
}): Exports & {
|
|
12
|
-
$set?: any;
|
|
13
|
-
$on?: any;
|
|
14
|
-
};
|
|
15
|
-
z_$$bindings?: Bindings;
|
|
16
|
-
}
|
|
17
|
-
declare const FlowStatusViewerInner: $$__sveltets_2_IsomorphicComponent<{
|
|
5
|
+
interface Props {
|
|
18
6
|
jobId: string;
|
|
19
7
|
initialJob?: Job | undefined;
|
|
20
8
|
workspaceId?: string | undefined;
|
|
@@ -44,15 +32,29 @@ declare const FlowStatusViewerInner: $$__sveltets_2_IsomorphicComponent<{
|
|
|
44
32
|
isForloopSelected?: boolean;
|
|
45
33
|
parentRecursiveRefresh?: Record<string, (clear: any, root: any) => Promise<void>>;
|
|
46
34
|
job?: Job | undefined;
|
|
47
|
-
rightColumnSelect?:
|
|
35
|
+
rightColumnSelect?: 'timeline' | 'node_status' | 'node_definition' | 'user_states';
|
|
48
36
|
localModuleStates?: Writable<Record<string, GraphModuleState>>;
|
|
49
37
|
localDurationStatuses?: Writable<Record<string, DurationStatus>>;
|
|
50
|
-
}
|
|
38
|
+
}
|
|
39
|
+
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> {
|
|
40
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
41
|
+
$$bindings?: Bindings;
|
|
42
|
+
} & Exports;
|
|
43
|
+
(internal: unknown, props: Props & {
|
|
44
|
+
$$events?: Events;
|
|
45
|
+
$$slots?: Slots;
|
|
46
|
+
}): Exports & {
|
|
47
|
+
$set?: any;
|
|
48
|
+
$on?: any;
|
|
49
|
+
};
|
|
50
|
+
z_$$bindings?: Bindings;
|
|
51
|
+
}
|
|
52
|
+
declare const FlowStatusViewerInner: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
51
53
|
jobsLoaded: CustomEvent<any>;
|
|
52
|
-
start: CustomEvent<any>;
|
|
53
54
|
done: CustomEvent<any>;
|
|
55
|
+
start: CustomEvent<any>;
|
|
54
56
|
} & {
|
|
55
57
|
[evt: string]: CustomEvent<any>;
|
|
56
|
-
}, {}, {},
|
|
58
|
+
}, {}, {}, "job" | "globalRefreshes" | "selectedNode" | "parentRecursiveRefresh" | "rightColumnSelect">;
|
|
57
59
|
type FlowStatusViewerInner = InstanceType<typeof FlowStatusViewerInner>;
|
|
58
60
|
export default FlowStatusViewerInner;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<script lang="ts">"use strict";
|
|
2
|
+
let { previewResult } = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<div class="border rounded p-2 text-xs max-h-40 overflow-y-auto bg-surface-secondary">
|
|
6
|
+
<div class="font-semibold text-[11px] mb-1 text-tertiary">Preview of changes:</div>
|
|
7
|
+
{#if !previewResult?.added?.length && !previewResult?.deleted?.length && !previewResult?.modified?.length && !previewResult?.yamlModified}
|
|
8
|
+
<div class="mt-2 text-tertiary">No changes found! The workspace is up to date.</div>
|
|
9
|
+
{:else}
|
|
10
|
+
{#if previewResult?.yamlModified}
|
|
11
|
+
<div class="mt-2">
|
|
12
|
+
<div class="text-yellow-600">Modified:</div>
|
|
13
|
+
<ul class="list-disc list-inside">
|
|
14
|
+
<li>wmill.yaml (Git sync settings)</li>
|
|
15
|
+
</ul>
|
|
16
|
+
</div>
|
|
17
|
+
{/if}
|
|
18
|
+
{#if previewResult?.added?.length}
|
|
19
|
+
<div class="mt-2">
|
|
20
|
+
<div class="text-green-600">Added:</div>
|
|
21
|
+
<ul class="list-disc list-inside">
|
|
22
|
+
{#each previewResult.added as file}
|
|
23
|
+
<li>
|
|
24
|
+
{file}{!file.includes('.') ? ' (dir)' : ''}
|
|
25
|
+
</li>
|
|
26
|
+
{/each}
|
|
27
|
+
</ul>
|
|
28
|
+
</div>
|
|
29
|
+
{/if}
|
|
30
|
+
{#if previewResult?.deleted?.length}
|
|
31
|
+
<div class="mt-2">
|
|
32
|
+
<div class="text-red-600">Deleted:</div>
|
|
33
|
+
<ul class="list-disc list-inside">
|
|
34
|
+
{#each previewResult.deleted as file}
|
|
35
|
+
<li>
|
|
36
|
+
{file}{!file.includes('.') ? ' (dir)' : ''}
|
|
37
|
+
</li>
|
|
38
|
+
{/each}
|
|
39
|
+
</ul>
|
|
40
|
+
</div>
|
|
41
|
+
{/if}
|
|
42
|
+
{#if previewResult?.modified?.length}
|
|
43
|
+
<div class="mt-2">
|
|
44
|
+
<div class="text-yellow-600">Modified:</div>
|
|
45
|
+
<ul class="list-disc list-inside">
|
|
46
|
+
{#each previewResult.modified as file}
|
|
47
|
+
<li>
|
|
48
|
+
{file}{!file.includes('.') ? ' (dir)' : ''}
|
|
49
|
+
</li>
|
|
50
|
+
{/each}
|
|
51
|
+
</ul>
|
|
52
|
+
</div>
|
|
53
|
+
{/if}
|
|
54
|
+
{/if}
|
|
55
|
+
</div>
|