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
|
@@ -46,13 +46,15 @@ function updatePositioning(historyOpen, zoom) {
|
|
|
46
46
|
placement: 'bottom',
|
|
47
47
|
gutter: 0,
|
|
48
48
|
offset: { mainAxis: 3, crossAxis: 69 * zoom },
|
|
49
|
-
overflowPadding: historyOpen ? 250 : 8
|
|
49
|
+
overflowPadding: historyOpen ? 250 : 8,
|
|
50
|
+
flip: false
|
|
50
51
|
});
|
|
51
52
|
popover?.updatePositioning({
|
|
52
53
|
placement: 'bottom',
|
|
53
54
|
gutter: 0,
|
|
54
55
|
offset: { mainAxis: 3, crossAxis: showInput ? -69 * zoom : 0 },
|
|
55
|
-
overflowPadding: historyOpen ? 250 : 8
|
|
56
|
+
overflowPadding: historyOpen ? 250 : 8,
|
|
57
|
+
flip: false
|
|
56
58
|
});
|
|
57
59
|
}
|
|
58
60
|
$effect(() => {
|
|
@@ -104,7 +106,8 @@ onMount(() => {
|
|
|
104
106
|
placement: 'bottom',
|
|
105
107
|
gutter: 0,
|
|
106
108
|
offset: { mainAxis: 3, crossAxis: 69 },
|
|
107
|
-
overflowPadding: historyOpen ? 250 : 8
|
|
109
|
+
overflowPadding: historyOpen ? 250 : 8,
|
|
110
|
+
flip: false
|
|
108
111
|
}}
|
|
109
112
|
usePointerDownOutside
|
|
110
113
|
closeOnOutsideClick={false}
|
|
@@ -139,12 +142,14 @@ onMount(() => {
|
|
|
139
142
|
{/snippet}
|
|
140
143
|
</Popover>
|
|
141
144
|
{/if}
|
|
145
|
+
|
|
142
146
|
<Popover
|
|
143
147
|
floatingConfig={{
|
|
144
148
|
placement: 'bottom',
|
|
145
149
|
gutter: 0,
|
|
146
150
|
offset: { mainAxis: 3, crossAxis: showInput ? -69 : 0 },
|
|
147
|
-
overflowPadding: historyOpen ? 250 : 8
|
|
151
|
+
overflowPadding: historyOpen ? 250 : 8,
|
|
152
|
+
flip: false
|
|
148
153
|
}}
|
|
149
154
|
usePointerDownOutside
|
|
150
155
|
closeOnOutsideClick={false}
|
|
@@ -135,7 +135,7 @@ export async function saveScheduleFromCfg(scheduleCfg, edit, workspace) {
|
|
|
135
135
|
on_success: scheduleCfg.on_success,
|
|
136
136
|
on_success_extra_args: scheduleCfg.on_success_extra_args,
|
|
137
137
|
ws_error_handler_muted: scheduleCfg.ws_error_handler_muted,
|
|
138
|
-
retry: scheduleCfg.retry,
|
|
138
|
+
retry: !scheduleCfg.is_flow ? scheduleCfg.retry : undefined,
|
|
139
139
|
summary: scheduleCfg.summary,
|
|
140
140
|
description: scheduleCfg.description,
|
|
141
141
|
no_flow_overlap: scheduleCfg.no_flow_overlap,
|
|
@@ -70,11 +70,12 @@ export type FlowEditorContext = {
|
|
|
70
70
|
};
|
|
71
71
|
export type FlowGraphAssetContext = StateStore<{
|
|
72
72
|
selectedAsset: Asset | undefined;
|
|
73
|
-
assetsMap: Record<string, AssetWithAccessType[]>;
|
|
74
73
|
s3FilePicker: S3FilePicker | undefined;
|
|
75
74
|
dbManagerDrawer: DbManagerDrawer | undefined;
|
|
76
75
|
resourceEditorDrawer: ResourceEditorDrawer | undefined;
|
|
77
76
|
resourceMetadataCache: Record<string, {
|
|
78
77
|
resource_type?: string;
|
|
79
78
|
} | undefined>;
|
|
79
|
+
additionalAssetsMap: Record<string, AssetWithAccessType[]>;
|
|
80
|
+
computeAssetsCount: (asset: Asset) => number;
|
|
80
81
|
}>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang="ts">import {
|
|
1
|
+
<script lang="ts">import { FlowService } from '../../gen';
|
|
2
2
|
import { NODE } from '.';
|
|
3
3
|
import { getContext, onDestroy, setContext, tick, untrack } from 'svelte';
|
|
4
4
|
import { get, writable } from 'svelte/store';
|
|
@@ -32,20 +32,13 @@ import SubflowBound from './renderers/nodes/SubflowBound.svelte';
|
|
|
32
32
|
import { deepEqual } from 'fast-equals';
|
|
33
33
|
import ViewportResizer from './ViewportResizer.svelte';
|
|
34
34
|
import AssetNode, { computeAssetNodes } from './renderers/nodes/AssetNode.svelte';
|
|
35
|
-
import { getAllModules } from '../flows/flowExplorer';
|
|
36
|
-
import { inferAssets } from '../../infer';
|
|
37
|
-
import OnChange from '../common/OnChange.svelte';
|
|
38
|
-
import S3FilePicker from '../S3FilePicker.svelte';
|
|
39
|
-
import DbManagerDrawer from '../DBManagerDrawer.svelte';
|
|
40
|
-
import ResourceEditorDrawer from '../ResourceEditorDrawer.svelte';
|
|
41
|
-
import { assetEq } from '../assets/lib';
|
|
42
35
|
import AssetsOverflowedNode from './renderers/nodes/AssetsOverflowedNode.svelte';
|
|
43
36
|
let useDataflow = writable(false);
|
|
44
37
|
const triggerContext = getContext('TriggerContext');
|
|
45
38
|
let fullWidth = 0;
|
|
46
39
|
let width = $state(0);
|
|
47
40
|
let simplifiableFlow = $state(undefined);
|
|
48
|
-
let { onInsert = undefined, onDelete = undefined, onMove = undefined, onDeleteBranch = undefined, onNewBranch = undefined, onSelect = undefined, onChangeId = undefined, onUpdateMock = undefined, onSelectedIteration = undefined, success = undefined, modules = [], failureModule = undefined, preprocessorModule = undefined, minHeight = 0, maxHeight = undefined, notSelectable = false, flowModuleStates = undefined, selectedId = writable(undefined), path = undefined, newFlow = false, insertable = false, earlyStop = false, cache = false, scroll = false, moving = undefined, download = false, fullSize = false, disableAi = false, triggerNode = false, workspace = $workspaceStore ?? 'NO_WORKSPACE', editMode = false, allowSimplifiedPoll = true, expandedSubflows = $bindable({}),
|
|
41
|
+
let { onInsert = undefined, onDelete = undefined, onMove = undefined, onDeleteBranch = undefined, onNewBranch = undefined, onSelect = undefined, onChangeId = undefined, onUpdateMock = undefined, onSelectedIteration = undefined, success = undefined, modules = [], failureModule = undefined, preprocessorModule = undefined, minHeight = 0, maxHeight = undefined, notSelectable = false, flowModuleStates = undefined, selectedId = writable(undefined), path = undefined, newFlow = false, insertable = false, earlyStop = false, cache = false, scroll = false, moving = undefined, download = false, fullSize = false, disableAi = false, triggerNode = false, workspace = $workspaceStore ?? 'NO_WORKSPACE', editMode = false, allowSimplifiedPoll = true, expandedSubflows = $bindable({}), onTestUpTo = undefined, onEditInput = undefined, isOwner = false, onTestFlow = undefined, isRunning = false, onCancelTestFlow = undefined, onOpenPreview = undefined, onHideJobStatus = undefined, individualStepTests = false, flowJob = undefined, showJobStatus = false, suspendStatus = writable({}), flowHasChanged = false } = $props();
|
|
49
42
|
setContext('FlowGraphContext', { selectedId, useDataflow });
|
|
50
43
|
if (triggerContext && allowSimplifiedPoll) {
|
|
51
44
|
if (isSimplifiable(modules)) {
|
|
@@ -55,66 +48,6 @@ if (triggerContext && allowSimplifiedPoll) {
|
|
|
55
48
|
computeSimplifiableFlow(modules ?? [], value ?? false);
|
|
56
49
|
});
|
|
57
50
|
}
|
|
58
|
-
const flowGraphAssetsCtx = $state({
|
|
59
|
-
val: {
|
|
60
|
-
assetsMap: inputAssets ? { Input: inputAssets } : {},
|
|
61
|
-
selectedAsset: undefined,
|
|
62
|
-
dbManagerDrawer: undefined,
|
|
63
|
-
s3FilePicker: undefined,
|
|
64
|
-
resourceEditorDrawer: undefined,
|
|
65
|
-
resourceMetadataCache: {}
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
setContext('FlowGraphAssetContext', flowGraphAssetsCtx);
|
|
69
|
-
const assetsMap = $derived(flowGraphAssetsCtx.val.assetsMap);
|
|
70
|
-
$effect(() => {
|
|
71
|
-
if (inputAssets)
|
|
72
|
-
flowGraphAssetsCtx.val.assetsMap.Input = inputAssets;
|
|
73
|
-
});
|
|
74
|
-
// Fetch resource metadata for the ExploreAssetButton
|
|
75
|
-
const resMetadataCache = $derived(flowGraphAssetsCtx.val.resourceMetadataCache);
|
|
76
|
-
$effect(() => {
|
|
77
|
-
for (const asset of Object.values(assetsMap ?? []).flatMap((x) => x)) {
|
|
78
|
-
if (asset.kind !== 'resource' || asset.path in resMetadataCache)
|
|
79
|
-
continue;
|
|
80
|
-
resMetadataCache[asset.path] = undefined; // avoid fetching multiple times because of async
|
|
81
|
-
ResourceService.getResource({ path: asset.path, workspace: $workspaceStore }).then((r) => (resMetadataCache[asset.path] = { resource_type: r.resource_type }));
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
// Fetch transitive assets (path scripts and flows)
|
|
85
|
-
$effect(() => {
|
|
86
|
-
if (!$workspaceStore)
|
|
87
|
-
return;
|
|
88
|
-
let usages = [];
|
|
89
|
-
let modIds = [];
|
|
90
|
-
for (const mod of getAllModules(modules)) {
|
|
91
|
-
if (mod.id in assetsMap)
|
|
92
|
-
continue;
|
|
93
|
-
assetsMap[mod.id] = []; // avoid fetching multiple times because of async
|
|
94
|
-
if (mod.value.type === 'flow' || mod.value.type === 'script') {
|
|
95
|
-
usages.push({ path: mod.value.path, kind: mod.value.type });
|
|
96
|
-
modIds.push(mod.id);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (usages.length) {
|
|
100
|
-
AssetService.listAssetsByUsage({
|
|
101
|
-
workspace: $workspaceStore,
|
|
102
|
-
requestBody: { usages }
|
|
103
|
-
}).then((result) => {
|
|
104
|
-
result.forEach((assets, idx) => {
|
|
105
|
-
assetsMap[modIds[idx]] = assets;
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
// Prune assetsMap to only contain assets that are actually used
|
|
111
|
-
$effect(() => {
|
|
112
|
-
const allModules = new Set(getAllModules(modules).map((mod) => mod.id));
|
|
113
|
-
for (const modId in assetsMap) {
|
|
114
|
-
if (modId !== 'Input' && !allModules.has(modId))
|
|
115
|
-
delete assetsMap[modId];
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
51
|
function computeSimplifiableFlow(modules, simplifiedFlow) {
|
|
119
52
|
const isSimplif = isSimplifiable(modules);
|
|
120
53
|
simplifiableFlow = isSimplif ? { simplifiedFlow } : undefined;
|
|
@@ -289,11 +222,7 @@ async function updateStores() {
|
|
|
289
222
|
}
|
|
290
223
|
let newGraph = graph;
|
|
291
224
|
newGraph.nodes.sort((a, b) => b.id.localeCompare(a.id));
|
|
292
|
-
[nodes, edges] = computeAssetNodes(layoutNodes(newGraph.nodes), newGraph.edges
|
|
293
|
-
moving,
|
|
294
|
-
eventHandlers: eventHandler,
|
|
295
|
-
disableAi
|
|
296
|
-
});
|
|
225
|
+
[nodes, edges] = computeAssetNodes(layoutNodes(newGraph.nodes), newGraph.edges);
|
|
297
226
|
await tick();
|
|
298
227
|
height = Math.max(...nodes.map((n) => n.position.y + NODE.height + 100), minHeight);
|
|
299
228
|
}
|
|
@@ -326,11 +255,13 @@ const proOptions = { hideAttribution: true };
|
|
|
326
255
|
// centerViewport(width)
|
|
327
256
|
// })
|
|
328
257
|
let yamlEditorDrawer = $state(undefined);
|
|
258
|
+
const flowGraphAssetsCtx = getContext('FlowGraphAssetContext');
|
|
329
259
|
$effect(() => {
|
|
330
260
|
allowSimplifiedPoll && modules && untrack(() => onModulesChange(modules ?? []));
|
|
331
261
|
});
|
|
332
262
|
$effect(() => {
|
|
333
|
-
|
|
263
|
+
readFieldsRecursively(modules);
|
|
264
|
+
untrack(() => onModulesChange2(modules));
|
|
334
265
|
});
|
|
335
266
|
let graph = $derived.by(() => {
|
|
336
267
|
moduleCounter;
|
|
@@ -350,13 +281,13 @@ let graph = $derived.by(() => {
|
|
|
350
281
|
flowJob,
|
|
351
282
|
showJobStatus,
|
|
352
283
|
suspendStatus,
|
|
353
|
-
flowHasChanged
|
|
284
|
+
flowHasChanged,
|
|
285
|
+
additionalAssetsMap: flowGraphAssetsCtx?.val.additionalAssetsMap
|
|
354
286
|
}, failureModule, preprocessorModule, eventHandler, success, $useDataflow, $selectedId, moving, simplifiableFlow, triggerNode ? path : undefined, expandedSubflows);
|
|
355
287
|
});
|
|
356
288
|
$effect(() => {
|
|
357
289
|
;
|
|
358
290
|
[graph, allowSimplifiedPoll];
|
|
359
|
-
readFieldsRecursively(assetsMap);
|
|
360
291
|
untrack(() => updateStores());
|
|
361
292
|
});
|
|
362
293
|
let showDataflow = $derived($selectedId != undefined &&
|
|
@@ -481,33 +412,6 @@ export function isNodeVisible(nodeId) {
|
|
|
481
412
|
{/if}
|
|
482
413
|
</div>
|
|
483
414
|
|
|
484
|
-
{#each getAllModules(modules) as mod (mod.id)}
|
|
485
|
-
{#if mod.value.type === 'rawscript'}
|
|
486
|
-
{@const v = mod.value}
|
|
487
|
-
<OnChange
|
|
488
|
-
key={[v.content, v.asset_fallback_access_types]}
|
|
489
|
-
runFirstEffect
|
|
490
|
-
onChange={() =>
|
|
491
|
-
inferAssets(v.language, v.content)
|
|
492
|
-
.then((assets) => {
|
|
493
|
-
for (const override of v.asset_fallback_access_types ?? []) {
|
|
494
|
-
assets = assets.map((asset) => {
|
|
495
|
-
if (assetEq(asset, override) && !asset.access_type)
|
|
496
|
-
return { ...asset, access_type: override.access_type }
|
|
497
|
-
return asset
|
|
498
|
-
})
|
|
499
|
-
}
|
|
500
|
-
if (assetsMap && !deepEqual(assetsMap[mod.id], assets)) assetsMap[mod.id] = assets
|
|
501
|
-
})
|
|
502
|
-
.catch((e) => {})}
|
|
503
|
-
/>
|
|
504
|
-
{/if}
|
|
505
|
-
{/each}
|
|
506
|
-
|
|
507
|
-
<S3FilePicker bind:this={flowGraphAssetsCtx.val.s3FilePicker} readOnlyMode />
|
|
508
|
-
<DbManagerDrawer bind:this={flowGraphAssetsCtx.val.dbManagerDrawer} />
|
|
509
|
-
<ResourceEditorDrawer bind:this={flowGraphAssetsCtx.val.resourceEditorDrawer} />
|
|
510
|
-
|
|
511
415
|
<style>
|
|
512
416
|
:global(.svelte-flow__handle) {
|
|
513
417
|
opacity: 0;
|
|
@@ -3,7 +3,6 @@ import { type GraphModuleState } from '.';
|
|
|
3
3
|
import { type Writable } from 'svelte/store';
|
|
4
4
|
import '@xyflow/svelte/dist/base.css';
|
|
5
5
|
import { type InlineScript, type InsertKind, type onSelectedIteration } from './graphBuilder.svelte';
|
|
6
|
-
import { type AssetWithAccessType } from '../assets/lib';
|
|
7
6
|
interface Props {
|
|
8
7
|
success?: boolean | undefined;
|
|
9
8
|
modules?: FlowModule[] | undefined;
|
|
@@ -29,7 +28,6 @@ interface Props {
|
|
|
29
28
|
editMode?: boolean;
|
|
30
29
|
allowSimplifiedPoll?: boolean;
|
|
31
30
|
expandedSubflows?: Record<string, FlowModule[]>;
|
|
32
|
-
inputAssets?: AssetWithAccessType[];
|
|
33
31
|
isOwner?: boolean;
|
|
34
32
|
isRunning?: boolean;
|
|
35
33
|
individualStepTests?: boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FlowModule, Job, RawScript, Script } from '../../gen';
|
|
2
2
|
import { type Edge } from '@xyflow/svelte';
|
|
3
3
|
import type { GraphModuleState } from './model';
|
|
4
|
-
import type
|
|
4
|
+
import { type AssetWithAltAccessType } from '../assets/lib';
|
|
5
5
|
import type { Writable } from 'svelte/store';
|
|
6
6
|
export type InsertKind = 'script' | 'forloop' | 'whileloop' | 'branchone' | 'branchall' | 'flow' | 'trigger' | 'approval' | 'end';
|
|
7
7
|
export type InlineScript = {
|
|
@@ -88,6 +88,7 @@ export type InputN = {
|
|
|
88
88
|
flowJob: Job | undefined;
|
|
89
89
|
showJobStatus: boolean;
|
|
90
90
|
flowHasChanged: boolean;
|
|
91
|
+
assets?: AssetWithAltAccessType[] | undefined;
|
|
91
92
|
};
|
|
92
93
|
};
|
|
93
94
|
export type ModuleN = {
|
|
@@ -104,6 +105,7 @@ export type ModuleN = {
|
|
|
104
105
|
editMode: boolean;
|
|
105
106
|
flowJob: Job | undefined;
|
|
106
107
|
isOwner: boolean;
|
|
108
|
+
assets: AssetWithAltAccessType[] | undefined;
|
|
107
109
|
};
|
|
108
110
|
};
|
|
109
111
|
export type BranchAllStartN = {
|
|
@@ -236,13 +238,13 @@ export type TriggerN = {
|
|
|
236
238
|
export type AssetN = {
|
|
237
239
|
type: 'asset';
|
|
238
240
|
data: {
|
|
239
|
-
asset:
|
|
241
|
+
asset: AssetWithAltAccessType;
|
|
240
242
|
};
|
|
241
243
|
};
|
|
242
244
|
export type AssetsOverflowedN = {
|
|
243
245
|
type: 'assetsOverflowed';
|
|
244
246
|
data: {
|
|
245
|
-
overflowedAssets:
|
|
247
|
+
overflowedAssets: AssetWithAltAccessType[];
|
|
246
248
|
};
|
|
247
249
|
};
|
|
248
250
|
export declare function graphBuilder(modules: FlowModule[] | undefined, extra: {
|
|
@@ -265,6 +267,7 @@ export declare function graphBuilder(modules: FlowModule[] | undefined, extra: {
|
|
|
265
267
|
nb: number;
|
|
266
268
|
}>>;
|
|
267
269
|
flowHasChanged: boolean;
|
|
270
|
+
additionalAssetsMap?: Record<string, AssetWithAltAccessType[]>;
|
|
268
271
|
}, failureModule: FlowModule | undefined, preprocessorModule: FlowModule | undefined, eventHandlers: GraphEventHandlers, success: boolean | undefined, useDataflow: boolean | undefined, selectedId: string | undefined, moving: string | undefined, simplifiableFlow: SimplifiableFlow | undefined, flowPathForTriggerNode: string | undefined, expandedSubflows: Record<string, FlowModule[]>): {
|
|
269
272
|
nodes: NodeLayout[];
|
|
270
273
|
edges: Edge[];
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import {} from '@xyflow/svelte';
|
|
2
|
-
import { getDependeeAndDependentComponents } from '../flows/flowExplorer';
|
|
2
|
+
import { getAllModules, getDependeeAndDependentComponents } from '../flows/flowExplorer';
|
|
3
3
|
import { dfsByModule } from '../flows/previousResults';
|
|
4
4
|
import { defaultIfEmptyString } from '../../utils';
|
|
5
|
+
import { getFlowModuleAssets } from '../assets/lib';
|
|
6
|
+
import { assetDisplaysAsOutputInFlowGraph } from './renderers/nodes/AssetNode.svelte';
|
|
5
7
|
export function isTriggerStep(module) {
|
|
6
8
|
return (module?.value != undefined &&
|
|
7
9
|
(module.value.type === 'script' || module.value.type === 'rawscript') &&
|
|
@@ -59,12 +61,17 @@ export function graphBuilder(modules, extra, failureModule, preprocessorModule,
|
|
|
59
61
|
insertable: extra.insertable,
|
|
60
62
|
editMode: extra.editMode,
|
|
61
63
|
isOwner: extra.isOwner,
|
|
62
|
-
flowJob: extra.flowJob
|
|
64
|
+
flowJob: extra.flowJob,
|
|
65
|
+
assets: getFlowModuleAssets(module, extra.additionalAssetsMap)
|
|
63
66
|
},
|
|
64
67
|
type: 'module'
|
|
65
68
|
});
|
|
66
69
|
return module.id;
|
|
67
70
|
}
|
|
71
|
+
// TODO : Do better than this
|
|
72
|
+
const nodeIdsWithOutputAssets = new Set(getAllModules(modules)
|
|
73
|
+
.filter((m) => getFlowModuleAssets(m, extra.additionalAssetsMap)?.some(assetDisplaysAsOutputInFlowGraph))
|
|
74
|
+
.map((m) => m.id));
|
|
68
75
|
const parents = {};
|
|
69
76
|
//
|
|
70
77
|
function detectCycle(nodeId, visited, currentPath) {
|
|
@@ -119,10 +126,12 @@ export function graphBuilder(modules, extra, failureModule, preprocessorModule,
|
|
|
119
126
|
// If the index is -1, it means that the target module is not in the modules array, so we set it to the length of the array
|
|
120
127
|
index: index >= 0 ? index : (mods?.length ?? 0),
|
|
121
128
|
...extra,
|
|
122
|
-
insertable: extra.insertable && !options?.disableInsert && prefix == undefined
|
|
129
|
+
insertable: extra.insertable && !options?.disableInsert && prefix == undefined,
|
|
130
|
+
shouldOffsetInsertBtnDueToAssetNode: nodeIdsWithOutputAssets.has(sourceId)
|
|
123
131
|
}
|
|
124
132
|
});
|
|
125
133
|
}
|
|
134
|
+
const inputAssets = extra.additionalAssetsMap?.['Input'];
|
|
126
135
|
const inputNode = {
|
|
127
136
|
id: 'Input',
|
|
128
137
|
type: 'input2',
|
|
@@ -139,7 +148,8 @@ export function graphBuilder(modules, extra, failureModule, preprocessorModule,
|
|
|
139
148
|
individualStepTests: extra.individualStepTests,
|
|
140
149
|
flowJob: extra.flowJob,
|
|
141
150
|
showJobStatus: extra.showJobStatus,
|
|
142
|
-
flowHasChanged: extra.flowHasChanged
|
|
151
|
+
flowHasChanged: extra.flowHasChanged,
|
|
152
|
+
...(inputAssets ? { assets: inputAssets } : {})
|
|
143
153
|
}
|
|
144
154
|
};
|
|
145
155
|
let triggerNode = undefined;
|
|
@@ -361,19 +371,35 @@ export function graphBuilder(modules, extra, failureModule, preprocessorModule,
|
|
|
361
371
|
type: 'branchOneEnd'
|
|
362
372
|
};
|
|
363
373
|
nodes.push(endNode);
|
|
364
|
-
// Add default branch
|
|
374
|
+
// // Add default branch
|
|
375
|
+
// const defaultBranch: NodeLayout = {
|
|
376
|
+
// id: `${module.id}-default`,
|
|
377
|
+
// data: {
|
|
378
|
+
// offset: currentOffset,
|
|
379
|
+
// label: 'Default',
|
|
380
|
+
// id: module.id,
|
|
381
|
+
// branchIndex: -1,
|
|
382
|
+
// eventHandlers: eventHandlers,
|
|
383
|
+
// branchOne: true,
|
|
384
|
+
// ...extra
|
|
385
|
+
// },
|
|
386
|
+
// type: 'noBranch'
|
|
387
|
+
// }
|
|
365
388
|
const defaultBranch = {
|
|
366
|
-
id: `${module.id}-default`,
|
|
389
|
+
id: `${module.id}-branch-default`,
|
|
367
390
|
data: {
|
|
368
391
|
offset: currentOffset,
|
|
369
392
|
label: 'Default',
|
|
370
393
|
id: module.id,
|
|
371
394
|
branchIndex: -1,
|
|
372
395
|
eventHandlers: eventHandlers,
|
|
373
|
-
|
|
374
|
-
|
|
396
|
+
insertable: extra.insertable,
|
|
397
|
+
preLabel: undefined,
|
|
398
|
+
flowModuleStates: extra.flowModuleStates,
|
|
399
|
+
selected: false,
|
|
400
|
+
modules: module.value.default
|
|
375
401
|
},
|
|
376
|
-
type: '
|
|
402
|
+
type: 'branchOneStart'
|
|
377
403
|
};
|
|
378
404
|
nodes.push(defaultBranch);
|
|
379
405
|
addEdge(module.id, defaultBranch.id, { rootId: module.id, branch: 0 }, prefix, {
|
|
@@ -4,18 +4,15 @@ import { ClipboardCopy, Hourglass } from 'lucide-svelte';
|
|
|
4
4
|
import { getContext } from 'svelte';
|
|
5
5
|
import { getStraightLinePath } from '../utils';
|
|
6
6
|
import { twMerge } from 'tailwind-merge';
|
|
7
|
-
import {} from '
|
|
8
|
-
import { assetDisplaysAsOutputInFlowGraph, NODE_WITH_WRITE_ASSET_Y_OFFSET } from '../nodes/AssetNode.svelte';
|
|
7
|
+
import { NODE_WITH_WRITE_ASSET_Y_OFFSET } from '../nodes/AssetNode.svelte';
|
|
9
8
|
import { workspaceStore } from '../../../../stores';
|
|
10
9
|
import FlowStatusWaitingForEvents from '../../../FlowStatusWaitingForEvents.svelte';
|
|
11
10
|
const { useDataflow } = getContext('FlowGraphContext');
|
|
12
|
-
const flowGraphAssetCtx = getContext('FlowGraphAssetContext');
|
|
13
11
|
let {
|
|
14
12
|
// id,
|
|
15
13
|
sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, markerEnd,
|
|
16
14
|
// style,
|
|
17
15
|
data } = $props();
|
|
18
|
-
const shouldOffsetInsertButtonDueToAssetNode = flowGraphAssetCtx?.val.assetsMap?.[data.sourceId]?.some(assetDisplaysAsOutputInFlowGraph);
|
|
19
16
|
let [edgePath] = $derived(getBezierPath({
|
|
20
17
|
sourceX,
|
|
21
18
|
sourceY: targetY - sourceY > 100 ? targetY - 100 : sourceY,
|
|
@@ -37,7 +34,7 @@ const suspendStatus = $derived(data?.suspendStatus);
|
|
|
37
34
|
|
|
38
35
|
<EdgeLabel
|
|
39
36
|
x={sourceX}
|
|
40
|
-
y={sourceY + 28 + (
|
|
37
|
+
y={sourceY + 28 + (data.shouldOffsetInsertBtnDueToAssetNode ? NODE_WITH_WRITE_ASSET_Y_OFFSET : 0)}
|
|
41
38
|
class="base-edge"
|
|
42
39
|
style=""
|
|
43
40
|
>
|
|
@@ -2,19 +2,21 @@
|
|
|
2
2
|
export const NODE_WITH_WRITE_ASSET_Y_OFFSET = 45;
|
|
3
3
|
export const READ_ASSET_Y_OFFSET = -45;
|
|
4
4
|
export const WRITE_ASSET_Y_OFFSET = 64;
|
|
5
|
-
export const assetDisplaysAsInputInFlowGraph = (a) => !a
|
|
6
|
-
export const assetDisplaysAsOutputInFlowGraph = (a) => a
|
|
5
|
+
export const assetDisplaysAsInputInFlowGraph = (a) => !getAccessType(a) || getAccessType(a) === 'r' || getAccessType(a) === 'rw';
|
|
6
|
+
export const assetDisplaysAsOutputInFlowGraph = (a) => getAccessType(a) === 'w' || getAccessType(a) === 'rw';
|
|
7
7
|
let computeAssetNodesCache;
|
|
8
|
-
export function computeAssetNodes(nodes, edges
|
|
9
|
-
if (nodes === computeAssetNodesCache?.[0]
|
|
10
|
-
return computeAssetNodesCache[
|
|
8
|
+
export function computeAssetNodes(nodes, edges) {
|
|
9
|
+
if (nodes === computeAssetNodesCache?.[0])
|
|
10
|
+
return computeAssetNodesCache[1];
|
|
11
11
|
const MAX_ASSET_ROW_WIDTH = 300;
|
|
12
12
|
const ASSETS_OVERFLOWED_NODE_WIDTH = 25;
|
|
13
13
|
const allAssetNodes = [];
|
|
14
14
|
const allAssetEdges = [];
|
|
15
15
|
const yPosMap = {};
|
|
16
16
|
for (const node of nodes) {
|
|
17
|
-
|
|
17
|
+
if (node.type !== 'module' && node.type !== 'input2')
|
|
18
|
+
continue;
|
|
19
|
+
const assets = node.data.assets ?? [];
|
|
18
20
|
// Each asset can be displayed at the top and bottom
|
|
19
21
|
// i.e once (R or W) or twice (RW)
|
|
20
22
|
const inputAssets = assets.filter(assetDisplaysAsInputInFlowGraph);
|
|
@@ -167,30 +169,26 @@ export function computeAssetNodes(nodes, edges, assetsMap, extraData) {
|
|
|
167
169
|
[...sortedNewNodes, ...allAssetNodes],
|
|
168
170
|
[...edges, ...allAssetEdges]
|
|
169
171
|
];
|
|
170
|
-
computeAssetNodesCache = [nodes,
|
|
172
|
+
computeAssetNodesCache = [nodes, ret];
|
|
171
173
|
return ret;
|
|
172
174
|
}
|
|
173
175
|
</script>
|
|
174
176
|
|
|
175
177
|
<script lang="ts">import NodeWrapper from './NodeWrapper.svelte';
|
|
176
178
|
import { AlertTriangle } from 'lucide-svelte';
|
|
177
|
-
import { assetEq, formatAssetKind } from '../../../assets/lib';
|
|
179
|
+
import { assetEq, formatAssetKind, getAccessType } from '../../../assets/lib';
|
|
178
180
|
import { twMerge } from 'tailwind-merge';
|
|
179
181
|
import { getContext } from 'svelte';
|
|
180
182
|
import ExploreAssetButton, { assetCanBeExplored } from '../../../ExploreAssetButton.svelte';
|
|
181
183
|
import { Tooltip } from '../../../meltComponents';
|
|
182
184
|
import { clone, pluralize } from '../../../../utils';
|
|
183
185
|
import AssetGenericIcon from '../../../icons/AssetGenericIcon.svelte';
|
|
184
|
-
import { deepEqual } from 'fast-equals';
|
|
185
186
|
import { NODE } from '../../util';
|
|
186
187
|
import { userStore } from '../../../../stores';
|
|
187
188
|
const flowGraphAssetsCtx = getContext('FlowGraphAssetContext');
|
|
188
|
-
const usageCount = $derived(Object.values(flowGraphAssetsCtx.val.assetsMap ?? {})
|
|
189
|
-
.flat()
|
|
190
|
-
.filter((asset) => assetEq(asset, data.asset)).length);
|
|
191
189
|
let { data } = $props();
|
|
192
|
-
const isSelected = $derived(assetEq(flowGraphAssetsCtx
|
|
193
|
-
const cachedResourceMetadata = $derived(flowGraphAssetsCtx
|
|
190
|
+
const isSelected = $derived(assetEq(flowGraphAssetsCtx?.val.selectedAsset, data.asset));
|
|
191
|
+
const cachedResourceMetadata = $derived(flowGraphAssetsCtx?.val.resourceMetadataCache[data.asset.path]);
|
|
194
192
|
</script>
|
|
195
193
|
|
|
196
194
|
<NodeWrapper>
|
|
@@ -202,8 +200,10 @@ const cachedResourceMetadata = $derived(flowGraphAssetsCtx.val.resourceMetadataC
|
|
|
202
200
|
'bg-surface h-6 flex items-center gap-1.5 rounded-sm text-tertiary border overflow-clip',
|
|
203
201
|
isSelected ? 'bg-surface-secondary !border-surface-inverse' : 'border-transparent'
|
|
204
202
|
)}
|
|
205
|
-
onmouseenter={() =>
|
|
206
|
-
|
|
203
|
+
onmouseenter={() =>
|
|
204
|
+
flowGraphAssetsCtx && (flowGraphAssetsCtx.val.selectedAsset = data.asset)}
|
|
205
|
+
onmouseleave={() =>
|
|
206
|
+
flowGraphAssetsCtx && (flowGraphAssetsCtx.val.selectedAsset = undefined)}
|
|
207
207
|
>
|
|
208
208
|
<AssetGenericIcon
|
|
209
209
|
assetKind={data.asset.kind}
|
|
@@ -225,14 +225,17 @@ const cachedResourceMetadata = $derived(flowGraphAssetsCtx.val.resourceMetadataC
|
|
|
225
225
|
asset={data.asset}
|
|
226
226
|
noText
|
|
227
227
|
buttonVariant="contained"
|
|
228
|
-
s3FilePicker={flowGraphAssetsCtx
|
|
229
|
-
dbManagerDrawer={flowGraphAssetsCtx
|
|
228
|
+
s3FilePicker={flowGraphAssetsCtx?.val.s3FilePicker}
|
|
229
|
+
dbManagerDrawer={flowGraphAssetsCtx?.val.dbManagerDrawer}
|
|
230
230
|
_resourceMetadata={cachedResourceMetadata}
|
|
231
231
|
/>
|
|
232
232
|
{/if}
|
|
233
233
|
</div>
|
|
234
234
|
<svelte:fragment slot="text">
|
|
235
|
-
Used in {pluralize(
|
|
235
|
+
Used in {pluralize(
|
|
236
|
+
flowGraphAssetsCtx?.val.computeAssetsCount?.(data.asset) ?? -1,
|
|
237
|
+
'step'
|
|
238
|
+
)}<br />
|
|
236
239
|
<a
|
|
237
240
|
href={undefined}
|
|
238
241
|
class={twMerge(
|
|
@@ -243,7 +246,7 @@ const cachedResourceMetadata = $derived(flowGraphAssetsCtx.val.resourceMetadataC
|
|
|
243
246
|
)}
|
|
244
247
|
onclick={() => {
|
|
245
248
|
if (data.asset.kind === 'resource')
|
|
246
|
-
flowGraphAssetsCtx
|
|
249
|
+
flowGraphAssetsCtx?.val.resourceEditorDrawer?.initEdit(data.asset.path)
|
|
247
250
|
}}
|
|
248
251
|
>
|
|
249
252
|
{data.asset.path}
|
|
@@ -2,17 +2,12 @@ export declare const NODE_WITH_READ_ASSET_Y_OFFSET = 45;
|
|
|
2
2
|
export declare const NODE_WITH_WRITE_ASSET_Y_OFFSET = 45;
|
|
3
3
|
export declare const READ_ASSET_Y_OFFSET = -45;
|
|
4
4
|
export declare const WRITE_ASSET_Y_OFFSET = 64;
|
|
5
|
-
export declare const assetDisplaysAsInputInFlowGraph: (a:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}) => boolean;
|
|
11
|
-
export declare function computeAssetNodes(nodes: Node[], edges: Edge[], assetsMap: Record<string, AssetWithAccessType[]>, extraData: any): [Node[], Edge[]];
|
|
12
|
-
import type { AssetN } from '../../graphBuilder.svelte';
|
|
13
|
-
import { type AssetWithAccessType } from '../../../assets/lib';
|
|
5
|
+
export declare const assetDisplaysAsInputInFlowGraph: (a: AssetWithAltAccessType) => boolean;
|
|
6
|
+
export declare const assetDisplaysAsOutputInFlowGraph: (a: AssetWithAltAccessType) => boolean;
|
|
7
|
+
export declare function computeAssetNodes(nodes: (Node & NodeLayout)[], edges: Edge[]): [(Node & NodeLayout)[], Edge[]];
|
|
8
|
+
import type { AssetN, NodeLayout } from '../../graphBuilder.svelte';
|
|
9
|
+
import { type AssetWithAltAccessType } from '../../../assets/lib';
|
|
14
10
|
import type { Edge, Node } from '@xyflow/svelte';
|
|
15
|
-
import type { AssetUsageAccessType } from '../../../../gen';
|
|
16
11
|
interface Props {
|
|
17
12
|
data: AssetN['data'];
|
|
18
13
|
}
|
|
@@ -10,7 +10,7 @@ import { assetEq } from '../../../assets/lib';
|
|
|
10
10
|
let { data } = $props();
|
|
11
11
|
const flowGraphAssetsCtx = getContext('FlowGraphAssetContext');
|
|
12
12
|
let isOpen = $state(false);
|
|
13
|
-
let includesSelected = $derived(data.overflowedAssets.some((asset) => assetEq(flowGraphAssetsCtx
|
|
13
|
+
let includesSelected = $derived(data.overflowedAssets.some((asset) => assetEq(flowGraphAssetsCtx?.val.selectedAsset, asset)));
|
|
14
14
|
let wasOpenedBecauseOfExternalSelected = false;
|
|
15
15
|
$effect(() => {
|
|
16
16
|
if (includesSelected && !isOpen) {
|
|
@@ -158,6 +158,8 @@ let collapseAll = $state(true);
|
|
|
158
158
|
let owners = $derived(Array.from(new Set(filteredItems?.map((x) => x.path.split('/').slice(0, 2).join('/')) ?? [])).sort());
|
|
159
159
|
$effect(() => {
|
|
160
160
|
if ($userStore && $workspaceStore) {
|
|
161
|
+
;
|
|
162
|
+
[archived, includeWithoutMain];
|
|
161
163
|
untrack(() => {
|
|
162
164
|
loadScripts(includeWithoutMain);
|
|
163
165
|
loadFlows();
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<script lang="ts">import { Pyramid } from 'lucide-svelte';
|
|
2
2
|
import AssetResIcon from './AssetResIcon.svelte';
|
|
3
3
|
import AssetS3Icon from './AssetS3Icon.svelte';
|
|
4
|
-
import AssetVarIcon from './AssetVarIcon.svelte';
|
|
5
4
|
let { assetKind, fill, size, class: className = '' } = $props();
|
|
6
5
|
</script>
|
|
7
6
|
|
|
@@ -9,8 +8,6 @@ let { assetKind, fill, size, class: className = '' } = $props();
|
|
|
9
8
|
<AssetS3Icon {fill} width={size} height={size} class={className} />
|
|
10
9
|
{:else if assetKind == 'resource'}
|
|
11
10
|
<AssetResIcon {fill} width={size} height={size} class={className} />
|
|
12
|
-
{:else if assetKind == 'variable'}
|
|
13
|
-
<AssetVarIcon {fill} width={size} height={size} class={className} />
|
|
14
11
|
{:else}
|
|
15
12
|
<Pyramid {size} color={fill} class={'!fill-none ' + className} />
|
|
16
13
|
{/if}
|