From 1314a62008d59b5f0e7711025acb08ce089202b5 Mon Sep 17 00:00:00 2001 From: prha <philrha@gmail.com> Date: Tue, 7 Jan 2025 21:39:53 -0800 Subject: [PATCH] runs ui --- .../dagster-ui/packages/ui-core/client.json | 4 +-- .../ui-core/src/runs/RunFragments.tsx | 1 + .../ui-core/src/runs/RunHeaderActions.tsx | 14 ++++++++++ .../ui-core/src/runs/RunPoolsDialog.tsx | 28 +++++++++++++++++++ .../types/RunActionButtonsTestQuery.types.ts | 3 +- .../src/runs/types/RunFragments.types.ts | 2 ++ .../ui-core/src/runs/types/RunRoot.types.ts | 3 +- 7 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 js_modules/dagster-ui/packages/ui-core/src/runs/RunPoolsDialog.tsx diff --git a/js_modules/dagster-ui/packages/ui-core/client.json b/js_modules/dagster-ui/packages/ui-core/client.json index fb84f82141e07..eea7ebe34cf4b 100644 --- a/js_modules/dagster-ui/packages/ui-core/client.json +++ b/js_modules/dagster-ui/packages/ui-core/client.json @@ -127,7 +127,7 @@ "RunAssetsQuery": "53c1e7814d451dfd58fb2427dcb326a1e9628c8bbc91b3b9c76f8d6c7b75e278", "RunTabsCountQuery": "5fe1760a3bf0494fb98e3c09f31add5138f9f31d59507a8b25186e2103bebbb4", "RunStepStatsQuery": "77d73353a4aea095bfa241903122abf14eb38341c5869a9688b70c0d53f5a167", - "RunRootQuery": "4f2633b31ddc71c08d3a985be30dc1bf21fbc462287554f165060c51a3554beb", + "RunRootQuery": "1da9ea08b905f4749f7941abf4a51cbcba78cd150d77f02345c8467abb497257", "RunStatsQuery": "75e80f740a79607de9e1152f9b7074d319197fbc219784c767c1abd5553e9a49", "LaunchPipelineExecution": "292088c4a697aca6be1d3bbc0cfc45d8a13cdb2e75cfedc64b68c6245ea34f89", "LaunchMultipleRuns": "a56d9efdb35e71e0fd1744dd768129248943bc5b23e717458b82c46829661763", @@ -139,7 +139,7 @@ "RunTagValuesQuery": "0c0a9998c215bb801eb0adcd5449c0ac4cf1e8efbc6d0fcc5fb6d76fcc95cb92", "ScheduledRunsListQuery": "2650d8ebdfc444fe76fcf8acd9ff54f9ecacdb680b1d83e3f487cb71dd0c7eae", "TerminateRunIdsQuery": "d38573af47f3ab2f2b11d90cb85ce8426307e2384e67a5b20e2bf67d5c1054bb", - "RunActionButtonsTestQuery": "5d358c3360e683549b885108c3dbb7c1d21d8afd790a5ee963e6e9640ccdbfe8", + "RunActionButtonsTestQuery": "dc4d3b53b887955782addbab7ce79b551014d44bc7646e4932a022280cc0c185", "RunsRootQuery": "091646e47ecea81ba4765a3f2cead18880b09ee400d1d7e9dcb6e194ee364e51", "RunsFeedRootQuery": "5aac6e9b29b52642fec8a45ca86d183a0d7b2d4e092c27a107f37bf5ec4fdfc4", "OngoingRunTimelineQuery": "055420e85ba799b294bab52c01d3f4a4470580606a40483031c35777d88d527f", diff --git a/js_modules/dagster-ui/packages/ui-core/src/runs/RunFragments.tsx b/js_modules/dagster-ui/packages/ui-core/src/runs/RunFragments.tsx index b34d76e07dab3..812b9352a8dd4 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/runs/RunFragments.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/runs/RunFragments.tsx @@ -14,6 +14,7 @@ export const RUN_FRAGMENT = gql` repositoryName repositoryLocationName } + allConcurrencyKeys hasReExecutePermission hasTerminatePermission hasDeletePermission diff --git a/js_modules/dagster-ui/packages/ui-core/src/runs/RunHeaderActions.tsx b/js_modules/dagster-ui/packages/ui-core/src/runs/RunHeaderActions.tsx index 8af6b4945edad..a4bae7ca82f44 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/runs/RunHeaderActions.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/runs/RunHeaderActions.tsx @@ -6,6 +6,7 @@ import {RunMetricsDialog} from 'shared/runs/RunMetricsDialog.oss'; import {DeletionDialog} from './DeletionDialog'; import {QueuedRunCriteriaDialog} from './QueuedRunCriteriaDialog'; import {RunConfigDialog} from './RunConfigDialog'; +import {RunPoolsDialog} from './RunPoolsDialog'; import {doneStatuses} from './RunStatuses'; import {RunsQueryRefetchContext} from './RunUtils'; import {TerminationDialog} from './TerminationDialog'; @@ -30,6 +31,7 @@ type VisibleDialog = | 'queue-criteria' | 'free_slots' | 'metrics' + | 'pools' | null; export const RunHeaderActions = ({run, isJob}: {run: RunFragment; isJob: boolean}) => { @@ -93,6 +95,11 @@ export const RunHeaderActions = ({run, isJob}: {run: RunFragment; isJob: boolean <Button icon={<Icon name="tag" />} onClick={() => setVisibleDialog('config')}> View tags and config </Button> + {run.allConcurrencyKeys && run.allConcurrencyKeys.length ? ( + <Tooltip content="View pools" position="top" targetTagName="div"> + <Button icon={<Icon name="concurrency" />} onClick={() => setVisibleDialog('pools')} /> + </Tooltip> + ) : null} <Popover position="bottom-right" content={ @@ -204,6 +211,13 @@ export const RunHeaderActions = ({run, isJob}: {run: RunFragment; isJob: boolean selectedRuns={{[run.id]: run.canTerminate}} /> ) : null} + {run.allConcurrencyKeys && run.allConcurrencyKeys.length ? ( + <RunPoolsDialog + isOpen={visibleDialog === 'pools'} + pools={run.allConcurrencyKeys} + onClose={() => setVisibleDialog(null)} + /> + ) : null} </div> ); }; diff --git a/js_modules/dagster-ui/packages/ui-core/src/runs/RunPoolsDialog.tsx b/js_modules/dagster-ui/packages/ui-core/src/runs/RunPoolsDialog.tsx new file mode 100644 index 0000000000000..eaa3be537ea11 --- /dev/null +++ b/js_modules/dagster-ui/packages/ui-core/src/runs/RunPoolsDialog.tsx @@ -0,0 +1,28 @@ +import {Box, Button, Dialog, DialogFooter} from '@dagster-io/ui-components'; + +import {PoolTag} from '../instance/PoolTag'; + +export const RunPoolsDialog = ({ + isOpen, + onClose, + pools, +}: { + isOpen: boolean; + onClose: () => void; + pools: string[]; +}) => { + return ( + <Dialog isOpen={isOpen} onClose={onClose} canOutsideClickClose canEscapeKeyClose title="Pools"> + <Box margin={{horizontal: 24, vertical: 12}} flex={{gap: 12}}> + {pools.map((pool) => ( + <PoolTag key={pool} pool={pool} /> + ))} + </Box> + <DialogFooter topBorder> + <Button onClick={onClose} intent="primary"> + Close + </Button> + </DialogFooter> + </Dialog> + ); +}; diff --git a/js_modules/dagster-ui/packages/ui-core/src/runs/__tests__/types/RunActionButtonsTestQuery.types.ts b/js_modules/dagster-ui/packages/ui-core/src/runs/__tests__/types/RunActionButtonsTestQuery.types.ts index cc5a89e67c1fb..ff9885c7181d3 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/runs/__tests__/types/RunActionButtonsTestQuery.types.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/runs/__tests__/types/RunActionButtonsTestQuery.types.ts @@ -14,6 +14,7 @@ export type RunActionButtonsTestQuery = { parentPipelineSnapshotId: string | null; runConfigYaml: string; canTerminate: boolean; + allConcurrencyKeys: Array<string> | null; hasReExecutePermission: boolean; hasTerminatePermission: boolean; hasDeletePermission: boolean; @@ -60,4 +61,4 @@ export type RunActionButtonsTestQuery = { | {__typename: 'RunNotFoundError'}; }; -export const RunActionButtonsTestQueryVersion = '5d358c3360e683549b885108c3dbb7c1d21d8afd790a5ee963e6e9640ccdbfe8'; +export const RunActionButtonsTestQueryVersion = 'dc4d3b53b887955782addbab7ce79b551014d44bc7646e4932a022280cc0c185'; diff --git a/js_modules/dagster-ui/packages/ui-core/src/runs/types/RunFragments.types.ts b/js_modules/dagster-ui/packages/ui-core/src/runs/types/RunFragments.types.ts index e75aab9ccde18..2988f8313cd20 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/runs/types/RunFragments.types.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/runs/types/RunFragments.types.ts @@ -7,6 +7,7 @@ export type RunFragment = { id: string; runConfigYaml: string; canTerminate: boolean; + allConcurrencyKeys: Array<string> | null; hasReExecutePermission: boolean; hasTerminatePermission: boolean; hasDeletePermission: boolean; @@ -3135,6 +3136,7 @@ export type RunPageFragment = { parentPipelineSnapshotId: string | null; runConfigYaml: string; canTerminate: boolean; + allConcurrencyKeys: Array<string> | null; hasReExecutePermission: boolean; hasTerminatePermission: boolean; hasDeletePermission: boolean; diff --git a/js_modules/dagster-ui/packages/ui-core/src/runs/types/RunRoot.types.ts b/js_modules/dagster-ui/packages/ui-core/src/runs/types/RunRoot.types.ts index 8c196998cc90a..f52c37846a81b 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/runs/types/RunRoot.types.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/runs/types/RunRoot.types.ts @@ -16,6 +16,7 @@ export type RunRootQuery = { parentPipelineSnapshotId: string | null; runConfigYaml: string; canTerminate: boolean; + allConcurrencyKeys: Array<string> | null; hasReExecutePermission: boolean; hasTerminatePermission: boolean; hasDeletePermission: boolean; @@ -62,4 +63,4 @@ export type RunRootQuery = { | {__typename: 'RunNotFoundError'}; }; -export const RunRootQueryVersion = '4f2633b31ddc71c08d3a985be30dc1bf21fbc462287554f165060c51a3554beb'; +export const RunRootQueryVersion = '1da9ea08b905f4749f7941abf4a51cbcba78cd150d77f02345c8467abb497257';