import { Tabs, Breadcrumb, Space, Radio } from 'antd'; import React, { useRef, useEffect, useState } from 'react'; import { history, useModel } from '@umijs/max'; import ClassDimensionTable from './ClassDimensionTable'; import ClassMetricTable from './ClassMetricTable'; import PermissionSection from './Permission/PermissionSection'; import TagObjectTable from '../Insights/components/TagObjectTable'; import TermTable from '../components/Term/TermTable'; import OverView from './OverView'; import styles from './style.less'; import { HomeOutlined, FundViewOutlined } from '@ant-design/icons'; import { ISemantic } from '../data'; import SemanticGraphCanvas from '../SemanticGraphCanvas'; import View from '../View'; type Props = { isModel: boolean; activeKey: string; modelList: ISemantic.IModelItem[]; dataSetList: ISemantic.IDatasetItem[]; handleModelChange: (model?: ISemantic.IModelItem) => void; onBackDomainBtnClick?: () => void; onMenuChange?: (menuKey: string) => void; }; const DomainManagerTab: React.FC = ({ isModel, activeKey, modelList, dataSetList, handleModelChange, onBackDomainBtnClick, onMenuChange, }) => { const initState = useRef(false); const defaultTabKey = 'metric'; const domainModel = useModel('SemanticModel.domainData'); const modelModel = useModel('SemanticModel.modelData'); const { selectDomainId, selectDomainName, selectDomain: domainData } = domainModel; const { selectModelId, selectModelName } = modelModel; useEffect(() => { initState.current = false; }, [selectModelId]); const [showModelType, setShowModelType] = useState('list'); const tabItem = [ { label: '数据集管理', key: 'overview', hidden: !!domainData?.parentId, children: , }, { label: '模型管理', key: 'modelManage', children: showModelType === 'list' ? ( { handleModelChange(model); }} /> ) : (
), }, { label: '标签对象管理', key: 'tagObjectManage', hidden: !!domainData?.parentId, children: , }, { label: '术语管理', key: 'termManage', hidden: !!domainData?.parentId, children: , }, { label: '权限管理', key: 'permissonSetting', hidden: !!domainData?.parentId, children: , }, ].filter((item) => { if (item.hidden) { return false; } if (domainData?.hasEditPermission) { return true; } return item.key !== 'permissonSetting'; }); const isModelItem = [ { label: '指标管理', key: 'metric', children: ( { if (!initState.current) { initState.current = true; onMenuChange?.('dimenstion'); } }} /> ), }, { label: '维度管理', key: 'dimenstion', children: , }, { label: '权限管理', key: 'permissonSetting', children: , }, ]; const getActiveKey = () => { const key = activeKey || defaultTabKey; const tabItems = !isModel ? tabItem : isModelItem; const tabItemsKeys = tabItems.map((item) => item.key); if (!tabItemsKeys.includes(key)) { return tabItemsKeys[0]; } return key; }; return (
{ onBackDomainBtnClick?.(); }} style={ selectModelName ? { cursor: 'pointer' } : { color: '#296df3', fontWeight: 'bold' } } > {selectDomainName} ), }, { type: 'separator', separator: selectModelName ? '/' : '', }, { title: selectModelName ? ( { history.push(`/model/${selectDomainId}/${selectModelId}/`); }} style={{ color: '#296df3' }} > {selectModelName} ) : undefined, }, ]} /> { const showType = e.target.value; setShowModelType(showType); }} > {showModelType} 列表 画布 ) : undefined, }} size="large" onChange={(menuKey: string) => { onMenuChange?.(menuKey); }} />
); }; export default DomainManagerTab;