import * as React from 'react'; import { CodeSandboxOutlined } from '@ant-design/icons'; import { MlModelGroup, EntityType, SearchResult, OwnershipType } from '../../../types.generated'; import { Preview } from './preview/Preview'; import { Entity, EntityCapabilityType, IconStyleType, PreviewType } from '../Entity'; import { getDataForEntityType } from '../shared/containers/profile/utils'; import { GenericEntityProperties } from '../shared/types'; import { EntityProfile } from '../shared/containers/profile/EntityProfile'; import { SidebarDomainSection } from '../shared/containers/profile/sidebar/Domain/SidebarDomainSection'; import { SidebarOwnerSection } from '../shared/containers/profile/sidebar/Ownership/sidebar/SidebarOwnerSection'; import { SidebarAboutSection } from '../shared/containers/profile/sidebar/AboutSection/SidebarAboutSection'; import { SidebarTagsSection } from '../shared/containers/profile/sidebar/SidebarTagsSection'; import { useGetMlModelGroupQuery } from '../../../graphql/mlModelGroup.generated'; import ModelGroupModels from './profile/ModelGroupModels'; import { DocumentationTab } from '../shared/tabs/Documentation/DocumentationTab'; import { EntityMenuItems } from '../shared/EntityDropdown/EntityDropdown'; import DataProductSection from '../shared/containers/profile/sidebar/DataProduct/DataProductSection'; import { PropertiesTab } from '../shared/tabs/Properties/PropertiesTab'; import SidebarStructuredPropsSection from '../shared/containers/profile/sidebar/StructuredProperties/SidebarStructuredPropsSection'; /** * Definition of the DataHub MlModelGroup entity. */ export class MLModelGroupEntity implements Entity { type: EntityType = EntityType.MlmodelGroup; icon = (fontSize: number, styleType: IconStyleType, color?: string) => { if (styleType === IconStyleType.TAB_VIEW) { return ; } if (styleType === IconStyleType.HIGHLIGHT) { return ; } return ( ); }; isSearchEnabled = () => true; isBrowseEnabled = () => true; isLineageEnabled = () => true; getAutoCompleteFieldName = () => 'name'; getGraphName = () => 'mlModelGroup'; getPathName = () => 'mlModelGroup'; getEntityName = () => 'ML Group'; getCollectionName = () => 'ML Groups'; getOverridePropertiesFromEntity = (_?: MlModelGroup | null): GenericEntityProperties => { return {}; }; useEntityQuery = useGetMlModelGroupQuery; getSidebarSections = () => [ { component: SidebarAboutSection, }, { component: SidebarOwnerSection, properties: { defaultOwnerType: OwnershipType.TechnicalOwner, }, }, { component: SidebarTagsSection, properties: { hasTags: true, hasTerms: true, }, }, { component: SidebarDomainSection, }, { component: DataProductSection, }, { component: SidebarStructuredPropsSection, }, ]; renderProfile = (urn: string) => ( ); renderPreview = (_: PreviewType, data: MlModelGroup) => { return ; }; renderSearch = (result: SearchResult) => { const data = result.entity as MlModelGroup; return ; }; getLineageVizConfig = (entity: MlModelGroup) => { return { urn: entity.urn, name: entity.name, type: EntityType.MlmodelGroup, icon: entity.platform?.properties?.logoUrl || undefined, platform: entity.platform, }; }; displayName = (data: MlModelGroup) => { return data.name || data.urn; }; getGenericEntityProperties = (mlModelGroup: MlModelGroup) => { return getDataForEntityType({ data: mlModelGroup, entityType: this.type, getOverrideProperties: (data) => data, }); }; supportedCapabilities = () => { return new Set([ EntityCapabilityType.OWNERS, EntityCapabilityType.GLOSSARY_TERMS, EntityCapabilityType.TAGS, EntityCapabilityType.DOMAINS, EntityCapabilityType.DEPRECATION, EntityCapabilityType.SOFT_DELETE, EntityCapabilityType.DATA_PRODUCTS, ]); }; }