feat: Hide entities with hidden flag on Workspace create (#581)

Signed-off-by: Charles Thao <cthao@redhat.com>
This commit is contained in:
Charles Thao 2025-09-15 12:36:33 -04:00 committed by GitHub
parent 5d91ee05b2
commit ade0282aca
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 90 additions and 80 deletions

View File

@ -100,28 +100,30 @@ export const WorkspaceFormImageList: React.FunctionComponent<WorkspaceFormImageL
)}
{filteredWorkspaceImages.length > 0 && (
<Gallery hasGutter aria-label="Selectable card container">
{filteredWorkspaceImages.map((image) => (
<Card
isCompact
isSelectable
key={image.id}
id={image.id.replace(/ /g, '-')}
isSelected={image.id === selectedImage?.id}
>
<CardHeader
selectableActions={{
selectableActionId: `selectable-actions-item-${image.id.replace(/ /g, '-')}`,
selectableActionAriaLabelledby: image.displayName.replace(/ /g, '-'),
name: image.displayName,
variant: 'single',
onChange,
}}
{filteredWorkspaceImages
.filter((image) => !image.hidden)
.map((image) => (
<Card
isCompact
isSelectable
key={image.id}
id={image.id.replace(/ /g, '-')}
isSelected={image.id === selectedImage?.id}
>
<CardTitle>{image.displayName}</CardTitle>
<CardBody>{image.id}</CardBody>
</CardHeader>
</Card>
))}
<CardHeader
selectableActions={{
selectableActionId: `selectable-actions-item-${image.id.replace(/ /g, '-')}`,
selectableActionAriaLabelledby: image.displayName.replace(/ /g, '-'),
name: image.displayName,
variant: 'single',
onChange,
}}
>
<CardTitle>{image.displayName}</CardTitle>
<CardBody>{image.id}</CardBody>
</CardHeader>
</Card>
))}
</Gallery>
)}
</PageSection>

View File

@ -95,43 +95,49 @@ export const WorkspaceFormKindList: React.FunctionComponent<WorkspaceFormKindLis
)}
{filteredWorkspaceKinds.length > 0 && (
<Gallery hasGutter aria-label="Selectable card container">
{filteredWorkspaceKinds.map((kind) => (
<Card
isCompact
isSelectable
key={kind.name}
id={kind.name.replace(/ /g, '-')}
isSelected={kind.name === selectedKind?.name}
>
<CardHeader
selectableActions={{
selectableActionId: `selectable-actions-item-${kind.name.replace(/ /g, '-')}`,
selectableActionAriaLabelledby: kind.name.replace(/ /g, '-'),
name: kind.name,
variant: 'single',
onChange,
}}
{filteredWorkspaceKinds
.filter((kind) => !kind.hidden)
.map((kind) => (
<Card
isCompact
isSelectable
key={kind.name}
id={kind.name.replace(/ /g, '-')}
isSelected={kind.name === selectedKind?.name}
>
<WithValidImage
imageSrc={kind.logo.url}
skeletonWidth="60px"
fallback={
<ImageFallback
imageSrc={kind.logo.url}
extended
message="Cannot load logo image"
/>
}
<CardHeader
selectableActions={{
selectableActionId: `selectable-actions-item-${kind.name.replace(/ /g, '-')}`,
selectableActionAriaLabelledby: kind.name.replace(/ /g, '-'),
name: kind.name,
variant: 'single',
onChange,
}}
>
{(validSrc) => (
<img src={validSrc} alt={`${kind.name} logo`} style={{ maxWidth: '60px' }} />
)}
</WithValidImage>
</CardHeader>
<CardTitle>{kind.displayName}</CardTitle>
<CardBody>{kind.description}</CardBody>
</Card>
))}
<WithValidImage
imageSrc={kind.logo.url}
skeletonWidth="60px"
fallback={
<ImageFallback
imageSrc={kind.logo.url}
extended
message="Cannot load logo image"
/>
}
>
{(validSrc) => (
<img
src={validSrc}
alt={`${kind.name} logo`}
style={{ maxWidth: '60px' }}
/>
)}
</WithValidImage>
</CardHeader>
<CardTitle>{kind.displayName}</CardTitle>
<CardBody>{kind.description}</CardBody>
</Card>
))}
</Gallery>
)}
</PageSection>

View File

@ -96,28 +96,30 @@ export const WorkspaceFormPodConfigList: React.FunctionComponent<
)}
{filteredWorkspacePodConfigs.length > 0 && (
<Gallery hasGutter aria-label="Selectable card container">
{filteredWorkspacePodConfigs.map((podConfig) => (
<Card
isCompact
isSelectable
key={podConfig.id}
id={podConfig.id.replace(/ /g, '-')}
isSelected={podConfig.id === selectedPodConfig?.id}
>
<CardHeader
selectableActions={{
selectableActionId: `selectable-actions-item-${podConfig.id.replace(/ /g, '-')}`,
selectableActionAriaLabelledby: podConfig.displayName.replace(/ /g, '-'),
name: podConfig.displayName,
variant: 'single',
onChange,
}}
{filteredWorkspacePodConfigs
.filter((podConfig) => !podConfig.hidden)
.map((podConfig) => (
<Card
isCompact
isSelectable
key={podConfig.id}
id={podConfig.id.replace(/ /g, '-')}
isSelected={podConfig.id === selectedPodConfig?.id}
>
<CardTitle>{podConfig.displayName}</CardTitle>
<CardBody>{podConfig.id}</CardBody>
</CardHeader>
</Card>
))}
<CardHeader
selectableActions={{
selectableActionId: `selectable-actions-item-${podConfig.id.replace(/ /g, '-')}`,
selectableActionAriaLabelledby: podConfig.displayName.replace(/ /g, '-'),
name: podConfig.displayName,
variant: 'single',
onChange,
}}
>
<CardTitle>{podConfig.displayName}</CardTitle>
<CardBody>{podConfig.id}</CardBody>
</CardHeader>
</Card>
))}
</Gallery>
)}
</PageSection>

View File

@ -217,7 +217,7 @@ export const buildMockWorkspaceKind = (
{ key: 'pythonVersion', value: '3.11' },
{ key: 'jupyterlabVersion', value: '1.8.0' },
],
hidden: true,
hidden: false,
clusterMetrics: {
workspacesCount: 0,
},
@ -257,7 +257,7 @@ export const buildMockWorkspaceKind = (
{ key: 'pythonVersion', value: '3.12' },
{ key: 'jupyterlabVersion', value: '2.0.0' },
],
hidden: true,
hidden: false,
redirect: {
to: 'jupyterlab_scipy_210',
message: {
@ -318,7 +318,7 @@ export const buildMockWorkspaceKind = (
id: 'large_cpu',
displayName: 'Large CPU',
description: 'Pod with 1 CPU, 1 Gb RAM',
hidden: false,
hidden: true,
labels: [
{ key: 'cpu', value: '1000m' },
{ key: 'memory', value: '1Gi' },