diff --git a/webapp/packages/supersonic-fe/config/routes.ts b/webapp/packages/supersonic-fe/config/routes.ts index e867876ff..a052d34a5 100644 --- a/webapp/packages/supersonic-fe/config/routes.ts +++ b/webapp/packages/supersonic-fe/config/routes.ts @@ -40,7 +40,12 @@ const ROUTES = [ name: 'semanticModel', envEnableList: [ENV_KEY.SEMANTIC], }, - + { + path: '/plugin', + name: 'plugin', + component: './ChatPlugin', + envEnableList: [ENV_KEY.CHAT], + }, { path: '/metric', name: 'metric', @@ -93,12 +98,6 @@ const ROUTES = [ ], }, - { - path: '/plugin', - name: 'plugin', - component: './ChatPlugin', - envEnableList: [ENV_KEY.CHAT], - }, { path: '/login', name: 'login', diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceCreateForm.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceCreateForm.tsx index f1a725dff..9cfc81a24 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceCreateForm.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceCreateForm.tsx @@ -73,7 +73,7 @@ const DataSourceCreateForm: React.FC = ({ const [tagObjectIdState, setTagObjectIdState] = useState(modelItem?.tagObjectId); const formValRef = useRef(initFormVal as any); const [form] = Form.useForm(); - const { databaseConfigList, selectModelId: modelId, selectDomainId } = domainManger; + const { databaseConfigList, selectModelId: modelId, selectDomainId, domainData } = domainManger; const updateFormVal = (val: any) => { formValRef.current = val; }; @@ -106,7 +106,9 @@ const DataSourceCreateForm: React.FC = ({ const backward = () => setCurrentStep(currentStep - 1); const queryTagObjectList = async () => { - const { code, msg, data } = await getTagObjectList({ domainId: selectDomainId }); + const { code, msg, data } = await getTagObjectList({ + domainId: domainData?.parentId || domainData?.id, + }); if (code === 200) { setTagObjectList(data); diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceFieldForm.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceFieldForm.tsx index 599aca339..16beae74f 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceFieldForm.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceFieldForm.tsx @@ -136,7 +136,6 @@ const DataSourceFieldForm: React.FC = ({ width: 185, render: (_: any, record: FieldItem) => { const { type } = record; - console.log(record, 3333); if (type === EnumDataSourceType.PRIMARY) { return ( diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Insights/Market.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Insights/Market.tsx index 95176013e..f52b38bc6 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Insights/Market.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Insights/Market.tsx @@ -6,7 +6,7 @@ import type { Dispatch } from 'umi'; import { connect, useModel } from 'umi'; import type { StateType } from '../model'; import { SENSITIVE_LEVEL_ENUM } from '../constant'; -import { getTagList, deleteTag, batchUpdateTagStatus, getTagObjectList } from '../service'; +import { getTagList, deleteTag, batchDeleteTag, getTagObjectList } from '../service'; import TagFilter from './components/TagFilter'; import TagInfoCreateForm from './components/TagInfoCreateForm'; import { StatusEnum } from '../enum'; @@ -46,9 +46,7 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { const [dataSource, setDataSource] = useState([]); const [tagItem, setTagItem] = useState(); const [selectedRowKeys, setSelectedRowKeys] = useState([]); - const [filterParams, setFilterParams] = useState>({ - showType: localStorage.getItem('metricMarketShowType') === '1' ? true : false, - }); + const [filterParams, setFilterParams] = useState>({}); const [downloadLoading, setDownloadLoading] = useState(false); @@ -66,23 +64,36 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { const { code, msg, data } = await getTagObjectList({}); if (code === 200) { setTagObjectList(data); - const target = data[0]; - if (target) { - queryTagList({ ...filterParams, tagObjectId: target.id }); - } + // const target = data[0]; + // if (target) { + // queryTagList({ ...filterParams, tagObjectId: target.id }); + // } return; } message.error(msg); }; - const queryBatchUpdateStatus = async (ids: React.Key[], status: StatusEnum) => { + // const getTagList = (ids: React.Key[])=>{ + // const filterItem = dataSource.filter((item)=>{ + // return ids.includes(item.id); + // }); + // const dimension = { + + // } + // filterItem.forEach((item)=>{ + + // }) + // } + + const queryBatchDeleteTag = async (ids: React.Key[]) => { if (Array.isArray(ids) && ids.length === 0) { return; } - const { code, msg } = await batchUpdateTagStatus({ - ids, - status, - }); + const { code, msg } = await batchDeleteTag([ + { + ids, + }, + ]); if (code === 200) { queryTagList(filterParams); return; @@ -94,6 +105,11 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { if (!disabledLoading) { setLoading(true); } + if (!params.tagObjectId) { + setLoading(false); + setDataSource([]); + return; + } const { code, data, msg } = await getTagList({ ...pagination, ...params, @@ -191,12 +207,12 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { // }, { dataIndex: 'domainName', - title: '所属主题域', + title: '主题域', search: false, }, { dataIndex: 'tagObjectName', - title: '所属对象', + title: '标签对象', search: false, }, { @@ -221,14 +237,14 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { if (record.hasAdminRes) { return ( - { handleMetricEdit(record); }} > 编辑 - + */} = ({ domainManger, dispatch }) => { // }), }; - const onMenuClick = (key: string) => { - switch (key) { - case 'batchStart': - queryBatchUpdateStatus(selectedRowKeys, StatusEnum.ONLINE); - break; - case 'batchStop': - queryBatchUpdateStatus(selectedRowKeys, StatusEnum.OFFLINE); - break; - default: - break; - } - }; + // const onMenuClick = (key: string) => { + // switch (key) { + // case 'batchStart': + // queryBatchUpdateStatus(selectedRowKeys, StatusEnum.ONLINE); + // break; + // case 'batchStop': + // queryBatchUpdateStatus(selectedRowKeys, StatusEnum.OFFLINE); + // break; + // default: + // break; + // } + // }; return ( <> @@ -322,6 +338,13 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { { + setFilterParams({ + ...filterParams, + ...values, + }); + queryTagList(values); + }} onFiltersChange={(_, values) => { if (_.showType !== undefined) { setLoading(true); @@ -346,22 +369,22 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { return false; }} sticky={{ offsetHeader: 0 }} - // rowSelection={{ - // type: 'checkbox', - // ...rowSelection, - // }} - // toolBarRender={() => [ - // { - // queryBatchUpdateStatus(selectedRowKeys, StatusEnum.DELETED); - // }} - // hiddenList={['batchDownload', 'batchStart', 'batchStop']} - // disabledList={hasAllPermission ? [] : ['batchStart', 'batchDelete']} - // onMenuClick={onMenuClick} - // />, - // ]} + rowSelection={{ + type: 'checkbox', + ...rowSelection, + }} + toolBarRender={() => [ + { + queryBatchDeleteTag(selectedRowKeys); + }} + hiddenList={['batchDownload', 'batchStart', 'batchStop']} + disabledList={hasAllPermission ? [] : ['batchStart', 'batchDelete']} + // onMenuClick={onMenuClick} + />, + ]} loading={loading} onChange={(data: any) => { const { current, pageSize, total } = data; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Insights/components/TagFilter.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Insights/components/TagFilter.tsx index fd06e8f23..7a411948d 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Insights/components/TagFilter.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Insights/components/TagFilter.tsx @@ -1,7 +1,7 @@ import { Form, Input, Space, Row, Col, Switch, Select } from 'antd'; import StandardFormRow from '@/components/StandardFormRow'; import TagSelect from '@/components/TagSelect'; -import React, { useEffect } from 'react'; +import React, { useEffect, useState, useRef } from 'react'; import { SENSITIVE_LEVEL_OPTIONS } from '../../constant'; import { SearchOutlined } from '@ant-design/icons'; import DomainTreeSelect from '../../components/DomainTreeSelect'; @@ -13,10 +13,16 @@ const FormItem = Form.Item; type Props = { tagObjectList: ISemantic.ITagObjectItem[]; initFilterValues?: any; + onFilterInit?: (values: any) => void; onFiltersChange: (_: any, values: any) => void; }; -const TagFilter: React.FC = ({ tagObjectList, initFilterValues = {}, onFiltersChange }) => { +const TagFilter: React.FC = ({ + tagObjectList, + initFilterValues = {}, + onFilterInit, + onFiltersChange, +}) => { const [form] = Form.useForm(); useEffect(() => { @@ -25,16 +31,45 @@ const TagFilter: React.FC = ({ tagObjectList, initFilterValues = {}, onFi }); }, [form]); + const [currentDomainId, setCurrentDomainId] = useState(); + + const [tagObjectOptions, setTagObjectOptions] = useState([]); + + const initState = useRef(false); + useEffect(() => { - const target = tagObjectList?.[0]; - if (!target) { - return; + const options = tagObjectList + .filter((item) => { + if (currentDomainId) { + return item.domainId === currentDomainId; + } else { + return true; + } + }) + .map((item: ISemantic.ITagObjectItem) => { + return { + label: item.name, + value: item.id, + }; + }); + setTagObjectOptions(options); + const target = options[0]; + form.setFieldValue('tagObjectId', target?.value); + + if (currentDomainId && target?.value && !initState.current) { + initState.current = true; + const data = form.getFieldsValue(); + onFilterInit?.({ ...data, tagObjectId: target?.value }); } - form.setFieldValue('tagObjectId', target.id); - }, [tagObjectList]); + }, [currentDomainId, tagObjectList]); + + // useEffect(() => { + // if (currentDomainId) { + // onFilterInit?.(); + // } + // }, [currentDomainId]) const handleValuesChange = (value: any, values: any) => { - localStorage.setItem('metricMarketShowType', !!values.showType ? '1' : '0'); onFiltersChange(value, values); }; @@ -73,6 +108,22 @@ const TagFilter: React.FC = ({ tagObjectList, initFilterValues = {}, onFi if (value.key) { return; } + if (value.domainId) { + setCurrentDomainId(value.domainId); + const options = tagObjectList.filter((item) => { + if (value.domainId) { + return item.domainId === value.domainId; + } else { + return true; + } + }); + handleValuesChange(value, { + ...values, + tagObjectId: options[0]?.id, + }); + return; + } + handleValuesChange(value, values); }} > @@ -108,17 +159,23 @@ const TagFilter: React.FC = ({ tagObjectList, initFilterValues = {}, onFi - + + + { + setCurrentDomainId(value); + }} + /> + + +