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} + + + + + + {/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"