diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/Market.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/Market.tsx index fcdc0993c..f76ab2569 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/Market.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/Market.tsx @@ -1,6 +1,7 @@ import type { ActionType, ProColumns } from '@ant-design/pro-components'; import { ProTable } from '@ant-design/pro-components'; import { message, Space, Popconfirm, Tag, Spin, Tooltip } from 'antd'; +import MetricAddClass from './components/MetricAddClass'; import React, { useRef, useState, useEffect } from 'react'; import type { Dispatch } from 'umi'; import { connect, history, useModel } from 'umi'; @@ -66,6 +67,8 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { const actionRef = useRef(); + const [addClassVisible, setAddClassVisible] = useState(false); + useEffect(() => { queryMetricList(filterParams); }, []); @@ -382,6 +385,9 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { case 'batchStop': queryBatchUpdateStatus(selectedRowKeys, StatusEnum.OFFLINE); break; + case 'batchAddClass': + setAddClassVisible(true); + break; default: break; } @@ -400,6 +406,7 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { queryBatchUpdateStatus(selectedRowKeys, StatusEnum.DELETED); }} disabledList={hasAllPermission ? [] : ['batchStart', 'batchStop', 'batchDelete']} + extenderList={['batchAddClass']} onMenuClick={onMenuClick} onDownloadDateRangeChange={(searchDateRange, pickerType) => { downloadMetricQuery(selectedRowKeys, searchDateRange, pickerType); @@ -509,6 +516,25 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { }} /> )} + {addClassVisible && ( + { + setAddClassVisible(false); + }} + onSuccess={() => { + setAddClassVisible(false); + queryMetricList(filterParams); + dispatch({ + type: 'domainManger/queryMetricList', + payload: { + domainId: selectDomainId, + }, + }); + }} + /> + )} ); }; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/components/MetricFilter.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/components/MetricFilter.tsx index 5b46641ce..26385eda9 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/components/MetricFilter.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/components/MetricFilter.tsx @@ -1,4 +1,4 @@ -import { Form, Input, Space, Row, Col, Switch } from 'antd'; +import { Form, Input, Space, Row, Col, Switch, Flex, Tag } from 'antd'; import StandardFormRow from '@/components/StandardFormRow'; import TagSelect from '@/components/TagSelect'; import React, { ReactNode, useEffect } from 'react'; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/View/components/ViewTable.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/View/components/DataSetTable.tsx similarity index 92% rename from webapp/packages/supersonic-fe/src/pages/SemanticModel/View/components/ViewTable.tsx rename to webapp/packages/supersonic-fe/src/pages/SemanticModel/View/components/DataSetTable.tsx index cd254c903..2f7ea915a 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/View/components/ViewTable.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/View/components/DataSetTable.tsx @@ -6,7 +6,7 @@ import { StatusEnum } from '../../enum'; import type { Dispatch } from 'umi'; import { connect } from 'umi'; import type { StateType } from '../../model'; -import { deleteView, updateView, getViewList } from '../../service'; +import { deleteView, updateView, getViewList, getAllModelByDomainId } from '../../service'; import ViewCreateFormModal from './ViewCreateFormModal'; import moment from 'moment'; import styles from '../../components/style.less'; @@ -21,13 +21,14 @@ type Props = { domainManger: StateType; }; -const ViewTable: React.FC = ({ disabledEdit = false, modelList, domainManger }) => { +const DataSetTable: React.FC = ({ disabledEdit = false, domainManger }) => { const { selectDomainId } = domainManger; const [viewItem, setViewItem] = useState(); const [saveLoading, setSaveLoading] = useState(false); const [loading, setLoading] = useState(false); const [createDataSourceModalOpen, setCreateDataSourceModalOpen] = useState(false); const [searchModalOpen, setSearchModalOpen] = useState(false); + const [modelList, setModelList] = useState([]); const actionRef = useRef(); const updateViewStatus = async (modelData: ISemantic.IViewItem) => { @@ -47,6 +48,7 @@ const ViewTable: React.FC = ({ disabledEdit = false, modelList, domainMan useEffect(() => { queryViewList(); + queryDomainAllModel(); }, []); const queryViewList = async () => { @@ -59,6 +61,16 @@ const ViewTable: React.FC = ({ disabledEdit = false, modelList, domainMan message.error(msg); } }; + + const queryDomainAllModel = async () => { + const { code, data, msg } = await getAllModelByDomainId(selectDomainId); + if (code === 200) { + setModelList(data); + } else { + message.error(msg); + } + }; + const columnsConfig = ColumnsConfig(); const columns: ProColumns[] = [ @@ -230,7 +242,6 @@ const ViewTable: React.FC = ({ disabledEdit = false, modelList, domainMan { queryViewList(); setSearchModalOpen(false); @@ -245,4 +256,4 @@ const ViewTable: React.FC = ({ disabledEdit = false, modelList, domainMan }; export default connect(({ domainManger }: { domainManger: StateType }) => ({ domainManger, -}))(ViewTable); +}))(DataSetTable); diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/View/components/ViewCreateFormModal.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/View/components/ViewCreateFormModal.tsx index 9d2970cde..9cd7c781d 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/View/components/ViewCreateFormModal.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/View/components/ViewCreateFormModal.tsx @@ -5,7 +5,6 @@ import { message } from 'antd'; import { formLayout } from '@/components/FormHelper/utils'; import { createView, updateView, getDimensionList, queryMetric, getTagList } from '../../service'; import { ISemantic } from '../../data'; -import { isString } from 'lodash'; import FormItemTitle from '@/components/FormHelper/FormItemTitle'; import SelectTMEPerson from '@/components/SelectTMEPerson'; import ViewModelConfigTransfer from './ViewModelConfigTransfer'; @@ -81,21 +80,6 @@ const ViewCreateFormModal: React.FC = ({ } }; - // const queryTagList = async (modelId: number) => { - // const { code, data, msg } = await getTagList({ - // modelIds: [modelId], - // pageSize: 9999, - // }); - - // const { list } = data || {}; - // if (code === 200) { - // setTagList(list); - // } else { - // message.error(msg); - // setTagList([]); - // } - // }; - const handleConfirm = async () => { const fieldsValue = await form.validateFields(); const viewModelConfigsMap = configTableRef?.current.getViewModelConfigs() || {}; @@ -204,7 +188,8 @@ const ViewCreateFormModal: React.FC = ({ 切换模型: + + +