diff --git a/webapp/packages/supersonic-fe/config/routes.ts b/webapp/packages/supersonic-fe/config/routes.ts index 1f11a8192..19b37b1f0 100644 --- a/webapp/packages/supersonic-fe/config/routes.ts +++ b/webapp/packages/supersonic-fe/config/routes.ts @@ -40,14 +40,41 @@ const ROUTES = [ component: './Agent', envEnableList: [ENV_KEY.CHAT], }, - { - path: '/semanticModel/model/:domainId?/:modelId?/:menuKey?', - component: './SemanticModel/DomainManager', + { + 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', + name: 'model', + envEnableList: [ENV_KEY.SEMANTIC], + }, + { + path: '/database', + name: 'database', + component: './SemanticModel/components/Database/DatabaseTable', + envEnableList: [ENV_KEY.SEMANTIC], + }, + ], }, { - path: '/Metric', + path: '/database', + name: 'database', + hideInMenu: true, + component: './SemanticModel/components/Database/DatabaseTable', + envEnableList: [ENV_KEY.SEMANTIC], + }, + + { + path: '/metric', name: 'metric', component: './SemanticModel/Metric', envEnableList: [ENV_KEY.SEMANTIC], @@ -61,10 +88,10 @@ const ROUTES = [ }, { path: '/', - redirect: APP_TARGET === 'inner' ? '/semanticModel/model/' : '/chat', + redirect: APP_TARGET === 'inner' ? '/model' : '/chat', envRedirect: { [ENV_KEY.CHAT]: '/chat', - [ENV_KEY.SEMANTIC]: '/semanticModel/model', + [ENV_KEY.SEMANTIC]: '/model', }, }, { diff --git a/webapp/packages/supersonic-fe/src/global.less b/webapp/packages/supersonic-fe/src/global.less index e55f6b2b9..6b09c9430 100644 --- a/webapp/packages/supersonic-fe/src/global.less +++ b/webapp/packages/supersonic-fe/src/global.less @@ -141,7 +141,58 @@ ol { backdrop-filter: blur(10px) !important; } +.ant-menu.ant-menu-dark { + color: #fff; +} +.ant-menu-submenu-selected { + background-color: #296DF3 !important; +} + +.ant-menu.ant-menu-dark .ant-menu-sub { + background-color: #fff; + .ant-menu-item-selected { + background-color: #296DF3; + .ant-pro-menu-item-title { + color: #fff; + } + } + .ant-menu-item { + &:hover { + background-color: #e3e3e3; + + .ant-menu-item-selected { + background-color: #e3e3e3; + .ant-pro-menu-item-title { + color: #181a1a !important; + } + } + .ant-pro-menu-item-title { + color: #181a1a !important; + } + } + & > span > a { + color: #181a1a; + &:hover { + color: #181a1a; + } + } + } +} +.ant-menu-item:active { + background: inherit +} +// .ant-menu-dark .ant-menu-item > span > a { +// color: #181a1a; +// &:hover { +// color: #fff; +// } +// } +// .ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-selected { +// // color: #fff; +// background-color: #1b4aef; + +// } .customizeHeader { background-color: rgba(0, 0, 0, 0.2); diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/ChatSetting/ChatSetting.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/ChatSetting/ChatSetting.tsx index 1f656b49f..3cd46ffa0 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/ChatSetting/ChatSetting.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/ChatSetting/ChatSetting.tsx @@ -11,7 +11,7 @@ type Props = { const ChatSetting: React.FC = () => { return ( <> - + ); diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/ChatSetting/ChatSettingSection.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/ChatSetting/ChatSettingSection.tsx new file mode 100644 index 000000000..cf54f5e0e --- /dev/null +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/ChatSetting/ChatSettingSection.tsx @@ -0,0 +1,57 @@ +// import { Tabs } from 'antd'; +import React from 'react'; +import { connect } from 'umi'; + +// import styles from '../components/style.less'; +import type { StateType } from '../model'; +import ProCard from '@ant-design/pro-card'; +import EntitySection from '../components/Entity/EntitySection'; +// import RecommendedQuestionsSection from '../components/Entity/RecommendedQuestionsSection'; +import { ChatConfigType } from '../enum'; +import type { Dispatch } from 'umi'; + +type Props = { + domainManger: StateType; + dispatch: Dispatch; +}; + +const ChatSettingSection: React.FC = () => { + // const isModelItem = [ + // { + // label: '指标模式', + // key: 'metric', + // children: , + // }, + // { + // label: '实体模式', + // key: 'dimenstion', + // children: , + // }, + // { + // label: '推荐问题', + // key: 'recommendedQuestions', + // children: , + // }, + // ]; + + return ( +
+ {/* */} + + + + + + +
+ ); +}; + +export default connect(({ domainManger }: { domainManger: StateType }) => ({ + domainManger, +}))(ChatSettingSection); diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceBasicForm.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceBasicForm.tsx index a887b473e..08d6a53d6 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceBasicForm.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Datasource/components/DataSourceBasicForm.tsx @@ -2,30 +2,27 @@ import React, { useEffect, useState } from 'react'; import { Form, Input, Spin, Select, message } from 'antd'; import type { FormInstance } from 'antd/lib/form'; import { getDbNames, getTables } from '../../service'; +import { ISemantic } from '../../data'; const FormItem = Form.Item; const { TextArea } = Input; type Props = { isEdit?: boolean; - dataBaseConfig: any; + databaseConfigList: ISemantic.IDatabaseItemList; form: FormInstance; - tableLoading?: boolean; mode?: 'normal' | 'fast'; }; -const DataSourceBasicForm: React.FC = ({ - isEdit, - dataBaseConfig, - tableLoading = false, - mode = 'normal', -}) => { +const DataSourceBasicForm: React.FC = ({ isEdit, databaseConfigList, mode = 'normal' }) => { + const [currentDbLinkConfigId, setCurrentDbLinkConfigId] = useState(); const [dbNameList, setDbNameList] = useState([]); const [tableNameList, setTableNameList] = useState([]); - const [currentDbName, setCurrentDbName] = useState(''); - const [currentTableName, setCurrentTableName] = useState(''); + const [loading, setLoading] = useState(false); const queryDbNameList = async (databaseId: number) => { + setLoading(true); const { code, data, msg } = await getDbNames(databaseId); + setLoading(false); if (code === 200) { const list = data?.resultList || []; setDbNameList(list); @@ -34,7 +31,12 @@ const DataSourceBasicForm: React.FC = ({ } }; const queryTableNameList = async (databaseName: string) => { - const { code, data, msg } = await getTables(dataBaseConfig.id, databaseName); + if (!currentDbLinkConfigId) { + return; + } + setLoading(true); + const { code, data, msg } = await getTables(currentDbLinkConfigId, databaseName); + setLoading(false); if (code === 200) { const list = data?.resultList || []; setTableNameList(list); @@ -42,16 +44,32 @@ const DataSourceBasicForm: React.FC = ({ message.error(msg); } }; - useEffect(() => { - if (dataBaseConfig?.id) { - queryDbNameList(dataBaseConfig.id); - } - }, [dataBaseConfig]); return ( - + {mode === 'fast' && ( <> + + + = ({ > { - // queryTableNameList(tableName); - setCurrentTableName(tableName); - }} - > + + + )} = ( - - + + + + + +