diff --git a/js_modules/dagster-ui/packages/ui-components/src/components/CollapsibleSection.tsx b/js_modules/dagster-ui/packages/ui-components/src/components/CollapsibleSection.tsx index 692f0525c2c0e..322a9c36d22f5 100644 --- a/js_modules/dagster-ui/packages/ui-components/src/components/CollapsibleSection.tsx +++ b/js_modules/dagster-ui/packages/ui-components/src/components/CollapsibleSection.tsx @@ -8,28 +8,48 @@ export const CollapsibleSection = ({ headerWrapperProps, children, isInitiallyCollapsed = false, + arrowSide = 'left', }: { header: React.ReactNode; headerWrapperProps?: React.ComponentProps; children: React.ReactNode; isInitiallyCollapsed?: boolean; + arrowSide?: 'left' | 'right'; }) => { const [isCollapsed, setIsCollapsed] = React.useState(isInitiallyCollapsed); return ( { setIsCollapsed(!isCollapsed); headerWrapperProps?.onClick?.(); }} > - -
{header}
+ {arrowSide === 'left' ? ( + <> + +
{header}
+ + ) : ( + +
{header}
+ +
+ )}
{isCollapsed ? null : children}
diff --git a/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanel.tsx b/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanel.tsx index 3800a0a115878..59298bceb4223 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanel.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanel.tsx @@ -333,7 +333,7 @@ export const AutomaterializeMiddlePanelWithData = ({
- Evaluation Result + Evaluation result
{statusTag}
{selectedEvaluation?.timestamp ? ( diff --git a/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/AssetChecks.tsx b/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/AssetChecks.tsx index ddb10c2e35e86..784af61fe996a 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/AssetChecks.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/AssetChecks.tsx @@ -41,6 +41,7 @@ import {Timestamp} from '../../app/time/Timestamp'; import {AssetKeyInput} from '../../graphql/types'; import {useQueryPersistedState} from '../../hooks/useQueryPersistedState'; import {useStateWithStorage} from '../../hooks/useStateWithStorage'; +import {MetadataEntries} from '../../metadata/MetadataEntry'; import {linkToRunEvent} from '../../runs/RunUtils'; import {useCursorPaginatedQuery} from '../../runs/useCursorPaginatedQuery'; import {TimestampDisplay} from '../../schedules/TimestampDisplay'; @@ -142,6 +143,8 @@ export const AssetChecks = ({ const lastExecution = selectedCheck.executionForLatestMaterialization; const targetMaterialization = lastExecution?.evaluation?.targetMaterialization; + console.log({lastExecution}); + return ( {didDismissAssetChecksBanner ? null : ( @@ -241,6 +244,7 @@ export const AssetChecks = ({ About} headerWrapperProps={headerWrapperProps} + arrowSide="right" > @@ -267,11 +271,12 @@ export const AssetChecks = ({ Latest execution} headerWrapperProps={headerWrapperProps} + arrowSide="right" > - -
+ +
- Evaluation Result + Evaluation result
) : null}
+ {lastExecution?.evaluation?.metadataEntries.length ? ( + + Metadata + + + ) : null}
Execution history} headerWrapperProps={headerWrapperProps} + arrowSide="right" > {lastExecution ? ( @@ -352,7 +364,11 @@ const CheckExecutions = ({assetKey, checkName}: {assetKey: AssetKeyInput; checkN // TODO - in a follow up PR we should have some kind of queryRefresh context that can merge all of the uses of queryRefresh. useQueryRefreshAtInterval(queryResult, FIFTEEN_SECONDS); - const executions = queryResult.data?.assetCheckExecutions; + const executions = React.useMemo( + // Remove first element since the latest execution info is already shown above + () => queryResult.data?.assetCheckExecutions.slice(1), + [queryResult], + ); const runHistory = () => { if (!executions) { @@ -363,7 +379,7 @@ const CheckExecutions = ({assetKey, checkName}: {assetKey: AssetKeyInput; checkN - + @@ -471,8 +487,8 @@ export const ASSET_CHECKS_QUERY = gql` } ... on AssetChecks { checks { - ...AssetCheckTableFragment ...ExecuteChecksButtonCheckFragment + ...AssetCheckTableFragment } } } diff --git a/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/__fixtures__/AssetChecks.fixtures.tsx b/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/__fixtures__/AssetChecks.fixtures.tsx index 5b3ac84da941a..ffb10d826ba46 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/__fixtures__/AssetChecks.fixtures.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/__fixtures__/AssetChecks.fixtures.tsx @@ -24,7 +24,7 @@ export const TestAssetCheck = buildAssetCheck({ timestamp: testLatestMaterializationTimeStamp, runId: testLatestMaterializationRunId, }), - metadataEntries: [buildIntMetadataEntry({})], + metadataEntries: [], severity: AssetCheckSeverity.ERROR, }), runId: testLatestMaterializationRunId, diff --git a/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/types/AssetChecks.types.ts b/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/types/AssetChecks.types.ts index 3c73a7c2fb723..711db7c71fac3 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/types/AssetChecks.types.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/assets/asset-checks/types/AssetChecks.types.ts @@ -22,8 +22,8 @@ export type AssetChecksQuery = { checks: Array<{ __typename: 'AssetCheck'; name: string; - description: string | null; canExecuteIndividually: Types.AssetCheckCanExecuteIndividually; + description: string | null; executionForLatestMaterialization: { __typename: 'AssetCheckExecution'; id: string;
Evaluation ResultEvaluation result Timestamp Target materialization Metadata