diff --git a/frontend/src/lib/components/assets/AssetGraph/AssetGraphCanvas.svelte b/frontend/src/lib/components/assets/AssetGraph/AssetGraphCanvas.svelte
index 8a06ae70f0..d9bfbb52c4 100644
--- a/frontend/src/lib/components/assets/AssetGraph/AssetGraphCanvas.svelte
+++ b/frontend/src/lib/components/assets/AssetGraph/AssetGraphCanvas.svelte
@@ -69,7 +69,12 @@
interface Props {
graph: AssetGraphResponse
selection?: AssetGraphSelection | undefined
- onselect?: (selection: AssetGraphSelection | undefined) => void
+ /** `open` marks a selection asked to be shown (a script's open button), as
+ * opposed to a click on a node, which only selects it. */
+ onselect?: (
+ selection: AssetGraphSelection | undefined,
+ opts?: { open?: boolean }
+ ) => void
// Called when the user clicks the per-asset + button (consumer-script
// entry). Kept optional so the canvas stays usable outside the
// pipeline editor.
@@ -858,11 +863,14 @@
const owner = model.dbtOwnerByAsset.get(assetId)
const [kind, ...rest] = owner?.split(':') ?? []
if (kind && rest.length) {
- onselect?.({
- kind: 'runnable',
- runnable_kind: kind as 'script' | 'flow',
- path: rest.join(':')
- })
+ onselect?.(
+ {
+ kind: 'runnable',
+ runnable_kind: kind as 'script' | 'flow',
+ path: rest.join(':')
+ },
+ { open: true }
+ )
}
}
}
@@ -1382,7 +1390,10 @@
language: d.language,
unsaved: d.unsaved as boolean | undefined,
onOpen: () =>
- onselect?.({ kind: 'runnable', runnable_kind: d.runnable_kind, path: d.path })
+ onselect?.(
+ { kind: 'runnable', runnable_kind: d.runnable_kind, path: d.path },
+ { open: true }
+ )
})),
// Every script's own triggers; asset triggers show as edges instead.
triggers: (u.multiple ? u.runnableIds : [])
@@ -1412,11 +1423,10 @@
runState: r.runState,
trigger: triggerChip(u.trigger, r.path),
onOpen: () =>
- onselect?.({
- kind: 'runnable',
- runnable_kind: r.runnable_kind,
- path: r.path
- })
+ onselect?.(
+ { kind: 'runnable', runnable_kind: r.runnable_kind, path: r.path },
+ { open: true }
+ )
}
const toDelete =
onDeleteAssetUpstream && u && !u.multiple && r
diff --git a/frontend/src/lib/components/assets/AssetGraph/PipelineGraphEditor.svelte b/frontend/src/lib/components/assets/AssetGraph/PipelineGraphEditor.svelte
index b3e43e75ea..89b911c71f 100644
--- a/frontend/src/lib/components/assets/AssetGraph/PipelineGraphEditor.svelte
+++ b/frontend/src/lib/components/assets/AssetGraph/PipelineGraphEditor.svelte
@@ -1,5 +1,10 @@
-
+{#snippet detailsBody(ws: string)}
+ {#if idleView && idlePane}
+ {@render idlePane()}
+ {:else}
+
onStartBoundedRunForOpen?.(editor.openScriptPath!)
+ : undefined}
+ {onRunCompleted}
+ {onTestStateChange}
+ {requestRemoveSignal}
+ {requestRunSignal}
+ {requestRunCascadeSignal}
+ {focusUploadSignal}
+ draftScript={activeDraft?.script}
+ draftOutputAssets={activeDraft?.outputAssets}
+ draftInputAssets={activeDraft?.inputAssets}
+ {onDraftPathChange}
+ onDraftMetaChange={editor.setDraftMeta}
+ {pathPrefix}
+ workspace={ws}
+ onAnnotationsChange={editor.handleAnnotationsChange}
+ onAssetsChange={editor.handleAssetsChange}
+ onContentChange={editor.handleContentChange}
+ onDraftPersist={editor.handleDraftPersist}
+ onclose={onClose}
+ onHide={onTogglePanelHidden}
+ {onDiscard}
+ {onDraftSaved}
+ {onPersistedSaved}
+ {onScriptRenamed}
+ {onScriptRemoved}
+ />
+ {/if}
+{/snippet}
+
+
-
+
+
- {#if detailsPaneOpen && workspace}
+ {#if dockedPaneOpen && workspace}
- {#if idleView && idlePane}
- {@render idlePane()}
- {:else}
- onStartBoundedRunForOpen?.(editor.openScriptPath!)
- : undefined}
- {onRunCompleted}
- {onTestStateChange}
- {requestRemoveSignal}
- {requestRunSignal}
- {requestRunCascadeSignal}
- {focusUploadSignal}
- draftScript={activeDraft?.script}
- draftOutputAssets={activeDraft?.outputAssets}
- draftInputAssets={activeDraft?.inputAssets}
- {onDraftPathChange}
- onDraftMetaChange={editor.setDraftMeta}
- {pathPrefix}
- {workspace}
- onAnnotationsChange={editor.handleAnnotationsChange}
- onAssetsChange={editor.handleAssetsChange}
- onContentChange={editor.handleContentChange}
- onDraftPersist={editor.handleDraftPersist}
- onclose={onClose}
- onHide={onTogglePanelHidden}
- {onDiscard}
- {onDraftSaved}
- {onPersistedSaved}
- {onScriptRenamed}
- {onScriptRemoved}
- />
- {/if}
+ {@render detailsBody(workspace)}
{/if}
+ {#if showNodeHint}
+
+
+
+ {nodeHintText}
+
+ {/if}
+
+
+
+ {#snippet children({ zIndex })}
+ {#if panelMode === 'modal' && panelModalOpen && workspace}
+
+
+
+
+
(panelModalOpen = false)}>
+
+
+ {@render detailsBody(workspace)}
+
+
+
+
+ {/if}
+ {/snippet}
+
diff --git a/frontend/src/lib/components/sessions/PipelineEditorView.svelte b/frontend/src/lib/components/sessions/PipelineEditorView.svelte
index 71ed7db905..20f0e91675 100644
--- a/frontend/src/lib/components/sessions/PipelineEditorView.svelte
+++ b/frontend/src/lib/components/sessions/PipelineEditorView.svelte
@@ -455,6 +455,7 @@
folder={path}
viewportFitKey={viewportFitFolder}
persistDrafts={true}
+ modalPanel
prefetchingAssets={assetPrefetch.prefetching}
displayGraph={resolvedGraph}
mode="edit"