diff --git a/webapp/packages/supersonic-fe/config/routes.ts b/webapp/packages/supersonic-fe/config/routes.ts index 5d3cce18d..c9bb6a33e 100644 --- a/webapp/packages/supersonic-fe/config/routes.ts +++ b/webapp/packages/supersonic-fe/config/routes.ts @@ -34,17 +34,11 @@ const ROUTES = [ component: './Agent', envEnableList: [ENV_KEY.CHAT], }, - { + { path: '/model', name: 'semanticModel', - component: './SemanticModel/DomainManager', envEnableList: [ENV_KEY.SEMANTIC], routes: [ - { - path: '/model', - redirect: '/model/:domainId?/:modelId?/:menuKey?', - }, - { path: '/model/:domainId?/:modelId?/:menuKey?', component: './SemanticModel/DomainManager', @@ -59,6 +53,7 @@ const ROUTES = [ }, ], }, + { path: '/database', name: 'database', @@ -66,7 +61,6 @@ const ROUTES = [ component: './SemanticModel/components/Database/DatabaseTable', envEnableList: [ENV_KEY.SEMANTIC], }, - { path: '/metric', name: 'metric', diff --git a/webapp/packages/supersonic-fe/src/components/RightContent/index.tsx b/webapp/packages/supersonic-fe/src/components/RightContent/index.tsx index b56772ced..96427ab1f 100644 --- a/webapp/packages/supersonic-fe/src/components/RightContent/index.tsx +++ b/webapp/packages/supersonic-fe/src/components/RightContent/index.tsx @@ -18,7 +18,7 @@ const GlobalHeaderRight: React.FC = () => { const { navTheme, layout } = initialState.settings; let className = styles.right; - if ((navTheme === 'dark' && layout === 'top') || layout === 'mix') { + if (layout === 'top' || layout === 'mix') { className = cx(styles.right, styles.dark); } 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 828264679..2edccc944 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 @@ -4,19 +4,21 @@ import DataSourceBasicForm from './DataSourceBasicForm'; import FieldForm from './DataSourceFieldForm'; import { formLayout } from '@/components/FormHelper/utils'; import { EnumDataSourceType } from '../constants'; -import type { DataInstanceItem } from '../data'; +// import type { DataInstanceItem } from '../data'; import styles from '../style.less'; import { createDatasource, updateDatasource, getColumns } from '../../service'; import type { Dispatch } from 'umi'; import type { StateType } from '../../model'; import { connect } from 'umi'; +import { IDataSource } from '../../data'; export type CreateFormProps = { domainManger: StateType; dispatch: Dispatch; createModalVisible: boolean; sql?: string; - dataSourceItem: DataInstanceItem | any; + databaseItem?: any; + dataSourceItem: IDataSource.IDataSourceItem; onCancel?: () => void; onSubmit?: (dataSourceInfo: any) => void; scriptColumns?: any[] | undefined; @@ -39,6 +41,7 @@ const DataSourceCreateForm: React.FC = ({ sql = '', onSubmit, dataSourceItem, + databaseItem, basicInfoFormMode, }) => { const isEdit = !!dataSourceItem?.id; @@ -160,10 +163,10 @@ const DataSourceCreateForm: React.FC = ({ const queryParams = { ...submitForm, sqlQuery: sql, - databaseId: dataSourceItem?.databaseId || formDatabaseId, + databaseId: dataSourceItem?.databaseId || formDatabaseId || databaseItem?.key, queryType: basicInfoFormMode === 'fast' ? 'table_query' : 'sql_query', tableQuery: dbName && tableName ? `${dbName}.${tableName}` : '', - modelId, + modelId: isEdit ? dataSourceItem.modelId : modelId, }; const queryDatasource = isEdit ? updateDatasource : createDatasource; const { code, msg, data } = await queryDatasource(queryParams); @@ -303,7 +306,7 @@ const DataSourceCreateForm: React.FC = ({ return ( <>
- ; +
void; sql?: string; onSubmitSuccess?: (dataSourceInfo: any) => void; - onJdbcSourceChange?: (jdbcId: number) => void; }; type ResultTableItem = Record; @@ -60,7 +59,6 @@ const SqlDetail: React.FC = ({ onSubmitSuccess, sql = '', onUpdateSql, - onJdbcSourceChange, }) => { const { databaseConfigList, selectModelId: modelId } = domainManger; const [resultTable, setResultTable] = useState([]); @@ -101,20 +99,6 @@ const SqlDetail: React.FC = ({ const [scriptColumns, setScriptColumns] = useState([]); - // useEffect(() => { - // const list = databaseConfigList.map((item: ISemantic.IDatabaseItem) => { - // return { - // label: item.name, - // key: item.id, - // disabled: !item.hasUsePermission, - // }; - // }); - // setJdbcSourceItems(list); - // const config = list[0]; - // setCurrentJdbcSourceItem(config); - // onJdbcSourceChange?.(config?.key && Number(config?.key)); - // }, [databaseConfigList]); - useEffect(() => { const list = databaseConfigList.map((item: ISemantic.IDatabaseItem) => { return { @@ -133,9 +117,12 @@ const SqlDetail: React.FC = ({ } } setCurrentJdbcSourceItem(targetDataBase); - // onJdbcSourceChange?.(targetDataBase?.key && Number(targetDataBase?.key)); }, [dataSourceItem, databaseConfigList]); + useEffect(() => { + setRunState(undefined); + }, [currentJdbcSourceItem]); + function creatCalcItem(key: string, data: string) { const line = document.createElement('div'); // 需要每条数据一行,这样避免数据换行的时候获得的宽度不准确 const child = document.createElement('span'); @@ -408,9 +395,7 @@ const SqlDetail: React.FC = ({ return item.key === Number(value); })[0]; if (target) { - // setJdbcSourceName(target.label); setCurrentJdbcSourceItem(target); - onJdbcSourceChange?.(Number(value)); } }, }} @@ -520,6 +505,7 @@ const SqlDetail: React.FC = ({ {dataSourceModalVisible && ( { diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/SqlSide.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/SqlSide.tsx index 333953667..64dcd6653 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/SqlSide.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/SqlSide.tsx @@ -43,8 +43,6 @@ const SqlSide: React.FC = ({ initialValues, onSubmitSuccess }) => { const tableRef: TableRef = useRef(); const panesRef = useRef(defaultPanes); - const [dataSourceItem, setDataSourceItem] = useState(initialValues || {}); - const updatePane = (list: Panes[]) => { setPanes(list); panesRef.current = list; @@ -96,16 +94,10 @@ const SqlSide: React.FC = ({ initialValues, onSubmitSuccess }) => { > { updateTabSql(sql, pane.key); }} - onJdbcSourceChange={(databaseId) => { - setDataSourceItem({ - ...dataSourceItem, - databaseId, - }); - }} sql={pane.sql} /> diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticFlows/components/XflowJsonSchemaFormDrawerForm.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticFlows/components/XflowJsonSchemaFormDrawerForm.tsx index 7ac421e2e..68b3e7311 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticFlows/components/XflowJsonSchemaFormDrawerForm.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticFlows/components/XflowJsonSchemaFormDrawerForm.tsx @@ -101,7 +101,6 @@ const XflowJsonSchemaFormDrawerForm: React.FC = (props) => { {dataSourceModalVisible && ( { setDataSourceModalVisible(false); diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticGraph/components/NodeInfoDrawer.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticGraph/components/NodeInfoDrawer.tsx index fb8eadd62..9be2cb14e 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticGraph/components/NodeInfoDrawer.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticGraph/components/NodeInfoDrawer.tsx @@ -113,15 +113,15 @@ const NodeInfoDrawer: React.FC = ({ { title: '应用信息', children: [ - { - label: '全路径', - value: fullPath, - content: ( - - {fullPath} - - ), - }, + // { + // label: '全路径', + // value: fullPath, + // content: ( + // + // {fullPath} + // + // ), + // }, { label: '敏感度', value: SENSITIVE_LEVEL_ENUM[sensitiveLevel], diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/ClassDataSourceTypeModal.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/ClassDataSourceTypeModal.tsx index 35c68ba7a..531732971 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/ClassDataSourceTypeModal.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/ClassDataSourceTypeModal.tsx @@ -124,7 +124,6 @@ const ClassDataSourceTypeModal: React.FC = ({ { setDataSourceModalVisible(false); diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DimensionInfoModal.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DimensionInfoModal.tsx index 4af8f5813..c50eb4ae6 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DimensionInfoModal.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DimensionInfoModal.tsx @@ -57,7 +57,7 @@ const DimensionInfoModal: React.FC = ({ const saveDimension = async (fieldsValue: any, isSilenceSubmit = false) => { const queryParams = { - modelId, + modelId: isEdit ? dimensionItem.modelId : modelId, type: 'categorical', ...fieldsValue, }; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx index 71e4401be..adf3b17ba 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx @@ -115,7 +115,7 @@ const DomainListTree: FC = ({ }; const titleRender = (node: any) => { - const { id, name, path } = node as any; + const { id, name, path, hasEditPermission } = node as any; return (
= ({ > {name} - {createDomainBtnVisible && ( + {createDomainBtnVisible && hasEditPermission && ( {Array.isArray(path) && path.length < 2 && ( = ({ isModel, activeKey, modelList, + domainManger, handleModelChange, onBackDomainBtnClick, onMenuChange, }) => { const defaultTabKey = 'xflow'; - + const { selectDomainId, domainList } = domainManger; const tabItem = [ { label: '模型', @@ -62,7 +63,13 @@ const DomainManagerTab: React.FC = ({ key: 'permissonSetting', children: , }, - ]; + ].filter((item) => { + const target = domainList.find((domain) => domain.id === selectDomainId); + if (target?.hasEditPermission) { + return true; + } + return item.key !== 'permissonSetting'; + }); const isModelItem = [ { diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DefaultSettingForm.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DefaultSettingForm.tsx index c8b1cedc8..a2ab05813 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DefaultSettingForm.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DefaultSettingForm.tsx @@ -28,11 +28,10 @@ const FormItem = Form.Item; const Option = Select.Option; const DefaultSettingForm: ForwardRefRenderFunction = ( - { metricList, dimensionList, domainId, entityData, chatConfigKey, chatConfigType, onSubmit }, + { metricList, dimensionList, entityData, chatConfigKey, chatConfigType, onSubmit }, ref, ) => { const [form] = Form.useForm(); - const [metricListOptions, setMetricListOptions] = useState([]); const [dataItemListOptions, setDataItemListOptions] = useState([]); const formatEntityData = formatRichEntityDataListToIds(entityData); const getFormValidateFields = async () => { @@ -74,16 +73,6 @@ const DefaultSettingForm: ForwardRefRenderFunction = ( }); }; - useEffect(() => { - const metricOption = metricList.map((item: any) => { - return { - label: item.name, - value: item.id, - }; - }); - setMetricListOptions(metricOption); - }, [metricList]); - useEffect(() => { if (Array.isArray(dimensionList) && Array.isArray(metricList)) { const dimensionEnum = dimensionList.map((item: ISemantic.IDimensionItem) => { @@ -141,9 +130,10 @@ const DefaultSettingForm: ForwardRefRenderFunction = ( ...formatEntityData, chatDefaultConfig: { ...values, ...dimensionConfig }, }; + const { modelId } = entityData; const { code, msg, data } = await saveDomainExtendQuery({ [chatConfigKey]: params, - // domainId, + modelId, id, }); if (code === 200) { diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DimensionAndMetricVisibleModal.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DimensionAndMetricVisibleModal.tsx index 996c3518d..235d1ee11 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DimensionAndMetricVisibleModal.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DimensionAndMetricVisibleModal.tsx @@ -81,7 +81,7 @@ const DimensionAndMetricVisibleModal: React.FC = ({ if (globalKnowledgeConfigFormFields) { globalKnowledgeConfig = globalKnowledgeConfigFormFields; } - const { id } = entityData; + const { id, modelId } = entityData; let saveDomainExtendQuery = addDomainExtend; if (id) { saveDomainExtendQuery = editDomainExtend; @@ -126,8 +126,8 @@ const DimensionAndMetricVisibleModal: React.FC = ({ const { code, msg } = await saveDomainExtendQuery({ [chatConfigKey]: params, - // domainId, id, + modelId, }); if (code === 200) { if (!isSilenceSubmit) { diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/FormLabelRequire.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/FormLabelRequire.tsx index b89286e2d..8a872a8ed 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/FormLabelRequire.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/FormLabelRequire.tsx @@ -8,7 +8,7 @@ type Props = { const FormLabelRequire: React.FC = ({ title, labelStyles = {} }) => { return ( <> -
+