From 9446dd8b50a22e42856b40cd867cfeebc19d131a Mon Sep 17 00:00:00 2001 From: Marco polo Date: Tue, 21 Jan 2025 12:32:45 -0500 Subject: [PATCH] [3/n][Selection syntax] Add stubs to allow Cloud to extend selection syntax functionality. (#27184) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary & Motivation - Add `useAssetGraphSupplementaryData` so that Cloud can query for extra data to support the filtering - Feed that data all the way through to the visitor that does the filtering. Don't do anything with it in the OSS visitor, Cloud will use it in its visitor though to do that additional filtering. ## How I Tested These Changes Manual testing + relying on existing jest tests Screenshot 2025-01-16 at 6 25 14 PM --- .../src/asset-graph/ComputeGraphData.ts | 9 +- .../src/asset-graph/ComputeGraphData.types.ts | 2 + .../src/asset-graph/useAssetGraphData.tsx | 9 +- .../useAssetGraphSupplementaryData.oss.tsx | 13 ++ ...r.ts => AntlrAssetSelectionVisitor.oss.ts} | 57 ++------ .../AssetSelectionAntlr.oss.ts | 4 + .../__tests__/AntlrAssetSelection.test.ts | 3 +- ...tion.ts => filterAssetSelectionByQuery.ts} | 25 ++-- .../input/AssetSelectionInput.oss.tsx | 130 +++++++++--------- .../ui-core/src/asset-selection/util.ts | 34 +++++ .../src/op-selection/AntlrOpSelection.ts | 2 +- .../op-selection/AntlrOpSelectionVisitor.ts | 6 +- .../src/run-selection/AntlrRunSelection.ts | 2 +- .../run-selection/AntlrRunSelectionVisitor.ts | 6 +- .../selection/SelectionAutoCompleteInput.tsx | 2 +- 15 files changed, 172 insertions(+), 132 deletions(-) create mode 100644 js_modules/dagster-ui/packages/ui-core/src/asset-graph/useAssetGraphSupplementaryData.oss.tsx rename js_modules/dagster-ui/packages/ui-core/src/asset-selection/{AntlrAssetSelectionVisitor.ts => AntlrAssetSelectionVisitor.oss.ts} (85%) create mode 100644 js_modules/dagster-ui/packages/ui-core/src/asset-selection/AssetSelectionAntlr.oss.ts rename js_modules/dagster-ui/packages/ui-core/src/asset-selection/{AntlrAssetSelection.ts => filterAssetSelectionByQuery.ts} (76%) create mode 100644 js_modules/dagster-ui/packages/ui-core/src/asset-selection/util.ts diff --git a/js_modules/dagster-ui/packages/ui-core/src/asset-graph/ComputeGraphData.ts b/js_modules/dagster-ui/packages/ui-core/src/asset-graph/ComputeGraphData.ts index 2de03720cdfbf..57bd5e0e944ea 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/asset-graph/ComputeGraphData.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/asset-graph/ComputeGraphData.ts @@ -4,7 +4,7 @@ import {ComputeGraphDataMessageType} from './ComputeGraphData.types'; import {GraphData, buildGraphData, toGraphId} from './Utils'; import {AssetNodeForGraphQueryFragment} from './types/useAssetGraphData.types'; import {GraphDataState} from './useAssetGraphData'; -import {filterAssetSelectionByQuery} from '../asset-selection/AntlrAssetSelection'; +import {filterAssetSelectionByQuery} from '../asset-selection/filterAssetSelectionByQuery'; import {doesFilterArrayMatchValueArray} from '../ui/Filters/doesFilterArrayMatchValueArray'; export function computeGraphData({ @@ -13,6 +13,7 @@ export function computeGraphData({ opsQuery, kinds: _kinds, hideEdgesToNodesOutsideQuery, + supplementaryData, }: Omit): GraphDataState { if (repoFilteredNodes === undefined || graphQueryItems === undefined) { return { @@ -26,7 +27,11 @@ export function computeGraphData({ // In the future it might be ideal to move this server-side, but we currently // get to leverage the useQuery cache almost 100% of the time above, making this // super fast after the first load vs a network fetch on every page view. - const {all: allFilteredByOpQuery} = filterAssetSelectionByQuery(graphQueryItems, opsQuery); + const {all: allFilteredByOpQuery} = filterAssetSelectionByQuery( + graphQueryItems, + opsQuery, + supplementaryData, + ); const kinds = _kinds?.map((c) => c.toLowerCase()); const all = kinds?.length ? allFilteredByOpQuery.filter( diff --git a/js_modules/dagster-ui/packages/ui-core/src/asset-graph/ComputeGraphData.types.ts b/js_modules/dagster-ui/packages/ui-core/src/asset-graph/ComputeGraphData.types.ts index b6355727ac6d1..e47c18a0946ca 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/asset-graph/ComputeGraphData.types.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/asset-graph/ComputeGraphData.types.ts @@ -1,3 +1,4 @@ +import {AssetKey} from '../assets/types'; import {AssetNodeForGraphQueryFragment} from './types/useAssetGraphData.types'; import {AssetGraphFetchScope, AssetGraphQueryItem} from './useAssetGraphData'; @@ -13,6 +14,7 @@ export type ComputeGraphDataMessageType = BaseType & { opsQuery: string; kinds: AssetGraphFetchScope['kinds']; hideEdgesToNodesOutsideQuery?: boolean; + supplementaryData?: Record | null; }; export type BuildGraphDataMessageType = BaseType & { diff --git a/js_modules/dagster-ui/packages/ui-core/src/asset-graph/useAssetGraphData.tsx b/js_modules/dagster-ui/packages/ui-core/src/asset-graph/useAssetGraphData.tsx index 9f04afd587172..bbe101e3ff9d9 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/asset-graph/useAssetGraphData.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/asset-graph/useAssetGraphData.tsx @@ -3,6 +3,7 @@ import memoize from 'lodash/memoize'; import reject from 'lodash/reject'; import {useEffect, useMemo, useRef, useState} from 'react'; import {FeatureFlag} from 'shared/app/FeatureFlags.oss'; +import {useAssetGraphSupplementaryData} from 'shared/asset-graph/useAssetGraphSupplementaryData.oss'; import {ASSET_NODE_FRAGMENT} from './AssetNode'; import {GraphData, buildGraphData as buildGraphDataImpl, tokenForAssetKey} from './Utils'; @@ -160,8 +161,11 @@ export function useAssetGraphData(opsQuery: string, options: AssetGraphFetchScop const lastProcessedRequestRef = useRef(0); const currentRequestRef = useRef(0); + const {loading: supplementaryDataLoading, data: supplementaryData} = + useAssetGraphSupplementaryData(opsQuery); + useEffect(() => { - if (options.loading) { + if (options.loading || supplementaryDataLoading) { return; } const requestId = ++currentRequestRef.current; @@ -173,6 +177,7 @@ export function useAssetGraphData(opsQuery: string, options: AssetGraphFetchScop kinds, hideEdgesToNodesOutsideQuery, flagSelectionSyntax: featureEnabled(FeatureFlag.flagSelectionSyntax), + supplementaryData, }) ?.then((data) => { if (lastProcessedRequestRef.current < requestId) { @@ -197,6 +202,8 @@ export function useAssetGraphData(opsQuery: string, options: AssetGraphFetchScop kinds, hideEdgesToNodesOutsideQuery, options.loading, + supplementaryData, + supplementaryDataLoading, ]); const loading = fetchResult.loading || graphDataLoading; diff --git a/js_modules/dagster-ui/packages/ui-core/src/asset-graph/useAssetGraphSupplementaryData.oss.tsx b/js_modules/dagster-ui/packages/ui-core/src/asset-graph/useAssetGraphSupplementaryData.oss.tsx new file mode 100644 index 0000000000000..e735f01e11840 --- /dev/null +++ b/js_modules/dagster-ui/packages/ui-core/src/asset-graph/useAssetGraphSupplementaryData.oss.tsx @@ -0,0 +1,13 @@ +import {AssetKey} from '../assets/types'; + +export type SupplementaryInformation = Record | null | undefined; + +// Stub for cloud to supply extended selection syntax filtering capabilities +export const useAssetGraphSupplementaryData = ( + _: string, +): {loading: boolean; data: SupplementaryInformation | null} => { + return { + loading: false, + data: null, + }; +}; diff --git a/js_modules/dagster-ui/packages/ui-core/src/asset-selection/AntlrAssetSelectionVisitor.ts b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/AntlrAssetSelectionVisitor.oss.ts similarity index 85% rename from js_modules/dagster-ui/packages/ui-core/src/asset-selection/AntlrAssetSelectionVisitor.ts rename to js_modules/dagster-ui/packages/ui-core/src/asset-selection/AntlrAssetSelectionVisitor.oss.ts index 042ec47fe500a..59e0409582c51 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/asset-selection/AntlrAssetSelectionVisitor.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/AntlrAssetSelectionVisitor.oss.ts @@ -1,14 +1,13 @@ import {AbstractParseTreeVisitor} from 'antlr4ts/tree/AbstractParseTreeVisitor'; - +import {SupplementaryInformation} from 'shared/asset-graph/useAssetGraphSupplementaryData.oss'; import { AllExpressionContext, AndExpressionContext, + AssetSelectionVisitor, AttributeExpressionContext, CodeLocationAttributeExprContext, - DownTraversalContext, DownTraversalExpressionContext, FunctionCallExpressionContext, - FunctionNameContext, GroupAttributeExprContext, KeyExprContext, KeySubstringExprContext, @@ -21,43 +20,14 @@ import { TagAttributeExprContext, TraversalAllowedExpressionContext, UpAndDownTraversalExpressionContext, - UpTraversalContext, UpTraversalExpressionContext, - ValueContext, -} from './generated/AssetSelectionParser'; -import {AssetSelectionVisitor} from './generated/AssetSelectionVisitor'; +} from 'shared/asset-selection/AssetSelectionAntlr.oss'; + +import {getFunctionName, getTraversalDepth, getValue} from './util'; import {GraphTraverser} from '../app/GraphQueryImpl'; import {AssetGraphQueryItem} from '../asset-graph/useAssetGraphData'; import {buildRepoPathForHuman} from '../workspace/buildRepoAddress'; -export function getTraversalDepth(ctx: UpTraversalContext | DownTraversalContext): number { - const digits = ctx.DIGITS(); - if (digits) { - return parseInt(ctx.text); - } - return Number.MAX_SAFE_INTEGER; -} - -export function getFunctionName(ctx: FunctionNameContext): string { - if (ctx.SINKS()) { - return 'sinks'; - } - if (ctx.ROOTS()) { - return 'roots'; - } - throw new Error('Invalid function name'); -} - -export function getValue(ctx: ValueContext): string { - if (ctx.QUOTED_STRING()) { - return ctx.text.slice(1, -1); - } - if (ctx.UNQUOTED_STRING()) { - return ctx.text; - } - throw new Error('Invalid value'); -} - export class AntlrAssetSelectionVisitor extends AbstractParseTreeVisitor> implements AssetSelectionVisitor> @@ -70,7 +40,8 @@ export class AntlrAssetSelectionVisitor return new Set(); } - constructor(all_assets: AssetGraphQueryItem[]) { + // Supplementary data is not used in oss + constructor(all_assets: AssetGraphQueryItem[], _supplementaryData?: SupplementaryInformation) { super(); this.all_assets = new Set(all_assets); this.focus_assets = new Set(); @@ -192,15 +163,15 @@ export class AntlrAssetSelectionVisitor visitTagAttributeExpr(ctx: TagAttributeExprContext) { const key: string = getValue(ctx.value(0)); + let value: string | undefined = undefined; if (ctx.EQUAL()) { - const value: string = getValue(ctx.value(1)); - return new Set( - [...this.all_assets].filter((i) => - i.node.tags.some((t) => t.key === key && t.value === value), - ), - ); + value = getValue(ctx.value(1)); } - return new Set([...this.all_assets].filter((i) => i.node.tags.some((t) => t.key === key))); + return new Set( + [...this.all_assets].filter((i) => + i.node.tags.some((t) => t.key === key && (!value || t.value === value)), + ), + ); } visitOwnerAttributeExpr(ctx: OwnerAttributeExprContext) { diff --git a/js_modules/dagster-ui/packages/ui-core/src/asset-selection/AssetSelectionAntlr.oss.ts b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/AssetSelectionAntlr.oss.ts new file mode 100644 index 0000000000000..f3de1b7f878c9 --- /dev/null +++ b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/AssetSelectionAntlr.oss.ts @@ -0,0 +1,4 @@ +export * from './generated/AssetSelectionLexer'; +export * from './generated/AssetSelectionParser'; +export * from './generated/AssetSelectionVisitor'; +export * from './generated/AssetSelectionListener'; diff --git a/js_modules/dagster-ui/packages/ui-core/src/asset-selection/__tests__/AntlrAssetSelection.test.ts b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/__tests__/AntlrAssetSelection.test.ts index bf95679748bd8..b641607ffed44 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/asset-selection/__tests__/AntlrAssetSelection.test.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/__tests__/AntlrAssetSelection.test.ts @@ -7,7 +7,7 @@ import { buildRepositoryLocation, buildUserAssetOwner, } from '../../graphql/types'; -import {parseAssetSelectionQuery} from '../AntlrAssetSelection'; +import {parseAssetSelectionQuery} from '../filterAssetSelectionByQuery'; const TEST_GRAPH: AssetGraphQueryItem[] = [ // Top Layer @@ -53,7 +53,6 @@ const TEST_GRAPH: AssetGraphQueryItem[] = [ function assertQueryResult(query: string, expectedNames: string[]) { const result = parseAssetSelectionQuery(TEST_GRAPH, query); - expect(result).not.toBeInstanceOf(Error); if (result instanceof Error) { throw result; } diff --git a/js_modules/dagster-ui/packages/ui-core/src/asset-selection/AntlrAssetSelection.ts b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/filterAssetSelectionByQuery.ts similarity index 76% rename from js_modules/dagster-ui/packages/ui-core/src/asset-selection/AntlrAssetSelection.ts rename to js_modules/dagster-ui/packages/ui-core/src/asset-selection/filterAssetSelectionByQuery.ts index 18cf3ba18b104..81d176749fc28 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/asset-selection/AntlrAssetSelection.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/filterAssetSelectionByQuery.ts @@ -6,14 +6,17 @@ import { Recognizer, } from 'antlr4ts'; import {FeatureFlag} from 'shared/app/FeatureFlags.oss'; +import {SupplementaryInformation} from 'shared/asset-graph/useAssetGraphSupplementaryData.oss'; +import {AntlrAssetSelectionVisitor} from 'shared/asset-selection/AntlrAssetSelectionVisitor.oss'; +import { + AssetSelectionLexer, + AssetSelectionParser, +} from 'shared/asset-selection/AssetSelectionAntlr.oss'; -import {AntlrAssetSelectionVisitor} from './AntlrAssetSelectionVisitor'; -import {AssetGraphQueryItem} from '../asset-graph/useAssetGraphData'; -import {weakMapMemoize} from '../util/weakMapMemoize'; -import {AssetSelectionLexer} from './generated/AssetSelectionLexer'; -import {AssetSelectionParser} from './generated/AssetSelectionParser'; import {featureEnabled} from '../app/Flags'; import {filterByQuery} from '../app/GraphQueryImpl'; +import {AssetGraphQueryItem} from '../asset-graph/useAssetGraphData'; +import {weakMapMemoize} from '../util/weakMapMemoize'; export class AntlrInputErrorListener implements ANTLRErrorListener { syntaxError( @@ -39,6 +42,7 @@ type AssetSelectionQueryResult = { export const parseAssetSelectionQuery = ( all_assets: AssetGraphQueryItem[], query: string, + supplementaryData?: SupplementaryInformation, ): AssetSelectionQueryResult | Error => { try { const lexer = new AssetSelectionLexer(CharStreams.fromString(query)); @@ -53,7 +57,8 @@ export const parseAssetSelectionQuery = ( const tree = parser.start(); - const visitor = new AntlrAssetSelectionVisitor(all_assets); + const visitor = new AntlrAssetSelectionVisitor(all_assets, supplementaryData); + const all_selection = visitor.visit(tree); const focus_selection = visitor.focus_assets; @@ -67,9 +72,13 @@ export const parseAssetSelectionQuery = ( }; export const filterAssetSelectionByQuery = weakMapMemoize( - (all_assets: AssetGraphQueryItem[], query: string): AssetSelectionQueryResult => { + ( + all_assets: AssetGraphQueryItem[], + query: string, + supplementaryData: SupplementaryInformation, + ): AssetSelectionQueryResult => { if (featureEnabled(FeatureFlag.flagSelectionSyntax)) { - const result = parseAssetSelectionQuery(all_assets, query); + const result = parseAssetSelectionQuery(all_assets, query, supplementaryData); if (result instanceof Error) { // fall back to old behavior return filterByQuery(all_assets, query); diff --git a/js_modules/dagster-ui/packages/ui-core/src/asset-selection/input/AssetSelectionInput.oss.tsx b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/input/AssetSelectionInput.oss.tsx index b218a252f6b7a..b6d97be0253df 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/asset-selection/input/AssetSelectionInput.oss.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/input/AssetSelectionInput.oss.tsx @@ -1,5 +1,9 @@ import {Icons} from '@dagster-io/ui-components'; import {useMemo} from 'react'; +import { + AssetSelectionLexer, + AssetSelectionParser, +} from 'shared/asset-selection/AssetSelectionAntlr.oss'; import styled from 'styled-components'; import {assertUnreachable} from '../../app/Util'; @@ -8,8 +12,6 @@ import {SelectionAutoCompleteInput, iconStyle} from '../../selection/SelectionAu import {createSelectionLinter} from '../../selection/createSelectionLinter'; import {placeholderTextForItems} from '../../ui/GraphQueryInput'; import {buildRepoPathForHuman} from '../../workspace/buildRepoAddress'; -import {AssetSelectionLexer} from '../generated/AssetSelectionLexer'; -import {AssetSelectionParser} from '../generated/AssetSelectionParser'; import 'codemirror/addon/edit/closebrackets'; import 'codemirror/lib/codemirror.css'; @@ -30,66 +32,7 @@ const FUNCTIONS = ['sinks', 'roots']; const linter = createSelectionLinter({Lexer: AssetSelectionLexer, Parser: AssetSelectionParser}); export const AssetSelectionInput = ({value, onChange, assets}: AssetSelectionInputProps) => { - const attributesMap = useMemo(() => { - const assetNamesSet: Set = new Set(); - const tagNamesSet: Set = new Set(); - const ownersSet: Set = new Set(); - const groupsSet: Set = new Set(); - const kindsSet: Set = new Set(); - const codeLocationSet: Set = new Set(); - - assets.forEach((asset) => { - assetNamesSet.add(asset.name); - asset.node.tags.forEach((tag) => { - if (tag.key && tag.value) { - // We add quotes around the equal sign here because the auto-complete suggestion already wraps the entire value in quotes. - // So wer end up with tag:"key"="value" as the final suggestion - tagNamesSet.add(`${tag.key}"="${tag.value}`); - } else { - tagNamesSet.add(tag.key); - } - }); - asset.node.owners.forEach((owner) => { - switch (owner.__typename) { - case 'TeamAssetOwner': - ownersSet.add(owner.team); - break; - case 'UserAssetOwner': - ownersSet.add(owner.email); - break; - default: - assertUnreachable(owner); - } - }); - if (asset.node.groupName) { - groupsSet.add(asset.node.groupName); - } - asset.node.kinds.forEach((kind) => { - kindsSet.add(kind); - }); - const location = buildRepoPathForHuman( - asset.node.repository.name, - asset.node.repository.location.name, - ); - codeLocationSet.add(location); - }); - - const assetNames = Array.from(assetNamesSet); - const tagNames = Array.from(tagNamesSet); - const owners = Array.from(ownersSet); - const groups = Array.from(groupsSet); - const kinds = Array.from(kindsSet); - const codeLocations = Array.from(codeLocationSet); - - return { - key: assetNames, - tag: tagNames, - owner: owners, - group: groups, - kind: kinds, - code_location: codeLocations, - }; - }, [assets]); + const attributesMap = useMemo(() => getAttributesMap(assets), [assets]); return ( @@ -107,7 +50,68 @@ export const AssetSelectionInput = ({value, onChange, assets}: AssetSelectionInp ); }; -const WrapperDiv = styled.div` +export const getAttributesMap = (assets: AssetGraphQueryItem[]) => { + const assetNamesSet: Set = new Set(); + const tagNamesSet: Set = new Set(); + const ownersSet: Set = new Set(); + const groupsSet: Set = new Set(); + const kindsSet: Set = new Set(); + const codeLocationSet: Set = new Set(); + + assets.forEach((asset) => { + assetNamesSet.add(asset.name); + asset.node.tags.forEach((tag) => { + if (tag.key && tag.value) { + // We add quotes around the equal sign here because the auto-complete suggestion already wraps the entire value in quotes. + // So wer end up with tag:"key"="value" as the final suggestion + tagNamesSet.add(`${tag.key}"="${tag.value}`); + } else { + tagNamesSet.add(tag.key); + } + }); + asset.node.owners.forEach((owner) => { + switch (owner.__typename) { + case 'TeamAssetOwner': + ownersSet.add(owner.team); + break; + case 'UserAssetOwner': + ownersSet.add(owner.email); + break; + default: + assertUnreachable(owner); + } + }); + if (asset.node.groupName) { + groupsSet.add(asset.node.groupName); + } + asset.node.kinds.forEach((kind) => { + kindsSet.add(kind); + }); + const location = buildRepoPathForHuman( + asset.node.repository.name, + asset.node.repository.location.name, + ); + codeLocationSet.add(location); + }); + + const assetNames = Array.from(assetNamesSet); + const tagNames = Array.from(tagNamesSet); + const owners = Array.from(ownersSet); + const groups = Array.from(groupsSet); + const kinds = Array.from(kindsSet); + const codeLocations = Array.from(codeLocationSet); + + return { + key: assetNames, + tag: tagNames, + owner: owners, + group: groups, + kind: kinds, + code_location: codeLocations, + }; +}; + +export const WrapperDiv = styled.div` .attribute-owner { ${iconStyle(Icons.owner.src)}; } diff --git a/js_modules/dagster-ui/packages/ui-core/src/asset-selection/util.ts b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/util.ts new file mode 100644 index 0000000000000..7888cb59972e1 --- /dev/null +++ b/js_modules/dagster-ui/packages/ui-core/src/asset-selection/util.ts @@ -0,0 +1,34 @@ +import { + DownTraversalContext, + FunctionNameContext, + UpTraversalContext, + ValueContext, +} from 'shared/asset-selection/AssetSelectionAntlr.oss'; + +export function getTraversalDepth(ctx: UpTraversalContext | DownTraversalContext): number { + const digits = ctx.DIGITS(); + if (digits) { + return parseInt(ctx.text); + } + return Number.MAX_SAFE_INTEGER; +} + +export function getFunctionName(ctx: FunctionNameContext): string { + if (ctx.SINKS()) { + return 'sinks'; + } + if (ctx.ROOTS()) { + return 'roots'; + } + throw new Error('Invalid function name'); +} + +export function getValue(ctx: ValueContext): string { + if (ctx.QUOTED_STRING()) { + return ctx.text.slice(1, -1); + } + if (ctx.UNQUOTED_STRING()) { + return ctx.text; + } + throw new Error('Invalid value'); +} diff --git a/js_modules/dagster-ui/packages/ui-core/src/op-selection/AntlrOpSelection.ts b/js_modules/dagster-ui/packages/ui-core/src/op-selection/AntlrOpSelection.ts index 66ded3812952b..b400a495fe00a 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/op-selection/AntlrOpSelection.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/op-selection/AntlrOpSelection.ts @@ -3,7 +3,7 @@ import {FeatureFlag} from 'shared/app/FeatureFlags.oss'; import {AntlrOpSelectionVisitor} from './AntlrOpSelectionVisitor'; import {GraphQueryItem, filterByQuery} from '../app/GraphQueryImpl'; -import {AntlrInputErrorListener} from '../asset-selection/AntlrAssetSelection'; +import {AntlrInputErrorListener} from '../asset-selection/filterAssetSelectionByQuery'; import {OpSelectionLexer} from './generated/OpSelectionLexer'; import {OpSelectionParser} from './generated/OpSelectionParser'; import {featureEnabled} from '../app/Flags'; diff --git a/js_modules/dagster-ui/packages/ui-core/src/op-selection/AntlrOpSelectionVisitor.ts b/js_modules/dagster-ui/packages/ui-core/src/op-selection/AntlrOpSelectionVisitor.ts index 84f838951c1bd..d3e9a0e2fc6c2 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/op-selection/AntlrOpSelectionVisitor.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/op-selection/AntlrOpSelectionVisitor.ts @@ -18,11 +18,7 @@ import { UpTraversalExpressionContext, } from './generated/OpSelectionParser'; import {OpSelectionVisitor} from './generated/OpSelectionVisitor'; -import { - getFunctionName, - getTraversalDepth, - getValue, -} from '../asset-selection/AntlrAssetSelectionVisitor'; +import {getFunctionName, getTraversalDepth, getValue} from '../asset-selection/util'; export class AntlrOpSelectionVisitor extends AbstractParseTreeVisitor> diff --git a/js_modules/dagster-ui/packages/ui-core/src/run-selection/AntlrRunSelection.ts b/js_modules/dagster-ui/packages/ui-core/src/run-selection/AntlrRunSelection.ts index 24c986e69c848..ed15c8a1153ab 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/run-selection/AntlrRunSelection.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/run-selection/AntlrRunSelection.ts @@ -2,7 +2,7 @@ import {CharStreams, CommonTokenStream} from 'antlr4ts'; import {FeatureFlag} from 'shared/app/FeatureFlags.oss'; import {AntlrRunSelectionVisitor} from './AntlrRunSelectionVisitor'; -import {AntlrInputErrorListener} from '../asset-selection/AntlrAssetSelection'; +import {AntlrInputErrorListener} from '../asset-selection/filterAssetSelectionByQuery'; import {RunGraphQueryItem} from '../gantt/toGraphQueryItems'; import {RunSelectionLexer} from './generated/RunSelectionLexer'; import {RunSelectionParser} from './generated/RunSelectionParser'; diff --git a/js_modules/dagster-ui/packages/ui-core/src/run-selection/AntlrRunSelectionVisitor.ts b/js_modules/dagster-ui/packages/ui-core/src/run-selection/AntlrRunSelectionVisitor.ts index 5fdcca878a8ea..791ce1271e910 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/run-selection/AntlrRunSelectionVisitor.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/run-selection/AntlrRunSelectionVisitor.ts @@ -20,11 +20,7 @@ import { UpTraversalExpressionContext, } from './generated/RunSelectionParser'; import {RunSelectionVisitor} from './generated/RunSelectionVisitor'; -import { - getFunctionName, - getTraversalDepth, - getValue, -} from '../asset-selection/AntlrAssetSelectionVisitor'; +import {getFunctionName, getTraversalDepth, getValue} from '../asset-selection/util'; export class AntlrRunSelectionVisitor extends AbstractParseTreeVisitor> diff --git a/js_modules/dagster-ui/packages/ui-core/src/selection/SelectionAutoCompleteInput.tsx b/js_modules/dagster-ui/packages/ui-core/src/selection/SelectionAutoCompleteInput.tsx index 5e8ff88cdff18..5c32c3da9d7fc 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/selection/SelectionAutoCompleteInput.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/selection/SelectionAutoCompleteInput.tsx @@ -298,7 +298,7 @@ export const SelectionAutoCompleteInput = , N <> +