From 957169bb417c9283b2f224c7c6c61441e1acbab2 Mon Sep 17 00:00:00 2001 From: Dallas <5322142+gitdallas@users.noreply.github.com> Date: Mon, 22 Jul 2024 17:10:00 -0500 Subject: [PATCH] feat(mr): add display name and description for mr selector (#3019) Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com> --- frontend/src/concepts/k8s/utils.ts | 2 + .../screens/ModelRegistrySelector.tsx | 66 +++++++++++++++++-- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/frontend/src/concepts/k8s/utils.ts b/frontend/src/concepts/k8s/utils.ts index 32df8aed7d..970bad9d7d 100644 --- a/frontend/src/concepts/k8s/utils.ts +++ b/frontend/src/concepts/k8s/utils.ts @@ -2,6 +2,8 @@ import { K8sDSGResource } from '~/k8sTypes'; export const getDisplayNameFromK8sResource = (resource: K8sDSGResource): string => resource.metadata.annotations?.['openshift.io/display-name'] || resource.metadata.name; +export const getResourceNameFromK8sResource = (resource: K8sDSGResource): string => + resource.metadata.name; export const getDescriptionFromK8sResource = (resource: K8sDSGResource): string => resource.metadata.annotations?.['openshift.io/description'] || ''; diff --git a/frontend/src/pages/modelRegistry/screens/ModelRegistrySelector.tsx b/frontend/src/pages/modelRegistry/screens/ModelRegistrySelector.tsx index db44c4a16a..89b14afd4f 100644 --- a/frontend/src/pages/modelRegistry/screens/ModelRegistrySelector.tsx +++ b/frontend/src/pages/modelRegistry/screens/ModelRegistrySelector.tsx @@ -5,11 +5,29 @@ import { SelectGroup, SelectOption, } from '@patternfly/react-core/deprecated'; -import { Bullseye, Flex, FlexItem } from '@patternfly/react-core'; +import { + Bullseye, + Button, + DescriptionList, + DescriptionListDescription, + DescriptionListGroup, + DescriptionListTerm, + Flex, + FlexItem, + Popover, + Tooltip, +} from '@patternfly/react-core'; +import truncateStyles from '@patternfly/react-styles/css/components/Truncate/truncate'; +import { InfoCircleIcon } from '@patternfly/react-icons'; import { useBrowserStorage } from '~/components/browserStorage'; import { ModelRegistrySelectorContext } from '~/concepts/modelRegistry/context/ModelRegistrySelectorContext'; import { ProjectObjectType, typedObjectImage } from '~/concepts/design/utils'; -import { getDisplayNameFromK8sResource } from '~/concepts/k8s/utils'; +import { + getDescriptionFromK8sResource, + getDisplayNameFromK8sResource, + getResourceNameFromK8sResource, +} from '~/concepts/k8s/utils'; +import { ModelRegistryKind } from '~/k8sTypes'; const MODEL_REGISTRY_FAVORITE_STORAGE_KEY = 'odh.dashboard.model.registry.favorite'; @@ -38,15 +56,42 @@ const ModelRegistrySelector: React.FC = ({ const toggleLabel = modelRegistries.length === 0 ? 'No model registries' : selectionDisplayName; + const getMRSelectDescription = (mr: ModelRegistryKind) => { + const desc = getDescriptionFromK8sResource(mr); + if (!desc) { + return; + } + const tooltipContent = ( + + + {`${getDisplayNameFromK8sResource( + mr, + )} description`} + {desc} + + + ); + return ( + + + {desc} + + + ); + }; + const options = [ {modelRegistries.map((mr) => ( + > + {getDisplayNameFromK8sResource(mr)} + ))} , ]; @@ -97,6 +142,19 @@ const ModelRegistrySelector: React.FC = ({ Model registry {selector} + {selection && getDescriptionFromK8sResource(selection) && ( + + + + + + )} );