From d7addf8113ff4e6e6fd30003509e26d4d8ebac08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=95=85=E6=99=9A?= Date: Wed, 10 Jul 2024 13:58:11 +0800 Subject: [PATCH 01/20] PullRequest: 467 fix/dev-4.3.1-table-roles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'fix/dev-4.3.1-table-roles of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.3.1 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/467 Signed-off-by: 晓康 * Fixes oceanbase/odc#2888 * Fixes oceanbase/odc#2888 * Fixes oceanbase/odc#2896 * Fixes oceanbase/odc#2897 * Fixes oceanbase/odc#2897 * Fixes oceanbase/odc#2899 * Fixes oceanbase/odc#2902 * Fixes oceanbase/odc#2898 * Fixes oceanbase/odc#2909 * Fixes oceanbase/odc#2910 * Fixes oceanbase/odc#2911 * Fixes oceanbase/odc#2929 * Fixes oceanbase/odc#2914 * Fixes oceanbase/odc#2814 --- src/component/CommonTable/index.tsx | 22 +++++++----- src/component/ExecuteSqlDetailModal/index.tsx | 2 +- .../CreateModal/index.tsx | 2 +- .../Task/component/TableSelecter/index.less | 13 +++++++ .../Task/component/TableSelecter/index.tsx | 36 +++++++++++-------- src/page/Project/Database/index.tsx | 32 +++++++++++++++++ .../User/ManageModal/Database/index.tsx | 8 ++++- .../ManageModal/Table/CreateAuth/index.tsx | 7 +++- .../ManageModal/Table/TaskApplyList/index.tsx | 27 +++++++------- .../ManageModal/Table/UserAuthList/index.tsx | 27 +++++++------- .../Project/User/ManageModal/Table/index.tsx | 7 ++-- src/page/Project/User/index.tsx | 6 +++- .../TreeNodeMenu/config/table.tsx | 18 +++++----- .../ResourceTree/TreeNodeMenu/index.tsx | 14 ++++++++ 14 files changed, 153 insertions(+), 68 deletions(-) diff --git a/src/component/CommonTable/index.tsx b/src/component/CommonTable/index.tsx index 00dafd370..c64893bbe 100644 --- a/src/component/CommonTable/index.tsx +++ b/src/component/CommonTable/index.tsx @@ -276,12 +276,11 @@ const CommonTable: ( } function handleRowKeyChange(selected: boolean, changeKeys: number[]) { - const keys = [...selectedRowKeys]; + let keys = [...selectedRowKeys]; if (selected) { keys.push(...changeKeys); } else { - const firstKeyIndex = keys.indexOf(changeKeys[0]); - keys.splice(firstKeyIndex, changeKeys.length); + keys = keys.filter((item) => !changeKeys.includes(item)); } setSelectedRowKeys(keys); } @@ -461,12 +460,17 @@ const CommonTable: ( } onChange={handleChange} rowSelection={ - rowSelecter && { - ...rowSelecter, - selectedRowKeys, - onSelect: handleRowKeySelect, - onSelectAll: handleSelectAll, - } + rowSelecter + ? { + ...tableProps?.rowSelection, + ...rowSelecter, + selectedRowKeys, + onSelect: handleRowKeySelect, + onSelectAll: handleSelectAll, + } + : { + ...tableProps?.rowSelection, + } } pagination={{ ...tableProps?.pagination, diff --git a/src/component/ExecuteSqlDetailModal/index.tsx b/src/component/ExecuteSqlDetailModal/index.tsx index 274f424b5..777f86a96 100644 --- a/src/component/ExecuteSqlDetailModal/index.tsx +++ b/src/component/ExecuteSqlDetailModal/index.tsx @@ -325,7 +325,7 @@ const ExecuteSQLDetailModal: React.FC = ({ modalStore }: IProps) => { id: 'src.component.ExecuteSqlDetailModal.A944EAD1', defaultMessage: '执行计划详情', }), - sql: modalStore?.executeSqlDetailData?.sql, + sql: modalStore?.executeSqlDetailData?.selectedSQL, session: modalStore?.executeSqlDetailData?.session, traceId: modalStore?.executeSqlDetailData?.traceId, getDetail: getPlanDetail, diff --git a/src/component/Task/ApplyTablePermission/CreateModal/index.tsx b/src/component/Task/ApplyTablePermission/CreateModal/index.tsx index bb11d2e73..a5fa3ba1a 100644 --- a/src/component/Task/ApplyTablePermission/CreateModal/index.tsx +++ b/src/component/Task/ApplyTablePermission/CreateModal/index.tsx @@ -198,7 +198,7 @@ const CreateModal: React.FC = (props) => { const projectId = Form.useWatch('projectId', form); const disabledDate = (current) => { - return current && current < moment().endOf('day'); + return current && current < moment().subtract(1, 'days').endOf('day'); }; useEffect(() => { diff --git a/src/component/Task/component/TableSelecter/index.less b/src/component/Task/component/TableSelecter/index.less index 9be617fae..991be2144 100644 --- a/src/component/Task/component/TableSelecter/index.less +++ b/src/component/Task/component/TableSelecter/index.less @@ -71,3 +71,16 @@ } } } + +.env { + position: absolute; + top: 0px; + right: 8px; + bottom: 0px; + align-items: center; + :global { + .ant-badge-status-dot { + border-radius: 0px; + } + } +} diff --git a/src/component/Task/component/TableSelecter/index.tsx b/src/component/Task/component/TableSelecter/index.tsx index b07081a7e..9a8897361 100644 --- a/src/component/Task/component/TableSelecter/index.tsx +++ b/src/component/Task/component/TableSelecter/index.tsx @@ -23,7 +23,7 @@ import { IDatabase } from '@/d.ts/database'; import { TablePermissionType } from '@/d.ts/table'; import { ReactComponent as TableSvg } from '@/svgr/menuTable.svg'; import Icon, { DeleteOutlined } from '@ant-design/icons'; -import { Checkbox, Empty, Popconfirm, Space, Spin, Tree, Typography } from 'antd'; +import { Badge, Empty, Popconfirm, Space, Spin, Tree, Typography } from 'antd'; import { DataNode, EventDataNode, TreeProps } from 'antd/lib/tree'; import classnames from 'classnames'; import React, { @@ -36,6 +36,7 @@ import React, { } from 'react'; import { isNumber } from 'lodash'; import styles from './index.less'; +import { EnvColorMap } from '@/constant'; export type TableItem = { databaseId: number; tableName: string; tableId?: number }; @@ -133,14 +134,27 @@ export const flatTableByGroupedParams = ( }); return result; }; + +function envRender(environment) { + if (!environment) { + return null; + } + return ( + + ); +} + /** * 将原始的IDataBaseWithTable数据转成TreeData格式 * @param validTableList * @returns */ -const getTreeData = (validTableList: IDataBaseWithTable[]) => { +const getTreeData = (validTableList: IDataBaseWithTable[], isSourceTree = false) => { const allTreeData = validTableList?.map((database) => { - const { id, name, tableList, dataSource, hasGetTableList } = database; + const { id, name, tableList, dataSource, hasGetTableList, environment } = database; const children = tableList.map((tableItem) => ({ title: ( @@ -165,8 +179,9 @@ const getTreeData = (validTableList: IDataBaseWithTable[]) => { {dataSource?.name} - {hasGetTableList ? `(${tableList.length})` : ''} + {hasGetTableList && isSourceTree ? `(${tableList.length})` : ''} + {isSourceTree ? envRender(environment) : null} ), @@ -229,7 +244,7 @@ const TableSelecter: React.ForwardRefRenderFunction = */ const allTreeData = useMemo(() => { if (!sourceSearchValue?.length) { - return getTreeData(databaseWithTableList); + return getTreeData(databaseWithTableList, true); } const filtedDataSource = []; for (const datasource of databaseWithTableList) { @@ -246,7 +261,7 @@ const TableSelecter: React.ForwardRefRenderFunction = } } } - return getTreeData(filtedDataSource); + return getTreeData(filtedDataSource, true); }, [sourceSearchValue, databaseWithTableList]); /** @@ -458,21 +473,12 @@ const TableSelecter: React.ForwardRefRenderFunction = - - {formatMessage({ id: 'src.component.Task.component.TableSelecter.E836E630', defaultMessage: '选择表', })} - - ({selectedTreeDataCount}/{allTreeDataCount}) - } onSearch={setSourceSearchValue} diff --git a/src/page/Project/Database/index.tsx b/src/page/Project/Database/index.tsx index 351eeac20..6d4c2299c 100644 --- a/src/page/Project/Database/index.tsx +++ b/src/page/Project/Database/index.tsx @@ -50,6 +50,7 @@ import StatusName from './StatusName'; import ChangeOwnerModal from '@/page/Project/Database/ChangeOwnerModal'; import { ProjectRole } from '@/d.ts/project'; import MutipleAsyncTask from '@/component/Task/MutipleAsyncTask'; +import { databasePermissionTypeMap } from '@/page/Project/User/ManageModal/Database'; interface IProps { id: string; modalStore?: ModalStore; @@ -130,6 +131,15 @@ const Database: React.FC = ({ id, modalStore }) => { ); }; + + const getAuthString = (authList: DatabasePermissionType[]) => { + if (authList?.length === 0) return '无权限'; + return authList + ?.map((i) => databasePermissionTypeMap[i]?.text || '') + ?.filter(Boolean) + ?.join(','); + }; + const clearSelectedRowKeys = () => { setSelectedRowKeys([]); }; @@ -345,6 +355,14 @@ const Database: React.FC = ({ id, modalStore }) => { ellipsis: true, render: (collationName) => collationName || '-', }, + { + title: '权限', + dataIndex: 'authorizedPermissionTypes', + width: 130, + render(v) { + return getAuthString(v); + }, + }, { title: formatMessage({ id: 'odc.Project.Database.LastSynchronizationTime', @@ -378,6 +396,8 @@ const Database: React.FC = ({ id, modalStore }) => { const hasQueryAuth = record.authorizedPermissionTypes?.includes( DatabasePermissionType.QUERY, ); + const hasNoDBAuth = record.authorizedPermissionTypes?.length === 0; + const curRoles = project?.currentUserResourceRoles || []; const hasChangeOwnerAuth = curRoles.some((role) => [ProjectRole.OWNER, ProjectRole.DBA].includes(role), @@ -425,6 +445,18 @@ const Database: React.FC = ({ id, modalStore }) => { } return ( + {hasNoDBAuth ? ( + { + modalStore.changeApplyDatabasePermissionModal(true, { + databaseId: record?.id, + }); + }} + > + 库权限申请 + + ) : null} {config?.features?.task?.includes(TaskType.EXPORT) && setting.enableDBExport && ( = (props) => { }; const handleReload = () => { - tableRef.current?.reload(); + const param = { ...params, pagination: { ...params?.pagination, current: 1 } }; + setParams(param); + loadData(param); }; const handleReclaim = async (ids: number[]) => { diff --git a/src/page/Project/User/ManageModal/Table/CreateAuth/index.tsx b/src/page/Project/User/ManageModal/Table/CreateAuth/index.tsx index 222193996..c6708a363 100644 --- a/src/page/Project/User/ManageModal/Table/CreateAuth/index.tsx +++ b/src/page/Project/User/ManageModal/Table/CreateAuth/index.tsx @@ -28,6 +28,7 @@ import TableSelecter, { import { Button, Checkbox, DatePicker, Drawer, Form, Modal, Select, Space, message } from 'antd'; import React, { useState } from 'react'; import styles from './index.less'; +import moment from 'moment'; const CheckboxGroup = Checkbox.Group; @@ -75,6 +76,10 @@ const CreateModal: React.FC = (props) => { } }; + const disabledDate = (current) => { + return current && current < moment().subtract(1, 'days').endOf('day'); + }; + const handleSubmit = () => { form .validateFields() @@ -237,7 +242,7 @@ const CreateModal: React.FC = (props) => { }, ]} > - + ) ); diff --git a/src/page/Project/User/ManageModal/Table/TaskApplyList/index.tsx b/src/page/Project/User/ManageModal/Table/TaskApplyList/index.tsx index cec8fc6f0..a5d81553b 100644 --- a/src/page/Project/User/ManageModal/Table/TaskApplyList/index.tsx +++ b/src/page/Project/User/ManageModal/Table/TaskApplyList/index.tsx @@ -46,19 +46,20 @@ const getColumns = (params: { const { filters } = params.paramOptions ?? {}; return [ { - dataIndex: 'databaseName', + dataIndex: 'tableName', title: formatMessage({ - id: 'src.page.Project.User.ManageModal.Table.TaskApplyList.F9701758', - defaultMessage: '数据库', + id: 'src.page.Project.User.ManageModal.Table.TaskApplyList.8F13E12E', + defaultMessage: '表', }), + width: 140, ellipsis: true, filterDropdown: (props) => { return ( @@ -72,23 +73,21 @@ const getColumns = (params: { /> ), - filteredValue: filters?.databaseName || null, + filteredValue: filters?.tableName || null, filters: [], }, { - dataIndex: 'tableName', - title: formatMessage({ - id: 'src.page.Project.User.ManageModal.Table.TaskApplyList.8F13E12E', - defaultMessage: '表', - }), + dataIndex: 'databaseName', + title: '所属数据库', ellipsis: true, + width: 208, filterDropdown: (props) => { return ( @@ -102,7 +101,7 @@ const getColumns = (params: { /> ), - filteredValue: filters?.tableName || null, + filteredValue: filters?.databaseName || null, filters: [], }, { diff --git a/src/page/Project/User/ManageModal/Table/UserAuthList/index.tsx b/src/page/Project/User/ManageModal/Table/UserAuthList/index.tsx index d14276b48..45c99fd46 100644 --- a/src/page/Project/User/ManageModal/Table/UserAuthList/index.tsx +++ b/src/page/Project/User/ManageModal/Table/UserAuthList/index.tsx @@ -43,19 +43,20 @@ const getColumns = (params: { const { filters } = params.paramOptions ?? {}; return [ { - dataIndex: 'databaseName', + dataIndex: 'tableName', title: formatMessage({ - id: 'src.page.Project.User.ManageModal.Table.UserAuthList.9186B355', - defaultMessage: '数据库', + id: 'src.page.Project.User.ManageModal.Table.UserAuthList.012DC13E', + defaultMessage: '表', }), ellipsis: true, + width: 140, filterDropdown: (props) => { return ( @@ -69,23 +70,21 @@ const getColumns = (params: { /> ), - filteredValue: filters?.databaseName || null, + filteredValue: filters?.tableName || null, filters: [], }, { - dataIndex: 'tableName', - title: formatMessage({ - id: 'src.page.Project.User.ManageModal.Table.UserAuthList.012DC13E', - defaultMessage: '表', - }), + dataIndex: 'databaseName', + title: '所属数据库', + width: 208, ellipsis: true, filterDropdown: (props) => { return ( @@ -99,7 +98,7 @@ const getColumns = (params: { /> ), - filteredValue: filters?.tableName || null, + filteredValue: filters?.databaseName || null, filters: [], }, { diff --git a/src/page/Project/User/ManageModal/Table/index.tsx b/src/page/Project/User/ManageModal/Table/index.tsx index b9fe529a6..57ad2b644 100644 --- a/src/page/Project/User/ManageModal/Table/index.tsx +++ b/src/page/Project/User/ManageModal/Table/index.tsx @@ -81,7 +81,7 @@ const ManageModal: React.FC = (props) => { const loadData = useCallback( async (args?: ITableLoadOptions) => { const { filters, sorter, pagination, pageSize } = args ?? {}; - const { tableName, dataSourceName, ticketId, type, status } = filters ?? {}; + const { tableName, dataSourceName, ticketId, type, status, databaseName } = filters ?? {}; const { column, order } = sorter ?? {}; const { current = 1 } = pagination ?? {}; const params = { @@ -90,6 +90,7 @@ const ManageModal: React.FC = (props) => { userId, tableName, dataSourceName, + databaseName, ticketId, type, status, @@ -113,7 +114,9 @@ const ManageModal: React.FC = (props) => { }; const handleReload = () => { - tableRef.current?.reload(); + const param = { ...params, pagination: { ...params?.pagination, current: 1 } }; + setParams(param); + loadData(param); }; const handleReclaim = async (ids: number[]) => { diff --git a/src/page/Project/User/index.tsx b/src/page/Project/User/index.tsx index 57f9d36f4..71e7c702a 100644 --- a/src/page/Project/User/index.tsx +++ b/src/page/Project/User/index.tsx @@ -120,7 +120,11 @@ const User: React.FC = ({ id, userStore }) => { - ); } + return 库内搜索; }; if (database && !searchKey) { diff --git a/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/components/ObjectList.tsx b/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/components/ObjectList.tsx index e18d3734c..51c45dd6b 100644 --- a/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/components/ObjectList.tsx +++ b/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/components/ObjectList.tsx @@ -7,14 +7,14 @@ import { } from '../constant'; import { Tabs, Divider, Button, Empty, Tooltip, Spin } from 'antd'; import styles from '../index.less'; -import { DbObjectType } from '@/d.ts'; +import { DbObjectType, ConnectionMode } from '@/d.ts'; import { DbObjsIcon } from '@/constant'; import Icon from '@ant-design/icons'; import { useState } from 'react'; import { IDatabase, IDatabaseObject } from '@/d.ts/database'; import { getDataSourceStyleByConnectType } from '@/common/datasource'; import { ModalStore } from '@/store/modal'; - +import { openNewSQLPage } from '@/store/helper/page'; interface Iprops { database: IDatabase; objectlist: IDatabaseObject; @@ -24,6 +24,8 @@ interface Iprops { setActiveKey: React.Dispatch>; modalStore: ModalStore; loading: boolean; + selectProjectId: number; + currentDataSourceType: ConnectionMode; } const ObjectList = ({ @@ -35,10 +37,13 @@ const ObjectList = ({ setSearchKey, modalStore, loading, + selectProjectId, + currentDataSourceType, }: Iprops) => { const [activeDatabase, setActiveDatabase] = useState(); const ALL_TAB_MAX_LENGTH = 3; - const dbType = database?.dataSource?.dialectType || SEARCH_OBJECT_FROM_ALL_DATABASE; + const dbType = + currentDataSourceType || database?.dataSource?.dialectType || SEARCH_OBJECT_FROM_ALL_DATABASE; const getTyepBlock = () => { const typeList = objectTypeConfig[dbType]; const typeObjectTree = typeList?.map((i) => { @@ -145,6 +150,7 @@ const ObjectList = ({ ) : (
{typeObjectTree?.map((i) => { + const isDatabase = i.key === DbObjectType.database; if (i?.data?.length) { return (
@@ -172,12 +178,14 @@ const ObjectList = ({ return (
openTree(e, object)} + onClick={(e) => + isDatabase ? openSql(e, object) : openTree(e, object) + } onMouseEnter={() => setActiveDatabase(object)} onMouseLeave={() => setActiveDatabase(null)} >
- {i.key === DbObjectType.database ? ( + {isDatabase ? (
- {i.key === DbObjectType.database - ? selectDbBtn(object) - : permissionBtn(object, i.key)} + {isDatabase ? selectDbBtn(object) : permissionBtn(object, i.key)}
); } @@ -241,7 +247,6 @@ const ObjectList = ({ tableName: dbObj?.name, tableId: dbObj?.id, }; - // debugger modalStore.changeApplyTablePermissionModal(true, { ...params, }); @@ -335,6 +340,13 @@ const ObjectList = ({ modalStore?.databaseSearchsSetExpandedKeysFunction?.(databaseId); }; + const openSql = (e, db) => { + e.stopPropagation(); + modalStore?.databaseSearchsSetExpandedKeysFunction?.(db.id); + modalStore?.changeDatabaseSearchModalVisible(false); + db.id && openNewSQLPage(db.id, selectProjectId ? 'project' : 'datasource'); + }; + const renderObjectTypeTabs = (type) => { const currentObjectList = typeObjectTree?.find((i) => i.key === type); const isDatabasetab = currentObjectList.key === DbObjectType.database; @@ -357,7 +369,7 @@ const ObjectList = ({
{ - !isDatabasetab ? openTree(e, object) : null; + isDatabasetab ? openSql(e, object) : openTree(e, object); }} onMouseEnter={() => setActiveDatabase(object)} onMouseLeave={() => setActiveDatabase(null)} diff --git a/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/index.less b/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/index.less index 7b4ab34c4..ad34a1cae 100644 --- a/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/index.less +++ b/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/index.less @@ -111,6 +111,9 @@ .ant-tabs-tab { margin: 0 6px; } + .ant-tabs-nav-more { + padding: 10px 7px; + } } .objectlistBox { max-height: 366px; diff --git a/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/index.tsx b/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/index.tsx index cadf5756d..119b14231 100644 --- a/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/index.tsx +++ b/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/index.tsx @@ -23,8 +23,11 @@ const DatabaseSearchModal = ({ modalStore }: IProps) => { const [objectlist, setObjectlist] = useState(); const [activeKey, setActiveKey] = useState(SEARCH_OBJECT_FROM_ALL_DATABASE); const [loading, setLoading] = useState(false); - const { selectDatasourceId, selectProjectId, databaseList } = useContext(ResourceTreeContext); - + const { selectDatasourceId, selectProjectId, databaseList, datasourceList } = + useContext(ResourceTreeContext); + const currentDataSourceType = datasourceList?.find( + (item) => item.id === selectDatasourceId, + )?.dialectType; const handleCancel = () => { modalStore.changeDatabaseSearchModalVisible(false); }; @@ -96,6 +99,8 @@ const DatabaseSearchModal = ({ modalStore }: IProps) => { setSearchKey={setSearchKey} modalStore={modalStore} loading={loading} + selectProjectId={selectProjectId} + currentDataSourceType={currentDataSourceType} /> ); }; From 834eadbdc965783d69cab4016d93ac1935c6405f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=95=85=E6=99=9A?= Date: Mon, 22 Jul 2024 15:23:28 +0800 Subject: [PATCH 07/20] PullRequest: 474 fix/.dev-4.3.1-2884 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'fix/dev-4.3.1-2884 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.3.1 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/474 Signed-off-by: 晓康 * fix: add traceEmptyReason in profile trace tab * fix: rename the traceComponent * fix: resultSet log with [withQueryProfile] params limits * Fixes oceanbase/odc#2884 * style: update object search Locate description --- src/component/ExecuteSqlDetailModal/index.tsx | 9 +++++++-- .../Task/component/TableSelecter/index.tsx | 1 + .../components/DatabaseList.tsx | 12 +++++------- .../components/DDLResultSet/index.tsx | 9 +++++++-- .../components/SQLResultSet/ExecuteHistory.tsx | 18 ++++++++++++++++-- .../components/SQLResultSet/index.tsx | 13 ++++++++++--- .../{TraceComp.tsx => TraceComponent.tsx} | 0 src/page/Workspace/components/Trace/index.tsx | 2 +- src/store/modal.ts | 3 +++ 9 files changed, 50 insertions(+), 17 deletions(-) rename src/page/Workspace/components/Trace/{TraceComp.tsx => TraceComponent.tsx} (100%) diff --git a/src/component/ExecuteSqlDetailModal/index.tsx b/src/component/ExecuteSqlDetailModal/index.tsx index 777f86a96..dd3d4df80 100644 --- a/src/component/ExecuteSqlDetailModal/index.tsx +++ b/src/component/ExecuteSqlDetailModal/index.tsx @@ -15,7 +15,7 @@ import { handleShowOutputFilter } from '@/page/Workspace/components/SQLExplain'; import { formatMessage } from '@/util/intl'; import { getFullLinkTraceDownloadUrl } from '@/common/network/sql'; import { downloadFile } from '@/util/utils'; -import TraceComp from '@/page/Workspace/components/Trace/TraceComp'; +import TraceComp from '@/page/Workspace/components/Trace/TraceComponent'; import { TraceTabsType } from '@/page/Workspace/components/Trace'; import { ProfileType, @@ -49,6 +49,8 @@ const ExecuteSQLDetailModal: React.FC = ({ modalStore }: IProps) => { const [pageLoading, setPageLoading] = useState(false); const [searchValue, setSearchValue] = useState(null); const finished = !!data?.graph?.status && data?.graph?.status === IProfileStatus.FINISHED; + const enableTrace = + finished && modalStore?.executeSqlDetailData?.session?.params?.fullLinkTraceEnabled; const getExecuteRadioOption = () => { return [ { @@ -71,7 +73,7 @@ const ExecuteSQLDetailModal: React.FC = ({ modalStore }: IProps) => { id: 'src.component.ExecuteSqlDetailModal.0B221F0A', defaultMessage: '全链路诊断', }), - disabled: !finished, + disabled: !enableTrace, }, ]; }; @@ -87,6 +89,9 @@ const ExecuteSQLDetailModal: React.FC = ({ modalStore }: IProps) => { ]; const getDisabledTooltip = (val) => { + if (modalStore?.executeSqlDetailData?.traceEmptyReason) { + return modalStore?.executeSqlDetailData?.traceEmptyReason; + } if (finished || !data?.graph?.status) { return val; } diff --git a/src/component/Task/component/TableSelecter/index.tsx b/src/component/Task/component/TableSelecter/index.tsx index 76c7f3415..cf648114a 100644 --- a/src/component/Task/component/TableSelecter/index.tsx +++ b/src/component/Task/component/TableSelecter/index.tsx @@ -191,6 +191,7 @@ const getTreeData = (validTableList: IDataBaseWithTable[], isSourceTree = false) disabled: hasGetTableList && tableList.length === 0, expandable: true, children, + isLeaf: false, }; }); return allTreeData; diff --git a/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/components/DatabaseList.tsx b/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/components/DatabaseList.tsx index 48c9f2f21..7ec6bbf6e 100644 --- a/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/components/DatabaseList.tsx +++ b/src/page/Workspace/SideBar/ResourceTree/DatabaseSearchModal/components/DatabaseList.tsx @@ -99,13 +99,11 @@ const DatabaseList = ({ if (database && !searchKey) { return ( - +
+
openSql(e, database)}> + {`定位到数据库 "${database?.name}"`} +
+
); } return ( diff --git a/src/page/Workspace/components/DDLResultSet/index.tsx b/src/page/Workspace/components/DDLResultSet/index.tsx index 6c98c2718..aaf6a49fe 100644 --- a/src/page/Workspace/components/DDLResultSet/index.tsx +++ b/src/page/Workspace/components/DDLResultSet/index.tsx @@ -166,7 +166,12 @@ interface IProps { onShowExecuteDetail?: () => void; onShowTrace?: () => void; onUpdateEditing?: (editing: boolean) => void; - onOpenExecutingDetailModal?: (traceId: string, sql?: string) => void; + onOpenExecutingDetailModal?: ( + traceId: string, + sql?: string, + sessionId?: string, + traceEmptyReason?: string, + ) => void; } const DDLResultSet: React.FC = function (props) { const { @@ -708,7 +713,7 @@ const DDLResultSet: React.FC = function (props) { icon={} onClick={() => { updateExecutePlanGuideCache(); - onOpenExecutingDetailModal?.(traceId, originSql); + onOpenExecutingDetailModal?.(traceId, originSql, null, traceEmptyReason); }} tip={executeGuideTipContent()} overlayInnerStyle={{ width: 300 }} diff --git a/src/page/Workspace/components/SQLResultSet/ExecuteHistory.tsx b/src/page/Workspace/components/SQLResultSet/ExecuteHistory.tsx index 9a68f0101..fcda48d4c 100644 --- a/src/page/Workspace/components/SQLResultSet/ExecuteHistory.tsx +++ b/src/page/Workspace/components/SQLResultSet/ExecuteHistory.tsx @@ -41,7 +41,12 @@ interface IProps { onShowExecuteDetail: (sql: string, tag: string) => void; resultHeight: number; sqlStore?: SQLStore; - onOpenExecutingDetailModal?: (traceId: string, sql?: string, sessionId?: string) => void; + onOpenExecutingDetailModal?: ( + traceId: string, + sql?: string, + sessionId?: string, + traceEmptyReason?: string, + ) => void; } function getResultText(rs: ISqlExecuteResult) { @@ -199,7 +204,16 @@ const ExecuteHistory: React.FC = function (props) { render: (value: string, row: any) => { if (!value) return '-'; return row?.isSupportProfile ? ( - onOpenExecutingDetailModal(value, row?.originSql, row?.sessionId)}> + + onOpenExecutingDetailModal( + value, + row?.originSql, + row?.sessionId, + row?.traceEmptyReason, + ) + } + > {value} ) : ( diff --git a/src/page/Workspace/components/SQLResultSet/index.tsx b/src/page/Workspace/components/SQLResultSet/index.tsx index cdb20b00a..a6e410035 100644 --- a/src/page/Workspace/components/SQLResultSet/index.tsx +++ b/src/page/Workspace/components/SQLResultSet/index.tsx @@ -38,6 +38,7 @@ import SQLResultLog from './SQLResultLog'; import DBPermissionTable from './DBPermissionTable'; import { IUnauthorizedDBResources } from '@/d.ts/table'; import { ProfileType } from '@/component/ExecuteSqlDetailModal/constant'; +import sessionManager from '@/store/sessionManager'; export const recordsTabKey = 'records'; export const sqlLintTabKey = 'sqlLint'; @@ -236,8 +237,13 @@ const SQLResultSet: React.FC = function (props) { const stopRunning = () => { sqlStore.stopExec(ctx.props.pageKey, ctx?.getSession()?.sessionId); }; - const onOpenExecutingDetailModal = (id: string, sql?: string, sessionId?: string) => { - const session = sessionId ? { sessionId: sessionId } : ctx?.getSession(); + const onOpenExecutingDetailModal = ( + id: string, + sql?: string, + sessionId?: string, + traceEmptyReason?: string, + ) => { + const session = sessionId ? sessionManager.sessionMap.get(sessionId) : ctx?.getSession(); modalStore.changeExecuteSqlDetailModalVisible( true, id, @@ -245,6 +251,7 @@ const SQLResultSet: React.FC = function (props) { session, ctx?.editor.getSelectionContent(), ProfileType.Execute, + traceEmptyReason, ); }; @@ -477,7 +484,7 @@ const SQLResultSet: React.FC = function (props) { stopRunning={stopRunning} onOpenExecutingDetailModal={onOpenExecutingDetailModal} loading={sqlStore.logLoading} - isSupportProfile={isSupportProfile} + isSupportProfile={isSupportProfile && set?.withQueryProfile} /> ), }; diff --git a/src/page/Workspace/components/Trace/TraceComp.tsx b/src/page/Workspace/components/Trace/TraceComponent.tsx similarity index 100% rename from src/page/Workspace/components/Trace/TraceComp.tsx rename to src/page/Workspace/components/Trace/TraceComponent.tsx diff --git a/src/page/Workspace/components/Trace/index.tsx b/src/page/Workspace/components/Trace/index.tsx index 602bbec7c..271d94caf 100644 --- a/src/page/Workspace/components/Trace/index.tsx +++ b/src/page/Workspace/components/Trace/index.tsx @@ -27,7 +27,7 @@ import { getFullLinkTrace, getFullLinkTraceDownloadUrl } from '@/common/network/ import { downloadFile, formatTimeTemplatMicroSeconds } from '@/util/utils'; import { TraceSpan } from '@/d.ts'; import SessionStore from '@/store/sessionManager/session'; -import TraceComp from './TraceComp'; +import TraceComp from './TraceComponent'; export const InfoRender = ({ infos }) => { return ( diff --git a/src/store/modal.ts b/src/store/modal.ts index db2d7c63c..b31aa4888 100644 --- a/src/store/modal.ts +++ b/src/store/modal.ts @@ -431,6 +431,7 @@ export class ModalStore { session?: any; selectedSQL?: any; profileType?: ProfileType; + traceEmptyReason?: string; } = null; @action @@ -441,6 +442,7 @@ export class ModalStore { session?: any, selectedSQL?: any, profileType?: ProfileType, + traceEmptyReason?: string, ) { this.executeSqlDetailModalVisible = v; this.executeSqlDetailData = { @@ -449,6 +451,7 @@ export class ModalStore { session, selectedSQL: selectedSQL, profileType: profileType, + traceEmptyReason: traceEmptyReason, }; } From 9f62343685f36156bc6e5f910e542febf9b18ee6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=95=85=E6=99=9A?= Date: Tue, 23 Jul 2024 10:06:08 +0800 Subject: [PATCH 08/20] PullRequest: 475 fix/dev-4.3.1-2988 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'fix/dev-4.3.1-2988 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.3.1 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/475 Signed-off-by: 晓康 * Fixes oceanbase/odc#2988 * fix: remove unnecessary feature in db list --- src/page/Project/Database/index.tsx | 29 ------------------- .../components/ObjectList.tsx | 2 ++ 2 files changed, 2 insertions(+), 29 deletions(-) diff --git a/src/page/Project/Database/index.tsx b/src/page/Project/Database/index.tsx index 6d4c2299c..e07f924b3 100644 --- a/src/page/Project/Database/index.tsx +++ b/src/page/Project/Database/index.tsx @@ -132,14 +132,6 @@ const Database: React.FC = ({ id, modalStore }) => { ); }; - const getAuthString = (authList: DatabasePermissionType[]) => { - if (authList?.length === 0) return '无权限'; - return authList - ?.map((i) => databasePermissionTypeMap[i]?.text || '') - ?.filter(Boolean) - ?.join(','); - }; - const clearSelectedRowKeys = () => { setSelectedRowKeys([]); }; @@ -355,14 +347,6 @@ const Database: React.FC = ({ id, modalStore }) => { ellipsis: true, render: (collationName) => collationName || '-', }, - { - title: '权限', - dataIndex: 'authorizedPermissionTypes', - width: 130, - render(v) { - return getAuthString(v); - }, - }, { title: formatMessage({ id: 'odc.Project.Database.LastSynchronizationTime', @@ -396,7 +380,6 @@ const Database: React.FC = ({ id, modalStore }) => { const hasQueryAuth = record.authorizedPermissionTypes?.includes( DatabasePermissionType.QUERY, ); - const hasNoDBAuth = record.authorizedPermissionTypes?.length === 0; const curRoles = project?.currentUserResourceRoles || []; const hasChangeOwnerAuth = curRoles.some((role) => @@ -445,18 +428,6 @@ const Database: React.FC = ({ id, modalStore }) => { } return ( - {hasNoDBAuth ? ( - { - modalStore.changeApplyDatabasePermissionModal(true, { - databaseId: record?.id, - }); - }} - > - 库权限申请 - - ) : null} {config?.features?.task?.includes(TaskType.EXPORT) && setting.enableDBExport && ( {typeObjectTree?.map((i) => { const isDatabase = i.key === DbObjectType.database; + /* 在选择了库之后检索, 会检索到数据库本身(若数据库名包含searchkey), 需要前端屏蔽掉 */ + if (isDatabase && database) return; if (i?.data?.length) { return (
From 00c6d48c5e175b334267c1d209230096063064fc Mon Sep 17 00:00:00 2001 From: xiaokang Date: Tue, 23 Jul 2024 13:55:51 +0800 Subject: [PATCH 09/20] feat: log timeout error --- src/main/server/main.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/server/main.ts b/src/main/server/main.ts index a200b3714..f5c6dd81e 100644 --- a/src/main/server/main.ts +++ b/src/main/server/main.ts @@ -137,7 +137,7 @@ class MainServer { /** * 确认服务是否可用 */ - private async checkServerIsReady() { + private async checkServerIsReady(logError: boolean = false) { try { await new Promise((resolve, reject) => { const res = get(`http://localhost:${this.port}/api/v1/info`, (resp) => { @@ -159,6 +159,7 @@ class MainServer { }); }).on('error', (err) => { log.info('check server with resp err'); + logError && log.info(err); reject(err); }); res.setTimeout(2000); @@ -179,7 +180,7 @@ class MainServer { const getStatus = async (fn, reject) => { count++; log.info(`fetch server status count(${count})`); - const isReady = await this.checkServerIsReady(); + const isReady = await this.checkServerIsReady(count > 70); if (isReady) { log.info(`Server startup time:`, (Date.now() - now) / 1000); fn(true); From 8b6f0c48ba07c818fd735164133f20d2c3862fd9 Mon Sep 17 00:00:00 2001 From: xiaokang Date: Tue, 23 Jul 2024 13:55:51 +0800 Subject: [PATCH 10/20] feat: log timeout error --- src/main/server/main.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/server/main.ts b/src/main/server/main.ts index a200b3714..f5c6dd81e 100644 --- a/src/main/server/main.ts +++ b/src/main/server/main.ts @@ -137,7 +137,7 @@ class MainServer { /** * 确认服务是否可用 */ - private async checkServerIsReady() { + private async checkServerIsReady(logError: boolean = false) { try { await new Promise((resolve, reject) => { const res = get(`http://localhost:${this.port}/api/v1/info`, (resp) => { @@ -159,6 +159,7 @@ class MainServer { }); }).on('error', (err) => { log.info('check server with resp err'); + logError && log.info(err); reject(err); }); res.setTimeout(2000); @@ -179,7 +180,7 @@ class MainServer { const getStatus = async (fn, reject) => { count++; log.info(`fetch server status count(${count})`); - const isReady = await this.checkServerIsReady(); + const isReady = await this.checkServerIsReady(count > 70); if (isReady) { log.info(`Server startup time:`, (Date.now() - now) / 1000); fn(true); From f866467fd548ce0c6db0f0245a109a15f87a1d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=95=85=E6=99=9A?= Date: Tue, 23 Jul 2024 16:50:17 +0800 Subject: [PATCH 11/20] PullRequest: 476 fix/dev-4.3.1-2991 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'fix/dev-4.3.1-2988 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.3.1 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/476 Signed-off-by: 晓康 * Fixes oceanbase/odc#2988 * fix: remove unnecessary feature in db list * Fixes oceanbase/odc#2991 * Fixes oceanbase/odc#2994 --- src/component/CommonTable/index.tsx | 19 +++++++------------ .../customComponents/DetailBox.tsx | 2 +- src/component/SelectTransfer/index.tsx | 9 +++++++-- .../ManageModal/Table/TaskApplyList/index.tsx | 12 +++++------- .../ManageModal/Table/UserAuthList/index.tsx | 12 +++++------- 5 files changed, 25 insertions(+), 29 deletions(-) diff --git a/src/component/CommonTable/index.tsx b/src/component/CommonTable/index.tsx index c64893bbe..f4dd91390 100644 --- a/src/component/CommonTable/index.tsx +++ b/src/component/CommonTable/index.tsx @@ -73,7 +73,7 @@ interface IProps { operationContent?: IOperationContent; // 是否展示 操作连 筛选区&自定义操作区 分割标记 isSplit?: boolean; - // 行选择 相关配置 + // 行选择 相关配置 (初使用时容易与antd的rowSelection混淆重复导致bug) rowSelecter?: IRowSelecter; // 行选择状态回调 rowSelectedCallback?: (selectedRowKeys: any[]) => void; @@ -460,17 +460,12 @@ const CommonTable: ( } onChange={handleChange} rowSelection={ - rowSelecter - ? { - ...tableProps?.rowSelection, - ...rowSelecter, - selectedRowKeys, - onSelect: handleRowKeySelect, - onSelectAll: handleSelectAll, - } - : { - ...tableProps?.rowSelection, - } + rowSelecter && { + ...rowSelecter, + selectedRowKeys, + onSelect: handleRowKeySelect, + onSelectAll: handleSelectAll, + } } pagination={{ ...tableProps?.pagination, diff --git a/src/component/ProfileFlow/customComponents/DetailBox.tsx b/src/component/ProfileFlow/customComponents/DetailBox.tsx index a962f6251..27dfd5b1e 100644 --- a/src/component/ProfileFlow/customComponents/DetailBox.tsx +++ b/src/component/ProfileFlow/customComponents/DetailBox.tsx @@ -287,7 +287,7 @@ export default ({ dataSource, topNodes, initialNodes, globalInfo }: Iprops) => { {subNodesSortMap[subNodeSortType.BY_DURATION].label} diff --git a/src/component/SelectTransfer/index.tsx b/src/component/SelectTransfer/index.tsx index f92b0382d..62d98eedb 100644 --- a/src/component/SelectTransfer/index.tsx +++ b/src/component/SelectTransfer/index.tsx @@ -114,8 +114,13 @@ export default function SelectTransfer(props: IProps) { checkable selectable={false} checkedKeys={checkedKeys} - onCheck={(v) => { - setCheckedKeys([...(checkedKeys || []), ...(v as string[])]); + onCheck={(v, e) => { + const { checked, checkedNodes, node, event, halfCheckedKeys } = e; + if (checked === false) { + setCheckedKeys([...checkedKeys.filter((i) => i !== node?.key)]); + } else { + setCheckedKeys([...(checkedKeys || []), ...(v as string[])]); + } }} height={274} treeData={sourceDisplayTreeData} diff --git a/src/page/Project/User/ManageModal/Table/TaskApplyList/index.tsx b/src/page/Project/User/ManageModal/Table/TaskApplyList/index.tsx index a5d81553b..73fe82c5d 100644 --- a/src/page/Project/User/ManageModal/Table/TaskApplyList/index.tsx +++ b/src/page/Project/User/ManageModal/Table/TaskApplyList/index.tsx @@ -295,6 +295,11 @@ const TaskApplyList: React.FC = (props) => { onOk: onReclaim, }, ], + getCheckboxProps: (record: ITablePermission) => { + return { + disabled: record?.status === TablePermissionStatus.EXPIRED, + }; + }, } : null } @@ -303,13 +308,6 @@ const TaskApplyList: React.FC = (props) => { tableProps={{ columns: columns?.filter((item) => (isOwner ? true : item?.dataIndex !== 'action')), dataSource: dataSource?.contents ?? [], - rowSelection: { - getCheckboxProps: (record: ITablePermission) => { - return { - disabled: record?.status === TablePermissionStatus.EXPIRED, - }; - }, - }, rowKey: 'id', scroll: { x: 950, diff --git a/src/page/Project/User/ManageModal/Table/UserAuthList/index.tsx b/src/page/Project/User/ManageModal/Table/UserAuthList/index.tsx index 45c99fd46..ca8fa1e40 100644 --- a/src/page/Project/User/ManageModal/Table/UserAuthList/index.tsx +++ b/src/page/Project/User/ManageModal/Table/UserAuthList/index.tsx @@ -242,6 +242,11 @@ const UserAuthList: React.FC = (props) => { onOk: onReclaim, }, ], + getCheckboxProps: (record: ITablePermission) => { + return { + disabled: record?.status === TablePermissionStatus.EXPIRED, + }; + }, } : null } @@ -251,13 +256,6 @@ const UserAuthList: React.FC = (props) => { columns: columns?.filter((item) => (isOwner ? true : item?.dataIndex !== 'action')), dataSource: dataSource?.contents ?? [], rowKey: 'id', - rowSelection: { - getCheckboxProps: (record: ITablePermission) => { - return { - disabled: record?.status === TablePermissionStatus.EXPIRED, - }; - }, - }, scroll: { x: 950, y: 800, From b64b2bce9098fd4f9538ab632d560458aea9ae93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=8B=E7=91=9B?= Date: Tue, 23 Jul 2024 17:32:30 +0800 Subject: [PATCH 12/20] PullRequest: 477 fix: fixes oceanbase/odc#2921 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'fix/dev-4.3.1-2921 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.3.1 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/477 Signed-off-by: 晓康 * fix: fixes oceanbase/odc#2921 --- .../components/DDLResultSet/StatusBar.tsx | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/page/Workspace/components/DDLResultSet/StatusBar.tsx b/src/page/Workspace/components/DDLResultSet/StatusBar.tsx index 3c2e68671..d3e87391b 100644 --- a/src/page/Workspace/components/DDLResultSet/StatusBar.tsx +++ b/src/page/Workspace/components/DDLResultSet/StatusBar.tsx @@ -130,15 +130,17 @@ const StatusBar: React.FC = function ({ ) : null} - - {formatMessage( - { - id: 'src.page.Workspace.components.DDLResultSet.0B7666A0', - defaultMessage: '总耗时:${DBCostTime}', - }, - { DBCostTime: DBCostTime }, - )} - + {timer && ( + + {formatMessage( + { + id: 'src.page.Workspace.components.DDLResultSet.0B7666A0', + defaultMessage: '总耗时:${DBCostTime}', + }, + { DBCostTime: DBCostTime }, + )} + + )} { formatMessage( From a23ff3816d2b97a9d43cb1fb81c05b76d05efab2 Mon Sep 17 00:00:00 2001 From: xiaokang Date: Wed, 24 Jul 2024 10:07:51 +0800 Subject: [PATCH 13/20] fix: localhost => 127.0.0.1 --- src/main/server/main.ts | 2 +- src/main/store/index.ts | 2 +- src/main/windows/mainWeb/event.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/server/main.ts b/src/main/server/main.ts index f5c6dd81e..d382058b5 100644 --- a/src/main/server/main.ts +++ b/src/main/server/main.ts @@ -140,7 +140,7 @@ class MainServer { private async checkServerIsReady(logError: boolean = false) { try { await new Promise((resolve, reject) => { - const res = get(`http://localhost:${this.port}/api/v1/info`, (resp) => { + const res = get(`http://127.0.0.1:${this.port}/api/v1/info`, (resp) => { log.info('check server api status: ', resp.statusCode); let data = ''; // A chunk of data has been recieved. diff --git a/src/main/store/index.ts b/src/main/store/index.ts index ae1f246a0..771697fc2 100644 --- a/src/main/store/index.ts +++ b/src/main/store/index.ts @@ -21,7 +21,7 @@ import log from '../utils/log'; export class PathnameStore { public static PROTOCOL = 'http'; private static defaultPathname: string = 'index.html'; - private static hostname: string = 'localhost'; + private static hostname: string = '127.0.0.1'; public static pathname: string = PathnameStore.defaultPathname; public static hash: string = ''; diff --git a/src/main/windows/mainWeb/event.ts b/src/main/windows/mainWeb/event.ts index bbbce4e41..fb2aef0a0 100644 --- a/src/main/windows/mainWeb/event.ts +++ b/src/main/windows/mainWeb/event.ts @@ -65,7 +65,7 @@ export function newWindowEvent(mainWindow: BrowserWindow) { mainWindow.on('close', (e) => { log.warn(`webcontent close, url: ${mainWindow.webContents.getURL()}`); const url = mainWindow.webContents?.getURL(); - if (url.includes('localhost') && !url.includes('help-doc')) { + if (url.includes('127.0.0.1') && !url.includes('help-doc')) { /** * odc workspace confirm */ From 2c19a3dc9b86794c2e292982467cfd5dfa021cba Mon Sep 17 00:00:00 2001 From: xiaokang Date: Thu, 25 Jul 2024 10:54:19 +0800 Subject: [PATCH 14/20] fixes oceanbase/odc#2752 --- src/page/Gateway/customConnect.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/page/Gateway/customConnect.ts b/src/page/Gateway/customConnect.ts index 2754c7a99..344ab2a57 100644 --- a/src/page/Gateway/customConnect.ts +++ b/src/page/Gateway/customConnect.ts @@ -173,7 +173,7 @@ export const action = async (config: ICustomConnectAction) => { const project = (await listProjects(projectName, 1, 20, false, true))?.contents?.[0]; if (!project || project?.name !== projectName) { - return 'User Project Not Fount'; + return 'User project not found, please contact adminitrator, confirm the bastion integration is enabled'; } const params = resolveRemoteData({ From 94e51737c1a1949dc8d01400bf17660b4d3185c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=95=85=E6=99=9A?= Date: Thu, 25 Jul 2024 16:26:54 +0800 Subject: [PATCH 15/20] PullRequest: 479 style: profile style bugfix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'fix/dev-4.3.1-profileStyle of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.3.1 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/479 Signed-off-by: 晓康 * Fixes oceanbase/odc#2998 * fix: update tableSelecter serach * fix: update tableSelecter serach * style: profile style bugfix --- src/component/ExecuteSqlDetailModal/index.less | 2 +- .../ProfileFlow/customComponents/DetailBox.tsx | 18 ++++++++++-------- .../ProfileFlow/customComponents/Edge.tsx | 8 ++++---- .../ProfileFlow/customComponents/Node.tsx | 2 +- .../ProfileFlow/customComponents/index.less | 9 +++++++-- src/component/ProfileFlow/index.less | 2 +- src/component/ProfileFlow/utils.ts | 1 + .../Task/component/TableSelecter/index.tsx | 2 +- src/component/Toolbar/index.tsx | 7 ++++++- .../components/DDLResultSet/index.tsx | 6 ++++-- .../components/SQLResultSet/index.tsx | 2 +- .../Workspace/components/Trace/TraceTable.tsx | 8 ++++---- src/page/Workspace/components/Trace/index.less | 2 -- src/style/theme/white.less | 2 +- 14 files changed, 42 insertions(+), 29 deletions(-) diff --git a/src/component/ExecuteSqlDetailModal/index.less b/src/component/ExecuteSqlDetailModal/index.less index 59d46b1a5..8d37496d0 100644 --- a/src/component/ExecuteSqlDetailModal/index.less +++ b/src/component/ExecuteSqlDetailModal/index.less @@ -49,7 +49,7 @@ white-space: nowrap; text-overflow: ellipsis; flex-shrink: 0; - max-width: 300px; + max-width: 640px; } .flexBetween { display: flex; diff --git a/src/component/ProfileFlow/customComponents/DetailBox.tsx b/src/component/ProfileFlow/customComponents/DetailBox.tsx index 27dfd5b1e..0f0dd77b5 100644 --- a/src/component/ProfileFlow/customComponents/DetailBox.tsx +++ b/src/component/ProfileFlow/customComponents/DetailBox.tsx @@ -88,7 +88,7 @@ export default ({ dataSource, topNodes, initialNodes, globalInfo }: Iprops) => { function getProfileNodeDetail(data) { return ( -
+
{top5Render()} {topNodesList.length ? : null} @@ -152,7 +152,7 @@ export default ({ dataSource, topNodes, initialNodes, globalInfo }: Iprops) => { > {key} - + {formatTimeTemplate( BigNumber(value as any) .div(1000000) @@ -163,7 +163,7 @@ export default ({ dataSource, topNodes, initialNodes, globalInfo }: Iprops) => { ) : ( <> {key} - {value} + {value} )}
@@ -182,7 +182,7 @@ export default ({ dataSource, topNodes, initialNodes, globalInfo }: Iprops) => { return (
{key} - {value} + {value}
); })} @@ -328,7 +328,7 @@ export default ({ dataSource, topNodes, initialNodes, globalInfo }: Iprops) => {
[{i?.id}]
- + {' '} {formatTimeTemplate(BigNumber(i?.data?.duration).div(1000000).toNumber())}{' '} @@ -371,12 +371,14 @@ export default ({ dataSource, topNodes, initialNodes, globalInfo }: Iprops) => { > {key}
- {formatTimeTemplate(BigNumber(value).div(1000000).toNumber())} + + {formatTimeTemplate(BigNumber(value).div(1000000).toNumber())}{' '} + ) : ( <> {key} - {value} + {value} )}
@@ -395,7 +397,7 @@ export default ({ dataSource, topNodes, initialNodes, globalInfo }: Iprops) => { return (
{key} - {value} + {value}
); })} diff --git a/src/component/ProfileFlow/customComponents/Edge.tsx b/src/component/ProfileFlow/customComponents/Edge.tsx index f48e6cc3a..a49ada685 100644 --- a/src/component/ProfileFlow/customComponents/Edge.tsx +++ b/src/component/ProfileFlow/customComponents/Edge.tsx @@ -11,10 +11,10 @@ const CustomEdge = ({ id, sourceX, sourceY, targetX, targetY, style = {}, data } const edgeEndPointY = targetY - TURNNG_LINE_GAP; - // 根据tartget与source的x位置计算xOffset, 1.左边 2.右边 和 3.中间的区别 - const xOffset = sourceX - targetX > 4 ? -16 : sourceX - targetX < -4 ? 16 : 0; - // 根据tartget与source的x位置计算yOffset, 1.左边/右边 2.中间的区别 - let yOffset = Math.abs(sourceX - targetX) < 4 ? 25 : 10; + // 根据是否有一个以上子节点tartget与source的x位置计算xOffset + const xOffset = data?.isSingleChild ? 0 : sourceX - targetX > 4 ? -16 : 16; + // 根据tartget与source的x位置计算yOffset + let yOffset = data?.isSingleChild ? 25 : 10; // 有子节点的再单独计算 yOffset = data.isOverlap ? yOffset + 8 : yOffset; diff --git a/src/component/ProfileFlow/customComponents/Node.tsx b/src/component/ProfileFlow/customComponents/Node.tsx index 49591d617..212d60192 100644 --- a/src/component/ProfileFlow/customComponents/Node.tsx +++ b/src/component/ProfileFlow/customComponents/Node.tsx @@ -81,7 +81,7 @@ function TextUpdaterNode({ data, id, isConnectable }) { {data?.hasChild ? (
{ e.preventDefault(); e.stopPropagation(); diff --git a/src/component/ProfileFlow/customComponents/index.less b/src/component/ProfileFlow/customComponents/index.less index 89b95bfb6..3f2e0fab6 100644 --- a/src/component/ProfileFlow/customComponents/index.less +++ b/src/component/ProfileFlow/customComponents/index.less @@ -3,13 +3,16 @@ .customDetailBox { position: absolute; right: 16px; - width: 332px; + width: 336px; background-color: var(--profile-secondry-background-color); border: 1px solid var(--profile-border-color); border-left: none; height: calc(100% - 151px); overflow-y: auto; padding: 12px 8px; + .value { + color: var(--profile-text-color); + } .customDetailBoxItem { display: flex; justify-content: space-between; @@ -133,7 +136,9 @@ } .icon { position: absolute; - left: 129px; + left: 50%; + top: 100%; + transform: translateX(-50%); padding: 4px; color: var(--profile-icon-color); } diff --git a/src/component/ProfileFlow/index.less b/src/component/ProfileFlow/index.less index 94fea7805..60587664c 100644 --- a/src/component/ProfileFlow/index.less +++ b/src/component/ProfileFlow/index.less @@ -4,7 +4,7 @@ overflow-x: auto; background-color: var(--profile-primary-background-color); border: 1px solid var(--profile-border-color); - width: calc(100% - 332px); + width: calc(100% - 336px); :global { .react-flow__attribution { display: none; diff --git a/src/component/ProfileFlow/utils.ts b/src/component/ProfileFlow/utils.ts index 17a9f9568..334ec325f 100644 --- a/src/component/ProfileFlow/utils.ts +++ b/src/component/ProfileFlow/utils.ts @@ -224,6 +224,7 @@ export function transformDataForReactFlow( data: { weight: node?.data.inEdges?.[0]?.weight, isOverlap: isParantOverlap, + isSingleChild: node?.parent?.data?.outEdges?.length === 1, }, }; edges.push(reactFlowEdge); diff --git a/src/component/Task/component/TableSelecter/index.tsx b/src/component/Task/component/TableSelecter/index.tsx index cf648114a..f514dde9f 100644 --- a/src/component/Task/component/TableSelecter/index.tsx +++ b/src/component/Task/component/TableSelecter/index.tsx @@ -250,7 +250,7 @@ const TableSelecter: React.ForwardRefRenderFunction = const filtedDataSource = []; for (const datasource of databaseWithTableList) { let { tableList, name } = datasource; - if (name.includes(sourceSearchValue)) { + if (name?.toLowerCase().includes(sourceSearchValue?.toLowerCase())) { filtedDataSource.push(datasource); } else { const targetTableList = tableList.filter((item) => item?.name?.includes(sourceSearchValue)); diff --git a/src/component/Toolbar/index.tsx b/src/component/Toolbar/index.tsx index 0747c9abf..e5f7f668b 100644 --- a/src/component/Toolbar/index.tsx +++ b/src/component/Toolbar/index.tsx @@ -150,7 +150,12 @@ function TButton({ if (tip) { return ( - + {content} diff --git a/src/page/Workspace/components/DDLResultSet/index.tsx b/src/page/Workspace/components/DDLResultSet/index.tsx index aaf6a49fe..378fc76b0 100644 --- a/src/page/Workspace/components/DDLResultSet/index.tsx +++ b/src/page/Workspace/components/DDLResultSet/index.tsx @@ -685,7 +685,7 @@ const DDLResultSet: React.FC = function (props) { if (guideCacheStore?.[guideCacheStore.cacheEnum.executePlan]) return null; return (
-
+
{formatMessage({ id: 'src.page.Workspace.components.DDLResultSet.E32AB474', defaultMessage: 'SQL 执行画像', @@ -712,8 +712,10 @@ const DDLResultSet: React.FC = function (props) { })} icon={} onClick={() => { - updateExecutePlanGuideCache(); onOpenExecutingDetailModal?.(traceId, originSql, null, traceEmptyReason); + setTimeout(() => { + updateExecutePlanGuideCache(); + }, 1000); }} tip={executeGuideTipContent()} overlayInnerStyle={{ width: 300 }} diff --git a/src/page/Workspace/components/SQLResultSet/index.tsx b/src/page/Workspace/components/SQLResultSet/index.tsx index a6e410035..f0d46b899 100644 --- a/src/page/Workspace/components/SQLResultSet/index.tsx +++ b/src/page/Workspace/components/SQLResultSet/index.tsx @@ -484,7 +484,7 @@ const SQLResultSet: React.FC = function (props) { stopRunning={stopRunning} onOpenExecutingDetailModal={onOpenExecutingDetailModal} loading={sqlStore.logLoading} - isSupportProfile={isSupportProfile && set?.withQueryProfile} + isSupportProfile={isSupportProfile} /> ), }; diff --git a/src/page/Workspace/components/Trace/TraceTable.tsx b/src/page/Workspace/components/Trace/TraceTable.tsx index d40e532a1..7ee6e7455 100644 --- a/src/page/Workspace/components/Trace/TraceTable.tsx +++ b/src/page/Workspace/components/Trace/TraceTable.tsx @@ -67,25 +67,25 @@ const TraceTable: React.FC<{
Date: Thu, 25 Jul 2024 16:29:36 +0800 Subject: [PATCH 16/20] PullRequest: 478 fix/dev-4.3.1-2998 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'fix/dev-4.3.1-2998 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.3.1 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/478 Signed-off-by: 晓康 * Fixes oceanbase/odc#2998 * fix: update tableSelecter serach * fix: update tableSelecter serach From b5b30991af8974edfde34b7f240ed7c09e60b466 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=95=85=E6=99=9A?= Date: Fri, 26 Jul 2024 13:44:37 +0800 Subject: [PATCH 17/20] PullRequest: 480 feat/dev-4.3.1-dataClearEdit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'feat/dev-4.3.1-dataClearEdit of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.3.1 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/480 Signed-off-by: 晓康 * feat: dataClear support edit * fix: update enablePartition implement --- .../CreateModal/ArchiveRange.tsx | 10 +++--- .../DataArchiveTask/CreateModal/index.tsx | 5 +-- .../CreateModal/ArchiveRange.tsx | 10 +++--- .../Task/DataClearTask/CreateModal/index.tsx | 4 ++- .../Task/component/ActionBar/index.tsx | 31 +++++++++++++------ 5 files changed, 37 insertions(+), 23 deletions(-) diff --git a/src/component/Task/DataArchiveTask/CreateModal/ArchiveRange.tsx b/src/component/Task/DataArchiveTask/CreateModal/ArchiveRange.tsx index 814c803e2..5e1062a68 100644 --- a/src/component/Task/DataArchiveTask/CreateModal/ArchiveRange.tsx +++ b/src/component/Task/DataArchiveTask/CreateModal/ArchiveRange.tsx @@ -31,19 +31,19 @@ import type { FormInstance } from 'antd/lib/form'; interface IProps { tables: ITable[]; enabledTargetTable?: boolean; - form?: FormInstance; + checkPartition?: boolean; } const ArchiveRange: React.FC = (props) => { - const { tables, enabledTargetTable = false, form } = props; - const [enablePartition, setEnablePartition] = useState(false); + const { tables, enabledTargetTable = false, checkPartition } = props; + const [enablePartition, setEnablePartition] = useState(checkPartition); const tablesOptions = tables?.map((item) => ({ label: item.tableName, value: item.tableName, })); useEffect(() => { - setEnablePartition(!!form?.getFieldsValue()?.tables?.find((i) => i?.partitions)); - }, [form?.getFieldsValue()?.tables]); + setEnablePartition(checkPartition); + }, [checkPartition]); return ( <> diff --git a/src/component/Task/DataArchiveTask/CreateModal/index.tsx b/src/component/Task/DataArchiveTask/CreateModal/index.tsx index afe06b36d..76aa0529b 100644 --- a/src/component/Task/DataArchiveTask/CreateModal/index.tsx +++ b/src/component/Task/DataArchiveTask/CreateModal/index.tsx @@ -162,6 +162,7 @@ const CreateModal: React.FC = (props) => { const [confirmLoading, setConfirmLoading] = useState(false); const [crontab, setCrontab] = useState(null); const [tables, setTables] = useState(); + const [enablePartition, setEnablePartition] = useState(false); const [form] = Form.useForm(); const databaseId = Form.useWatch('databaseId', form); const { session: sourceDBSession, database: sourceDB } = useDBSession(databaseId); @@ -196,7 +197,7 @@ const CreateModal: React.FC = (props) => { timeoutMillis, syncTableStructure, } = jobParameters; - + setEnablePartition(isEdit && !!tables?.find((i) => i?.partitions)); const formData = { databaseId: sourceDatabaseId, targetDataBaseId: targetDataBaseId, @@ -553,7 +554,7 @@ const CreateModal: React.FC = (props) => { /> - + diff --git a/src/component/Task/DataClearTask/CreateModal/ArchiveRange.tsx b/src/component/Task/DataClearTask/CreateModal/ArchiveRange.tsx index 29330fac4..ca49424b8 100644 --- a/src/component/Task/DataClearTask/CreateModal/ArchiveRange.tsx +++ b/src/component/Task/DataClearTask/CreateModal/ArchiveRange.tsx @@ -32,11 +32,11 @@ const { Text, Link } = Typography; interface IProps { tables: ITable[]; needCheckBeforeDelete?: boolean; - form?: FormInstance; + checkPartition?: boolean; } const ArchiveRange: React.FC = (props) => { - const { tables, needCheckBeforeDelete = false, form } = props; - const [enablePartition, setEnablePartition] = useState(false); + const { tables, needCheckBeforeDelete = false, checkPartition } = props; + const [enablePartition, setEnablePartition] = useState(checkPartition); const tablesOptions = tables?.map((item) => ({ label: item.tableName, value: item.tableName, @@ -45,8 +45,8 @@ const ArchiveRange: React.FC = (props) => { const hasAdvancedOptionCol = enablePartition || needCheckBeforeDelete; useEffect(() => { - setEnablePartition(!!form?.getFieldsValue()?.tables?.find((i) => i?.partitions)); - }, [form?.getFieldsValue()?.tables]); + setEnablePartition(checkPartition); + }, [checkPartition]); return ( <> diff --git a/src/component/Task/DataClearTask/CreateModal/index.tsx b/src/component/Task/DataClearTask/CreateModal/index.tsx index f3d777637..5d3d504c7 100644 --- a/src/component/Task/DataClearTask/CreateModal/index.tsx +++ b/src/component/Task/DataClearTask/CreateModal/index.tsx @@ -120,6 +120,7 @@ const CreateModal: React.FC = (props) => { const [confirmLoading, setConfirmLoading] = useState(false); const [crontab, setCrontab] = useState(null); const [tables, setTables] = useState(); + const [enablePartition, setEnablePartition] = useState(false); const [form] = Form.useForm(); const databaseId = Form.useWatch('databaseId', form); const { session, database } = useDBSession(databaseId); @@ -153,6 +154,7 @@ const CreateModal: React.FC = (props) => { targetDatabaseId, timeoutMillis, } = jobParameters; + setEnablePartition(isEdit && !!tables?.find((i) => i?.partitions)); const formData = { databaseId, rowLimit: rateLimit?.rowLimit, @@ -530,7 +532,7 @@ const CreateModal: React.FC = (props) => { ); }} diff --git a/src/component/Task/component/ActionBar/index.tsx b/src/component/Task/component/ActionBar/index.tsx index 5068ee77f..742b3afc7 100644 --- a/src/component/Task/component/ActionBar/index.tsx +++ b/src/component/Task/component/ActionBar/index.tsx @@ -238,15 +238,26 @@ const ActionBar: React.FC = inject( const editCycleTask = async () => { props?.onClose?.(); - if (task?.type === TaskType.DATA_ARCHIVE) { - props.modalStore.changeDataArchiveModal(true, { - id: task?.id, - type: 'EDIT', - }); - } else { - props.modalStore.changeCreateSQLPlanTaskModal(true, { - id: task?.id, - }); + switch (task?.type) { + case TaskType.DATA_ARCHIVE: { + props.modalStore.changeDataArchiveModal(true, { + id: task?.id, + type: 'EDIT', + }); + break; + } + case TaskType.DATA_DELETE: { + props.modalStore.changeDataClearModal(true, { + id: task?.id, + type: 'EDIT', + }); + break; + } + default: { + props.modalStore.changeCreateSQLPlanTaskModal(true, { + id: task?.id, + }); + } } }; @@ -904,7 +915,7 @@ const ActionBar: React.FC = inject( tools = [viewBtn]; } // 仅 sql 计划 & 数据归档支持编辑 - if (![TaskType.SQL_PLAN, TaskType.DATA_ARCHIVE].includes(task?.type)) { + if (![TaskType.SQL_PLAN, TaskType.DATA_ARCHIVE, TaskType.DATA_DELETE].includes(task?.type)) { tools = tools.filter((item) => item.key !== 'edit'); } return tools; From 937abfaeb85b95eb821c81f9e5fd3e01c546201d Mon Sep 17 00:00:00 2001 From: xiaokang Date: Fri, 26 Jul 2024 13:46:09 +0800 Subject: [PATCH 18/20] chore: mds sync --- src/locales/must/strings/en-US.json | 197 ++++++++++++++-- src/locales/must/strings/zh-CN.json | 335 +++++++++++++--------------- src/locales/must/strings/zh-TW.json | 13 -- 3 files changed, 339 insertions(+), 206 deletions(-) diff --git a/src/locales/must/strings/en-US.json b/src/locales/must/strings/en-US.json index c9cc81135..144fd6fa1 100644 --- a/src/locales/must/strings/en-US.json +++ b/src/locales/must/strings/en-US.json @@ -2565,7 +2565,6 @@ "odc.AlterDdlTask.CreateModal.TaskErrorHandling": "Task Error Handling Method", "odc.DataClearTask.DetailContent.TaskType": "Task Type", "odc.ResourceTree.Nodes.table.Partition": "Partition", - "odc.Project.User.Edit": "Edit", "odc.SSO.SSODetailDrawer.Close": "Close", "odc.component.SelectTransfer.CountItemSelected": "{count} Selected", "odc.Workspace.ActivityBar.type.Database": "Database", @@ -3492,7 +3491,7 @@ "odc.src.page.Auth.Autoauth.component.FormModal.ProjectRole": "Project Role", "odc.src.component.Task.AsyncTask.DetailContent.ExecutionTime": "Execution time", "odc.src.component.Task.ResultSetExportTask.DetailContent.EmptyStringTurnsToEmpty": "Empty string to null value", - "odc.src.component.Task.ResultSetExportTask.DetailContent.Type": "Ticket Type", + "odc.src.component.Task.ResultSetExportTask.DetailContent.Type": "Task Type", "odc.src.component.Task.ResultSetExportTask.CreateModal.NewlyBuilt": "New", "odc.src.component.Task.DataArchiveTask.CreateModal.TaskSetting": "Task Settings", "odc.src.component.Task.DataArchiveTask.DetailContent.InsertionStrategy": "Insert Policy", @@ -4220,7 +4219,6 @@ "src.page.Secure.Env.components.EECB6084": "Cancel", "src.page.Workspace.components.SQLResultSet.5008F988": "Database Name", "src.page.Project.User.ManageModal.UserAuthList.AD0486C8": "Please enter", - "src.page.Workspace.components.SQLResultSet.0B7D4FBE": "Apply", "src.component.ODCSetting.config.F785B55E": "Fetch Result Set Column Information", "src.page.Project.User.ManageModal.CreateAuth.779234F2": "Cancel", "src.component.Task.StructureComparisonTask.CreateModal.FBBFFC4C": "The description cannot exceed 200 characters in length.", @@ -4348,11 +4346,9 @@ "src.component.Task.PartitionTask.CreateModal.05B817DF": "Please enter the timeout value.", "src.component.Task.PartitionTask.CreateModal.6C651A64": "Please select the error handling method for the task.", "src.component.Task.ApplyPermission.CreateModal.B35D50C9": "Able to manage sensitive columns in the project in addition to the privileges of a participant", - "src.page.Project.User.ManageModal.1DCD8093": "Ticket Application", "src.page.Project.User.ManageModal.2DDCB471": "Change", "src.page.Project.User.ManageModal.B7377F46": "Once revoked, the operation cannot be undone.", "src.page.Project.User.ManageModal.Status.F7C8A70D": "Active", - "src.component.SQLConfig.C03B2372": "Enable End-to-end Trace Diagnostics", "src.page.Secure.Record.RecordPage.C96CBA29": "Apply for Database Permissions", "src.page.Secure.Record.RecordPage.FE7177CE": "Add Database Permission", "src.page.Secure.Record.RecordPage.BBF6BE0C": "Revoke Database Permission", @@ -4367,7 +4363,6 @@ "src.page.Secure.Env.components.60756A4B": "The environment has been disabled.", "src.component.helpDoc.4961AEB2": "You can reference and modify the SQL check and SQL window specifications from an existing environment", "src.component.Task.ApplyPermission.CreateModal.211C9AC8": "Able to manage sensitive columns, and add or remove databases in addition to the privileges of a developer", - "src.page.Project.User.ManageModal.211FFE62": "Manage Database Permissions", "src.page.Project.User.ManageModal.TaskApplyList.B805DCE9": "Expired On", "src.page.Project.User.ManageModal.Status.F648282E": "Expired", "src.component.SQLConfig.2F1AC452": "Continue Execution on Error", @@ -4378,7 +4373,6 @@ "src.component.Task.PartitionTask.CreateModal.BE341FCE": "Customize Deletion Strategy Execution Period", "src.component.Task.PartitionTask.CreateModal.0A49F493": "Hours", "src.page.Secure.Env.48529F6E": "All Environments", - "src.page.Workspace.components.SQLResultSet.52CCC188": "Missing permissions for the following databases. Please apply for the permissions first.", "src.page.Project.User.ManageModal.TaskApplyList.75F749A1": "Revoke", "src.page.ExternalIntegration.SSO.NewSSODrawerButton.SSOForm.19909602": "Reset Time for Login Attempts", "src.component.Task.PartitionTask.CreateModal.E454F701": "Ignore Error and Continue", @@ -4427,7 +4421,6 @@ "src.page.Secure.Env.65EAAB75": "Are you sure you want to delete this environment?", "src.page.Secure.Env.components.351C7EB6": "Please select the referenced environment.", "src.page.Secure.Env.components.A4A3A31E": "Disable", - "src.component.helpDoc.5373CF9E": "Permission to create tickets for database changes (including import, mock data, database change, shadow table synchronization, SQL plans, partitioning plans, data archiving, and data cleaning), and permission to execute change statements (SQL window's ability to execute changes is constrained by security specifications)", "src.page.Datasource.Datasource.NewDatasourceDrawer.Form.Account.C21B3C92": "Role", "src.component.Task.component.ActionBar.F20AAC3F": "The file download link has expired. Please initiate a new ticket.", "src.component.Task.PartitionTask.DetailContent.477F07A5": "Execution Timeout", @@ -4483,7 +4476,6 @@ "src.component.Crontab.D7390DC8": " Execution Schedule", "src.component.Task.component.PartitionPolicyTable.274DB973": "Enabled", "src.component.Task.component.PartitionPolicyTable.AB027BA5": "Enabled", - "src.page.Project.User.26C36450": "Manage Database Permissions", "src.component.Task.DataMockerTask.CreateModal.2C3DF5A5": "Create Mock Data Ticket", "src.component.Task.component.PartitionPolicyTable.15852854": "Partitioned Table", "src.page.Secure.Env.components.63B256F5": "The description cannot exceed 200 characters.", @@ -4755,7 +4747,6 @@ "src.component.Task.component.CommonDetailModal.D9ACA50C": "Processing Condition", "src.component.Task.DataClearTask.DetailContent.D4D1227C": "Specify Task Duration", "src.page.Datasource.Info.D30F985C": "Administrator", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.03B6F86A": "Search Databases", "src.page.Workspace.components.SQLResultSet.CB2CF731": "Result Details", "src.page.Project.Database.components.DatabaseOwnerSelect.tsx.2882064F": "No Admin", "src.component.Task.MutipleAsyncTask.DetailContent.439EBA2B": "Execution Timeout", @@ -4770,21 +4761,17 @@ "src.component.Button.Reload.CC20653B": "Refresh", "src.component.Task.component.CommonDetailModal.403574A6": "Ended At", "src.component.Task.component.SynchronizationItem.ABA6445B": "Sync Scope", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.69106FDA": "All Databases", "src.page.Workspace.SideBar.ResourceTree.TreeNodeMenu.config.1599957C": "Last Sync: ", "src.page.Project.Database.components.DatabaseOwnerSelect.tsx.34B8A74A": "The database administrator is responsible for the database and tables and can be referenced during the approval workflow.", "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.E2C1F722": "Request Permission", "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.D45537CC": " results displayed", "src.page.Workspace.SideBar.ResourceTree.TreeNodeMenu.config.A32BC9F9": "Syncing metadata, please wait...", "src.constant.8D87AF25": "Columns", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.D7B63CB7": "Open SQL Window", "src.page.Workspace.SideBar.ResourceTree.TreeNodeMenu.config.8485C0D3": "Sync Metadata", "src.component.Task.component.SynchronizationItem.3B43C19D": "Synchronize Source and Target Table Schemas", "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.EF45DCA4": "Search Tables, Columns, Views, etc.", "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.35B21489": "Columns", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.9F4C3737": "All Databases", "src.page.Workspace.components.SQLResultSet.4F0CD429": "Database", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.0D1BC60D": "View More", "src.component.Task.component.TaskdurationItem.7B7A6912": "If the task exceeds the specified duration, it will pause and wait for the next schedule.", "src.component.Task.component.CommonDetailModal.99A2CD95": "Table Name", "src.page.Project.Database.ChangeOwnerModal.2EFFDBF5": "Assign Database Admin", @@ -4903,5 +4890,185 @@ "src.component.Task.MutipleAsyncTask.components.Template.6BC97AE1": "Failed to update the template", "src.component.Task.MutipleAsyncTask.components.Template.869B1F0B": "OK", "src.component.Task.MutipleAsyncTask.CreateModal.51536A7D": "At least 2 databases are required.", - "src.constant.0C73ED6E": "Create Batch Database Change Task" + "src.constant.0C73ED6E": "Create Batch Database Change Task", + "src.component.ProfileFlow.customComponents.3057F753": "Zoom In", + "src.page.Project.User.ManageModal.Table.CreateAuth.9C0612BE": "Permission Expiration Policy", + "src.component.Task.ApplyTablePermission.CreateModal.BC4488C7": "Never Expires", + "src.component.Task.ApplyTablePermission.CreateModal.7DDD3557": "Table Permission Application", + "src.page.Workspace.components.SQLResultSet.44FA6D77": "Apply for Table Permissions", + "src.constant.77379A9D": "Reject Table Permission Application", + "src.constant.6AF8D624": "Stop Table Permission Application", + "src.component.Task.ApplyTablePermission.CreateModal.AB5C56FA": "Create", + "src.page.Project.User.ManageModal.Table.CreateAuth.E589EDA6": "Please select", + "src.page.Project.User.ManageModal.Table.UserAuthList.012DC13E": "Table", + "src.component.Task.ApplyTablePermission.CreateModal.82C8FE0E": "Query", + "src.page.Project.User.ManageModal.Table.Status.F4074114": "Expired", + "src.component.Task.ApplyTablePermission.DetailContent.FB4B30E0": "Permission Expiration Policy", + "src.page.Project.User.ManageModal.Table.2E8F3BF1": "Operation successful", + "src.constant.6F5D437C": "Apply for Table Permissions", + "src.page.Workspace.components.SQLResultSet.455E73CE": "Unable to apply for table permissions: Not a member of the database's project.", + "src.component.ProfileFlow.customComponents.66C75D66": "Top 5 in Duration", + "src.component.Task.ApplyTablePermission.DetailContent.2740E99B": "Created By", + "src.page.Project.User.ManageModal.Table.070B09D0": "Update", + "src.component.ExecuteSqlDetailModal.FB8B6D0B": "List View", + "src.component.SQLConfig.1A5CCA98": "SQL Execution", + "src.component.Task.AlterDdlTask.DetailContent.FE4166B2": "Row Limit", + "src.page.Project.User.ManageModal.Table.CreateAuth.5FD0D70D": "Permission Type", + "src.component.ProfileFlow.customComponents.B32C7D03": "Fit Width", + "src.constant.16E15B2D": "Table Permission Management", + "src.page.Project.User.ManageModal.Table.TaskApplyList.8BA76A12": "This permission will be revoked if it is expired for more than three months", + "src.page.Project.User.ManageModal.81C0C3D0": "Table Permission", + "src.page.Workspace.components.SQLResultSet.DDB9284D": "Missing corresponding permissions for the following database tables. Please apply for permissions first.", + "src.constant.7CFF0BF7": "Create Table Permission Application", + "src.component.Task.ApplyTablePermission.CreateModal.DC9A3E27": "Please select", + "src.component.Task.component.TableSelecter.9995622C": "{selectedTreeDataCount} Selected", + "src.page.Project.User.3AE67EC2": "Manage Permission", + "src.page.Project.User.ManageModal.Table.TaskApplyList.8F13E12E": "Table", + "src.constant.E15D0656": "Add Table Permission Management", + "src.component.ProfileFlow.customComponents.2AB1AD68": "Node Execution Overview", + "src.component.Task.ApplyTablePermission.CreateModal.77D8F632": "Please select a project.", + "src.component.Task.ApplyTablePermission.CreateModal.A206D2B4": "Please select", + "src.component.Task.component.TableSelecter.E836E630": "Select Table", + "src.page.Project.User.ManageModal.Table.UserAuthList.A02EBD96": "Expired On", + "src.component.ProfileFlow.customComponents.7812E9AE": "{nodeName} Total", + "src.component.ExecuteSqlDetailModal.68BF8995": "Copy", + "src.component.Task.ApplyTablePermission.CreateModal.BC9BE9CE": "Please select", + "src.page.Project.User.ManageModal.Table.C5AD844C": "Cancel", + "src.page.Project.User.ManageModal.Table.CreateAuth.705DD31B": "Please select", + "src.component.Task.ApplyTablePermission.DetailContent.6C1A740A": "Apply for Table Permissions", + "src.component.Task.ApplyTablePermission.CreateModal.11B637AA": "Are you sure you want to cancel applying for table permissions?", + "src.component.Task.ApplyTablePermission.CreateModal.3BCFDC84": "Permission Type", + "src.page.Project.User.ManageModal.Table.CreateAuth.F34065CE": "Please select", + "src.page.Workspace.components.SQLExplain.E0965DAC": "Actual Rows", + "src.component.Task.ApplyTablePermission.CreateModal.472B1735": "Permission Expiration Policy", + "src.page.Workspace.components.SQLResultSet.9BDFC99E": "Current Trace ID: ", + "src.component.Task.D7396534": "Table Permission Application", + "src.constant.A016D539": "Apply for Table Permissions", + "src.component.ExecuteSqlDetailModal.A944EAD1": "Execution Plan Details", + "src.component.ExecuteSqlDetailModal.D47F3410": "End-to-end Trace Diagnostics", + "src.component.ExecuteSqlDetailModal.0B221F0A": "End-to-end Trace Diagnostics", + "src.component.Task.ApplyTablePermission.DetailContent.04825B86": "Data Source", + "src.component.Task.ApplyTablePermission.DetailContent.64239A78": "Permission Type", + "src.page.Project.User.ManageModal.Table.Status.3F56D2D7": "Expiring Soon", + "src.page.Project.User.ManageModal.A4F73E8C": "Manage Permission", + "src.page.Project.User.ManageModal.Table.TaskApplyList.C0ABE640": "Please enter", + "src.page.Project.User.ManageModal.Table.UserAuthList.A644DA9A": "Please enter", + "src.component.ExecuteSqlDetailModal.5B8FA08A": "Execution Profile for Trace ID \"{modalStoreExecuteSqlDetailDataTraceId}\"", + "src.component.ExecuteSqlDetailModal.D6886430": "The current SQL statement is being executed. You can view it after the execution is complete.", + "src.page.Project.User.ManageModal.Table.CED524BB": "Ticket Application", + "src.component.ProfileFlow.customComponents.5FAB7852": "SQL Execution Overview", + "src.page.Workspace.components.SQLResultSet.3BA312DB": "Unable to apply for table permissions: The database to which the table belongs is not assigned to any project.", + "src.component.ProfileFlow.customComponents.0E9A817E": "I/O Statistics", + "src.page.Project.User.ManageModal.Table.UserAuthList.12F7A572": "Permission Type", + "src.page.Project.User.ManageModal.Table.TaskApplyList.F38F822F": "Please enter", + "src.page.Project.User.ManageModal.Table.7E23C899": "Once revoked, the operation cannot be undone.", + "src.page.Project.User.ManageModal.Table.CreateAuth.6D949D9E": "End Date", + "src.constant.EB58961E": "Approve Table Permission Application", + "src.component.ProfileFlow.customComponents.89BEEE9E": "Actual Size", + "src.page.Project.User.ManageModal.Table.CreateAuth.680C9CFF": "Create Authorization", + "src.page.Project.User.ManageModal.Table.TaskApplyList.3B1CD3B1": "Please enter", + "src.page.Workspace.components.SQLResultSet.73CA790E": "Table", + "src.component.ProfileFlow.C4791007": "Sort by Memory Usage", + "src.component.helpDoc.2207D608": "Permission to create tickets for database changes (including import, mock data, database change, shadow table synchronization, SQL plans, partitioning plans, data archiving, and data cleaning), and permission to execute change statements in the SQL window (SQL window's ability to execute changes is constrained by security specifications)", + "src.constant.7DC84DC5": "Revoke Table Permission Management", + "src.constant.B59F26E3": "Table Permission Management", + "src.page.Project.User.ManageModal.Table.UserAuthList.26E39901": "Please enter", + "src.component.Task.ApplyTablePermission.CreateModal.705AE4C3": "Never Expires", + "src.component.Task.ApplyTablePermission.CreateModal.0D449988": "Ticket created successfully", + "src.page.Project.User.ManageModal.Table.TaskApplyList.88257A65": "Please enter", + "src.page.Project.User.ManageModal.Table.TaskApplyList.9CDE663F": "Revoke", + "src.component.Task.ApplyTablePermission.CreateModal.E26609A0": "Export", + "src.component.Task.ApplyTablePermission.DetailContent.9E007486": "Database", + "src.component.ProfileFlow.C966E64A": "Sort by DB Duration", + "src.page.Project.User.ManageModal.Table.92D4CD12": "User Authorization", + "src.page.Project.User.ManageModal.Table.CreateAuth.0635BFD4": "Database", + "src.page.Project.User.ManageModal.Table.CreateAuth.9F6C8075": "Cancel", + "src.page.Workspace.components.DDLResultSet.0B7666A0": "Total Duration: {DBCostTime}", + "src.page.Workspace.components.DDLResultSet.22F863D6": "Execution Profile", + "src.component.Task.ApplyTablePermission.CreateModal.8B90F708": "Please enter the reason for the application", + "src.component.ExecuteSqlDetailModal.052B3894": "Text View", + "src.component.ExecuteSqlDetailModal.14585364": "Plan Statistics", + "src.component.ExecuteSqlDetailModal.69A79B8E": "Execution Details", + "src.component.ProfileFlow.6B28FD92": "Sort by Rows Returned", + "src.component.Task.ApplyTablePermission.CreateModal.55D2BC4D": "Please select", + "src.component.Task.ApplyTablePermission.CreateModal.72AFD173": "Please select", + "src.component.Task.component.TaskTable.3236150E": "Table Permission Application", + "src.component.ODCSetting.CFC0C3E8": "Shortcut key conflict, please try again.", + "src.page.Project.User.ManageModal.Table.UserAuthList.E7BFBCC8": "Please enter", + "src.page.Project.User.ManageModal.Table.TaskApplyList.AEDC316B": "Batch Revoke", + "src.component.ExecuteSqlDetailModal.BF467954": "Execution Plan", + "src.component.Task.component.TableSelecter.A56A8B2D": "Are you sure you want to clear the selected objects?", + "src.page.Project.User.ManageModal.Table.TaskApplyList.9C75241F": "Permission Type", + "src.page.Project.User.ManageModal.Table.E297BA02": "OK", + "src.page.Project.User.ManageModal.Table.TaskApplyList.EC52BFBC": "Expired On", + "src.page.Project.User.ManageModal.Table.UserAuthList.DE0222B0": "Batch Revoke", + "src.page.Workspace.components.SQLResultSet.4035B347": "View Execution Profile", + "src.component.ExecuteSqlDetailModal.97782AAE": "Text View", + "src.component.ExecuteSqlDetailModal.D11F8620": "Plan Statistics", + "src.component.helpDoc.618FF120": "Permission to create tickets for database changes (including import, mock data, database change, shadow table synchronization, SQL plans, partitioning plans, data archiving, and data cleaning), and permission to execute change statements in the SQL window (SQL window's ability to execute changes is constrained by security specifications)", + "src.component.Task.ApplyTablePermission.CreateModal.D6E6AE6E": "1 Year", + "src.page.Project.User.ManageModal.946C38DA": "Database Permission", + "src.page.Project.User.ManageModal.Table.CreateAuth.1D45C292": "Please select", + "src.component.ExecuteSqlDetailModal.8A207B02": "Execution Plan", + "src.component.Task.ApplyTablePermission.CreateModal.78B63403": "Please select", + "src.component.Task.ApplyTablePermission.CreateModal.95EB40E7": "Cancel", + "src.page.Workspace.components.DDLResultSet.E32AB474": "SQL Execution Profile", + "src.page.Workspace.components.SQLResultSet.D3F95049": "Terminate", + "src.component.Task.ApplyTablePermission.CreateModal.06672C99": "End Date", + "src.component.Task.ApplyTablePermission.CreateModal.DEF52B23": "join a project", + "src.page.Project.User.ManageModal.Table.UserAuthList.804D4C5D": "Revoke", + "src.page.Project.User.ManageModal.Table.A3D05C57": "Query", + "src.page.Project.User.ManageModal.Table.UserAuthList.41C6A809": "Data Source", + "src.component.Task.AlterDdlTask.DetailContent.45E8ACBB": "Data Size Limit", + "src.component.Task.ApplyTablePermission.CreateModal.76C327CA": "6 Months", + "src.component.ProfileFlow.customComponents.C22AD2CB": "{dataName} Total", + "src.component.Task.ApplyTablePermission.CreateModal.DFADB0AB": "30 Days", + "src.page.Project.User.ManageModal.Table.CreateAuth.994F4BA8": "Are you sure you want to cancel creating the authorization?", + "src.page.Project.User.ManageModal.Table.TaskApplyList.BC1F3BBD": "Actions", + "src.component.ExecuteSqlDetailModal.2129C7A3": "List View", + "src.page.Project.User.ManageModal.Table.UserAuthList.673AB3C0": "This permission will be revoked if it is expired for more than three months", + "src.component.helpDoc.5D9071C2": "Permission to execute queries within the SQL window", + "src.component.ExecuteSqlDetailModal.0DAD5E44": "Tree View", + "src.component.ProfileFlow.customComponents.E406DF5A": "I/O Statistics", + "src.component.Task.ApplyTablePermission.CreateModal.524AEC5C": "Project", + "src.component.Task.ApplyTablePermission.DetailContent.658E0B9E": "Table", + "src.component.Task.ApplyTablePermission.DetailContent.8CEA0610": "Ticket No.", + "src.component.helpDoc.A0958282": "Permission to create import and export result set tickets", + "src.page.Project.User.ManageModal.Database.1007E283": "Ticket Application", + "src.page.Project.User.ManageModal.Table.D53578CD": "Export", + "src.component.Task.ApplyTablePermission.CreateModal.B2D5729B": "Reason for Application", + "src.component.Task.ApplyTablePermission.CreateModal.D802CFB3": "Update", + "src.component.Task.ApplyTablePermission.CreateModal.F357A49C": "7 Days", + "src.component.Task.ApplyTablePermission.DetailContent.55EE2A17": "Reason for Application", + "src.page.Project.User.D1A92D2A": "Edit Role", + "src.component.ProfileFlow.customComponents.F4F9EB2A": "Data Volume: ", + "src.component.Task.ApplyTablePermission.DetailContent.3FE43B61": "Table", + "src.page.Project.User.ManageModal.Table.TaskApplyList.E80C6744": "Data Source", + "src.component.ExecuteSqlDetailModal.38BDF819": "Execution Details", + "src.component.Task.ApplyTablePermission.CreateModal.319F7B70": "The reason for the application cannot exceed 200 characters.", + "src.page.Workspace.components.SQLExplain.F472322D": "Estimated Cost", + "src.component.Task.ApplyTablePermission.DetailContent.7EEDDF7A": "Created At", + "src.page.Project.User.ManageModal.Table.CreateAuth.B6C313E1": "Authorization created successfully", + "src.component.Task.ApplyTablePermission.DetailContent.32776504": "Project", + "src.component.ProfileFlow.customComponents.12BFFE42": "Zoom Out", + "src.component.Task.ApplyTablePermission.CreateModal.F4D36D95": "Custom", + "src.component.Task.ApplyTablePermission.DetailContent.4B4A4E81": "Task Type", + "src.component.ExecuteSqlDetailModal.3AAA9DF9": "Trace View", + "src.component.Task.ApplyTablePermission.CreateModal.A004AEF5": "3 Years", + "src.component.Task.ApplyTablePermission.CreateModal.A92A0F62": "Please enter the reason for the application", + "src.page.Project.User.ManageModal.Table.UserAuthList.40DFC3A2": "Status", + "src.component.ProfileFlow.customComponents.422173C9": "Node Attribute", + "src.component.Task.ApplyTablePermission.CreateModal.8A62AFC4": "Table", + "src.page.Project.User.ManageModal.Table.TaskApplyList.D8B38717": "Status", + "src.component.ExecuteSqlDetailModal.D1E28701": "List View", + "src.component.Task.ApplyTablePermission.CreateModal.E06F8910": "90 Days", + "src.page.Project.User.ManageModal.Table.CreateAuth.69B76107": "Add Table Authorization", + "src.page.Workspace.components.SQLResultSet.6CF6ACD1": "Apply for Database Permissions", + "src.page.Project.User.ManageModal.Table.TaskApplyList.C0E75C97": "Ticket No.", + "src.component.Task.component.TableSelecter.C6AF0504": "Clear", + "src.page.Project.User.ManageModal.Table.CreateAuth.35C819CB": "Create", + "src.page.Project.User.ManageModal.Table.Status.FBAD95E6": "Active", + "src.page.Project.User.ManageModal.Table.UserAuthList.D245E1FF": "Actions", + "src.page.Workspace.components.SQLExplain.E0AB0E4C": "Actual Cost", + "src.component.Task.ApplyTablePermission.CreateModal.8955ACFE": "No projects available, please first " } diff --git a/src/locales/must/strings/zh-CN.json b/src/locales/must/strings/zh-CN.json index 069d84d02..307e3dc24 100644 --- a/src/locales/must/strings/zh-CN.json +++ b/src/locales/must/strings/zh-CN.json @@ -2472,7 +2472,6 @@ "odc.PermissionApplication.CreateModal.Custom": "自定义", "odc.SensitiveColumn.components.ScanForm.ScanningTheScanningTimeMay": "正在扫描中。扫描时间可能较长请耐心等待…", "odc.DataClearTask.DetailContent.TaskType": "任务类型", - "odc.Project.User.Edit": "编辑", "odc.component.SelectTransfer.CountItemSelected": "已选 {count} 项", "odc.Project.Project.AllProjects": "全部项目", "odc.ExternalIntegration.SSO.Name": "名称", @@ -3872,7 +3871,6 @@ "src.component.Task.ApplyDatabasePermission.CreateModal.B0247EF7": "请输入原因描述", "src.page.Project.User.ManageModal.B7377F46": "回收后不可撤回", "src.component.Task.StructureComparisonTask.CreateModal.A8C717F6": "取消", - "src.page.Project.User.ManageModal.1DCD8093": "工单授权", "src.component.helpDoc.AEEC5916": "关于注意事项第 3 条,由您指定将要锁定的账号,是为了保障表名切换期间数据一致性的同时尽可能降低对业务的影响。请您确保指定账号的准确性,若您未指定任何账号,ODC 将不会进行任何账号锁定及 Kill Session 操作,切换期间数据的一致性将需要由您来保障。", "src.component.Task.ApplyDatabasePermission.DetailContent.2C812515": "创建人", "src.component.EditorToolBar.actions.3BDAC881": "运行当前语句 ", @@ -3904,7 +3902,6 @@ "src.page.Project.User.ManageModal.CreateAuth.8BBA1BE1": "确认取消新增授权吗?", "src.component.ODCSetting.AB9A3FA4": "保存", "src.component.Task.component.PartitionPolicyFormTable.D97787FE": "表达式", - "src.page.Workspace.components.SQLResultSet.52CCC188": "缺少以下数据库对应权限,请先申请库权限", "src.page.Project.Notification.components.3380A1F2": "工单事件", "src.component.ODCSetting.654799D1": "已恢复到默认配置", "src.page.Project.Notification.components.B65E55FA": "删除", @@ -4141,7 +4138,6 @@ "src.page.Secure.Env.components.B264828F": "描述", "src.page.Secure.Env.components.B98439D0": "请选择标签样式", "src.page.Project.Notification.components.56685F5A": "消息内容", - "src.component.SQLConfig.C03B2372": "开启全链路诊断", "src.component.Task.ApplyDatabasePermission.CreateModal.8890FE39": "查询", "src.page.Workspace.components.SQLResultSet.D12A3FE9": "日志", "src.component.ODCSetting.config.BE020520": "关闭", @@ -4153,10 +4149,8 @@ "src.component.Task.StructureComparisonTask.CreateModal.45DB3909": "新建结构比对", "src.component.Task.PartitionTask.CreateModal.E454F701": "忽略错误继续任务", "src.component.Task.StructureComparisonTask.CreateModal.67E284BD": "描述不超过 200 个字符", - "src.page.Project.User.ManageModal.211FFE62": "管理库权限", "src.page.Project.Notification.components.A50DD7D6": "测试消息发送成功!", "src.component.Task.9B79BD20": "自动执行", - "src.page.Project.User.26C36450": "管理库权限", "src.page.ExternalIntegration.SSO.NewSSODrawerButton.SSOForm.2E3212A5": "搜索群组查询时使用的起始点或基准点", "src.component.Task.PartitionTask.DetailContent.5FC1C8E8": "创建策略执行周期", "src.component.Task.ApplyDatabasePermission.CreateModal.1D6E4447": "新建", @@ -4349,7 +4343,6 @@ "src.component.Task.ApplyPermission.CreateModal.ED069A06": "允许查看项目基本信息,并自助申请库权限和提交工单", "src.component.Task.StructureComparisonTask.DetailContent.734F1D69": "进行查看", "src.page.Project.Notification.components.7C80562E": "请选择通道类型", - "src.component.helpDoc.5373CF9E": "新建数据库变更类工单(包括导入、模拟数据、数据库变更、影子表同步、SQL 计划、分区计划、数据归档和数据清理)的权限和执行变更语句的权限(SQL 窗口可否执行变更受安全规范配置约束)", "src.page.Project.Notification.components.76BA6F01": "通道名称", "src.component.Task.component.PartitionPolicyFormTable.E5DA1FA4": "请输入表达式", "src.component.Task.StructureComparisonTask.DetailContent.9DFA1E59": "删除表、索引、字段等风险变更 SQL 已修改为注释,如需执行,需手动修改 SQL", @@ -4464,7 +4457,6 @@ "src.page.Project.User.ManageModal.UserAuthList.AD0486C8": "请输入", "src.page.Project.User.ManageModal.CreateAuth.52A18A2F": "结束日期", "src.page.Project.User.ManageModal.28BC85BF": "用户授权", - "src.page.Workspace.components.SQLResultSet.0B7D4FBE": "申请", "src.page.Project.User.ManageModal.2DDCB471": "变更", "src.page.Project.Notification.components.099A08A2": "推送消息模版", "src.component.helpDoc.843310FE": "允许查看项目基本信息,并自助申请库权限和提交工单", @@ -4649,7 +4641,6 @@ "src.component.Task.component.PartitionTextArea.51B4FB10": "请输入分区名称,多个分区间用英文逗号隔开", "src.component.Task.MutipleAsyncTask.DetailContent.5FA1154F": "查询结果限制", "src.component.Task.DataClearTask.CreateModal.76AAE59E": "指定分区", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.0D1BC60D": "查看更多", "src.component.Task.DataArchiveTask.CreateModal.94BCB0E1": "目标表", "src.component.Task.MutipleAsyncTask.DetailContent.B6FF5C81": "所属项目", "src.component.Task.MutipleAsyncTask.DetailContent.9E276D6A": "执行方式", @@ -4705,7 +4696,6 @@ "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.ED30EF41": "全部", "src.component.Task.MutipleAsyncTask.CreateModal.2A98246D": "请输入", "src.component.Task.MutipleAsyncTask.DetailContent.B29F6A70": "忽略错误继续执行", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.D7B63CB7": "打开 SQL 窗口", "src.component.Task.MutipleAsyncTask.DetailContent.A6BC0EA9": "数据库详情", "src.component.Task.MutipleAsyncTask.DetailContent.7A621BB2": "风险等级", "src.component.Task.MutipleAsyncTask.CreateModal.3FBE491C": "取消", @@ -4715,7 +4705,6 @@ "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.E2C1F722": "申请表权限", "src.component.Task.DataClearTask.CreateModal.7E1F34E7": "目标表", "src.component.Task.MutipleAsyncTask.CreateModal.C3F2CC4E": "请选择SQL 执行处理", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.03B6F86A": "搜索数据库", "src.d.ts.90979FA9": "唯一性约束", "src.component.Task.MutipleAsyncTask.DetailContent.10038C15": "SQL 内容", "src.component.Task.MutipleAsyncTask.CreateModal.B13CF0A4": "确认", @@ -4723,7 +4712,6 @@ "src.component.Task.component.CommonDetailModal.99A2CD95": "表名", "src.component.Task.MutipleAsyncTask.CreateModal.DA9F492E": "可针对 Update、Delete 语句自动生成回滚方案,并以附件形式提供下载,该方案仅供参考", "src.component.Task.component.SynchronizationItem.3B43C19D": "开启目标表结构同步", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.69106FDA": "全部数据库", "src.component.Task.MutipleAsyncTask.CreateModal.533E6CE4": "点击或将多个文件拖拽到这里上传", "src.component.Task.MutipleAsyncTask.CreateModal.450BFD6C": "小时", "src.d.ts.071AA07B": "索引", @@ -4772,7 +4760,6 @@ "src.component.Task.MutipleAsyncTask.CreateModal.FF497D5B": "请输入分隔符", "src.page.Project.Database.components.DatabaseOwnerSelect.tsx.2882064F": "不设置管理员", "src.page.Project.Database.ChangeOwnerModal.22191CF9": "修改数据库管理员成功", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.9F4C3737": "全部数据库", "src.component.Task.MutipleAsyncTask.DetailContent.69E1BA99": "查看详情", "src.component.Task.MutipleAsyncTask.CreateModal.50FF5C74": "选择库并设置执行顺序;不同节点将依次执行变更,同一节点内的库将同时变更", "src.component.Task.MutipleAsyncTask.CreateModal.A8CB0B6F": "手动执行", @@ -4905,192 +4892,184 @@ "src.component.Task.MutipleAsyncTask.components.Template.8C08DC21": "所属项目", "src.component.Task.MutipleAsyncTask.components.Template.F76B71CA": "模版保存失败", "src.component.Task.MutipleAsyncTask.components.Template.7F26EEEC": "编辑模版", - "src.page.Workspace.components.SQLResultSet.A9F2E27A": "共有", - "src.page.Workspace.components.SQLResultSet.097EAD0C": "个 SQL 执行,当前正在执行第", - "src.page.Workspace.components.SQLResultSet.0B5B598B": "个", - "src.page.Workspace.components.SQLResultSet.9BDFC99E": "当前 Trace ID:", - "src.page.Workspace.components.SQLResultSet.4035B347": "查看执行画像", - "src.page.Workspace.components.SQLResultSet.D3F95049": "终 止", - "src.page.Workspace.components.SQLResultSet.73CA790E": "表", - "src.page.Workspace.components.SQLResultSet.455E73CE": "无法申请表权限:没有加入数据库所属项目", - "src.page.Workspace.components.SQLResultSet.3BA312DB": "无法申请表权限:表所属数据库没有归属项目", - "src.page.Workspace.components.SQLResultSet.6CF6ACD1": "申请库权限", + "src.component.Task.ApplyTablePermission.CreateModal.A92A0F62": "请输入原因描述", + "src.component.ExecuteSqlDetailModal.8A207B02": "执行计划", + "src.page.Project.User.ManageModal.Table.CreateAuth.69B76107": "新增表授权", + "src.component.Task.ApplyTablePermission.CreateModal.B2D5729B": "申请原因", + "src.component.ExecuteSqlDetailModal.3AAA9DF9": "Trace 视图", + "src.page.Project.User.ManageModal.Table.CreateAuth.35C819CB": "新建", + "src.constant.EB58961E": "同意申请表权限", + "src.component.Task.ApplyTablePermission.CreateModal.D802CFB3": "变更", + "src.component.Task.ApplyTablePermission.CreateModal.A004AEF5": "3 年", + "src.page.Project.User.D1A92D2A": "编辑角色", "src.page.Workspace.components.SQLResultSet.44FA6D77": "申请表权限", - "src.page.Workspace.components.SQLResultSet.DDB9284D": "缺少以下数据库表对应权限,请先申请权限", - "src.page.Workspace.components.SQLExplain.F472322D": "预估代价", - "src.page.Workspace.components.SQLExplain.E0965DAC": "实际行", + "src.component.ExecuteSqlDetailModal.0B221F0A": "全链路诊断", + "src.component.ProfileFlow.customComponents.12BFFE42": "缩小", + "src.page.Project.User.ManageModal.Table.UserAuthList.D245E1FF": "操作", + "src.component.ExecuteSqlDetailModal.A944EAD1": "执行计划详情", + "src.component.helpDoc.618FF120": "新建数据库变更类工单(包括导入、模拟数据、数据库变更、影子表同步、SQL 计划、分区计划、数据归档和数据清理)的权限和 SQL 窗口执行变更语句的权限(SQL 窗口可否执行变更受安全规范配置约束)", + "src.page.Project.User.ManageModal.Table.TaskApplyList.D8B38717": "状态", "src.page.Workspace.components.SQLExplain.E0AB0E4C": "实际代价", - "src.page.Workspace.components.DDLResultSet.E32AB474": "SQL 执行画像", - "src.page.Workspace.components.DDLResultSet.DBFC3F33": "支持 SQL 执行实时剖析,物理执行计划、全链路诊断也一段描述一段描述一段描述", - "src.page.Workspace.components.DDLResultSet.D7F6AF75": "我知道了", - "src.page.Workspace.components.DDLResultSet.22F863D6": "执行画像", - "src.page.Workspace.components.DDLResultSet.0B7666A0": "总耗时:{DBCostTime}", - "src.page.Project.User.3AE67EC2": "管理权限", - "src.page.Project.User.D1A92D2A": "编辑角色", - "src.page.Project.User.ManageModal.946C38DA": "库权限", - "src.page.Project.User.ManageModal.81C0C3D0": "表权限", - "src.page.Project.User.ManageModal.A4F73E8C": "管理权限", - "src.page.Project.User.ManageModal.Table.A3D05C57": "查询", - "src.page.Project.User.ManageModal.Table.D53578CD": "导出", - "src.page.Project.User.ManageModal.Table.070B09D0": "变更", - "src.page.Project.User.ManageModal.Table.7E23C899": "回收后不可撤回", - "src.page.Project.User.ManageModal.Table.C5AD844C": "取消", - "src.page.Project.User.ManageModal.Table.E297BA02": "确定", - "src.page.Project.User.ManageModal.Table.2E8F3BF1": "操作成功", - "src.page.Project.User.ManageModal.Table.CED524BB": "工单授权", - "src.page.Project.User.ManageModal.Table.92D4CD12": "用户授权", - "src.page.Project.User.ManageModal.Table.UserAuthList.9186B355": "数据库", - "src.page.Project.User.ManageModal.Table.UserAuthList.26E39901": "请输入", - "src.page.Project.User.ManageModal.Table.UserAuthList.012DC13E": "表", - "src.page.Project.User.ManageModal.Table.UserAuthList.E7BFBCC8": "请输入", - "src.page.Project.User.ManageModal.Table.UserAuthList.41C6A809": "所属数据源", - "src.page.Project.User.ManageModal.Table.UserAuthList.A644DA9A": "请输入", - "src.page.Project.User.ManageModal.Table.UserAuthList.12F7A572": "权限类型", - "src.page.Project.User.ManageModal.Table.UserAuthList.A02EBD96": "过期时间", + "src.component.Task.ApplyTablePermission.DetailContent.4B4A4E81": "任务类型", + "src.page.Project.User.ManageModal.Table.TaskApplyList.C0E75C97": "工单编号", + "src.page.Project.User.ManageModal.Table.UserAuthList.804D4C5D": "回收", + "src.component.Task.ApplyTablePermission.DetailContent.55EE2A17": "申请原因", + "src.component.Task.ApplyTablePermission.CreateModal.319F7B70": "申请原因不超过 200 个字符", + "src.component.Task.component.TableSelecter.C6AF0504": "清空", + "src.component.Task.ApplyTablePermission.DetailContent.32776504": "项目", + "src.component.Task.ApplyTablePermission.CreateModal.8A62AFC4": "表", + "src.component.Task.ApplyTablePermission.CreateModal.E06F8910": "90 天", "src.page.Project.User.ManageModal.Table.UserAuthList.40DFC3A2": "状态", - "src.page.Project.User.ManageModal.Table.UserAuthList.D245E1FF": "操作", + "src.component.Task.ApplyTablePermission.CreateModal.F4D36D95": "自定义", + "src.component.ExecuteSqlDetailModal.38BDF819": "执行详情", + "src.page.Project.User.ManageModal.Table.Status.FBAD95E6": "生效中", + "src.component.Task.ApplyTablePermission.CreateModal.F357A49C": "7 天", + "src.component.ExecuteSqlDetailModal.D1E28701": "列表视图", + "src.component.ExecuteSqlDetailModal.2129C7A3": "列表视图", "src.page.Project.User.ManageModal.Table.UserAuthList.673AB3C0": "过期超三个月后此权限将被清除", - "src.page.Project.User.ManageModal.Table.UserAuthList.804D4C5D": "回收", - "src.page.Project.User.ManageModal.Table.UserAuthList.DE0222B0": "批量回收", - "src.page.Project.User.ManageModal.Table.TaskApplyList.F9701758": "数据库", - "src.page.Project.User.ManageModal.Table.TaskApplyList.88257A65": "请输入", - "src.page.Project.User.ManageModal.Table.TaskApplyList.8F13E12E": "表", - "src.page.Project.User.ManageModal.Table.TaskApplyList.F38F822F": "请输入", - "src.page.Project.User.ManageModal.Table.TaskApplyList.E80C6744": "所属数据源", - "src.page.Project.User.ManageModal.Table.TaskApplyList.C0ABE640": "请输入", - "src.page.Project.User.ManageModal.Table.TaskApplyList.C0E75C97": "工单编号", - "src.page.Project.User.ManageModal.Table.TaskApplyList.3B1CD3B1": "请输入", + "src.page.Workspace.components.SQLResultSet.6CF6ACD1": "申请库权限", + "src.component.ProfileFlow.customComponents.422173C9": "节点属性", + "src.component.Task.ApplyTablePermission.CreateModal.DFADB0AB": "30 天", + "src.component.helpDoc.A0958282": "新建导入和导出结果集工单的权限", "src.page.Project.User.ManageModal.Table.TaskApplyList.9C75241F": "权限类型", - "src.page.Project.User.ManageModal.Table.TaskApplyList.EC52BFBC": "过期时间", - "src.page.Project.User.ManageModal.Table.TaskApplyList.D8B38717": "状态", - "src.page.Project.User.ManageModal.Table.TaskApplyList.BC1F3BBD": "操作", - "src.page.Project.User.ManageModal.Table.TaskApplyList.8BA76A12": "过期超三个月后此权限将被清除", - "src.page.Project.User.ManageModal.Table.TaskApplyList.9CDE663F": "回收", - "src.page.Project.User.ManageModal.Table.TaskApplyList.AEDC316B": "批量回收", - "src.page.Project.User.ManageModal.Table.Status.F4074114": "已过期", - "src.page.Project.User.ManageModal.Table.Status.3F56D2D7": "即将过期", - "src.page.Project.User.ManageModal.Table.Status.FBAD95E6": "生效中", - "src.page.Project.User.ManageModal.Table.CreateAuth.994F4BA8": "确认取消新增授权吗?", + "src.component.helpDoc.5D9071C2": "SQL窗口内执行查询语句的权限", + "src.page.Project.User.ManageModal.Table.UserAuthList.41C6A809": "所属数据源", + "src.page.Project.User.ManageModal.Table.UserAuthList.12F7A572": "权限类型", + "src.component.Task.ApplyTablePermission.CreateModal.DEF52B23": "加入项目", + "src.component.ProfileFlow.6B28FD92": "按吐行排序", + "src.component.ProfileFlow.C4791007": "按内存排序", + "src.component.ExecuteSqlDetailModal.68BF8995": "复制", "src.page.Project.User.ManageModal.Table.CreateAuth.B6C313E1": "新增授权成功!", - "src.page.Project.User.ManageModal.Table.CreateAuth.69B76107": "新增表授权", - "src.page.Project.User.ManageModal.Table.CreateAuth.680C9CFF": "新增授权", - "src.page.Project.User.ManageModal.Table.CreateAuth.9F6C8075": "取消", - "src.page.Project.User.ManageModal.Table.CreateAuth.35C819CB": "新建", - "src.page.Project.User.ManageModal.Table.CreateAuth.0635BFD4": "数据库", - "src.page.Project.User.ManageModal.Table.CreateAuth.5FD0D70D": "权限类型", - "src.page.Project.User.ManageModal.Table.CreateAuth.F34065CE": "请选择", - "src.page.Project.User.ManageModal.Table.CreateAuth.9C0612BE": "权限有效期", - "src.page.Project.User.ManageModal.Table.CreateAuth.705DD31B": "请选择", - "src.page.Project.User.ManageModal.Table.CreateAuth.1D45C292": "请选择", - "src.page.Project.User.ManageModal.Table.CreateAuth.6D949D9E": "结束日期", - "src.page.Project.User.ManageModal.Table.CreateAuth.E589EDA6": "请选择", - "src.page.Project.User.ManageModal.Database.1007E283": "工单授权", - "src.constant.A016D539": "申请表权限", + "src.page.Project.User.ManageModal.Table.CreateAuth.994F4BA8": "确认取消新增授权吗?", + "src.component.helpDoc.2207D608": "新建数据库变更类工单(包括导入、模拟数据、数据库变更、影子表同步、SQL 计划、分区计划、数据归档和数据清理)的权限和 SQL 窗口执行变更语句的权限(SQL 窗口可否执行变更受安全规范配置约束)", + "src.page.Project.User.ManageModal.Table.7E23C899": "回收后不可撤回", + "src.page.Project.User.ManageModal.Table.C5AD844C": "取消", + "src.component.Task.ApplyTablePermission.DetailContent.658E0B9E": "表", + "src.page.Project.User.ManageModal.Table.D53578CD": "导出", + "src.page.Project.User.ManageModal.Table.TaskApplyList.E80C6744": "所属数据源", + "src.constant.7DC84DC5": "回收表权限管理", + "src.component.Task.ApplyTablePermission.CreateModal.72AFD173": "请选择", "src.constant.16E15B2D": "表权限管理", "src.constant.6F5D437C": "申请表权限", - "src.constant.7CFF0BF7": "创建申请表权限", - "src.constant.EB58961E": "同意申请表权限", - "src.constant.77379A9D": "拒绝申请表权限", - "src.constant.6AF8D624": "停止申请表权限", - "src.constant.B59F26E3": "表权限管理", - "src.constant.E15D0656": "新增表权限管理", - "src.constant.7DC84DC5": "回收表权限管理", - "src.component.helpDoc.2207D608": "新建数据库变更类工单(包括导入、模拟数据、数据库变更、影子表同步、SQL 计划、分区计划、数据归档和数据清理)的权限和 SQL窗口执行变更语句的权限(SQL窗口可否执行变更受安全规范配置约束)", - "src.component.helpDoc.5D9071C2": "SQL窗口内执行查询语句的权限", - "src.component.helpDoc.A0958282": "新建导出和导出结果集工单的权限", - "src.component.helpDoc.618FF120": "新建数据库变更类工单(包括导入、模拟数据、数据库变更、影子表同步、SQL计划、分区计划、数据归档和数据清理)的权限和SQL窗口执行变更语句的权限(SQL窗口可否执行变更受安全规范配置约束)", + "src.page.Project.User.ManageModal.Table.CreateAuth.6D949D9E": "结束日期", "src.component.Task.D7396534": "申请表权限", - "src.component.Task.component.TaskTable.3236150E": "申请表权限", - "src.component.Task.component.TableSelecter.E836E630": "选择表", - "src.component.Task.component.TableSelecter.9995622C": "已选 {selectedTreeDataCount} 项", - "src.component.Task.component.TableSelecter.A56A8B2D": "确定要清空已选对象吗?", - "src.component.Task.component.TableSelecter.C6AF0504": "清空", - "src.component.Task.ApplyTablePermission.DetailContent.9E007486": "数据库", - "src.component.Task.ApplyTablePermission.DetailContent.658E0B9E": "表", - "src.component.Task.ApplyTablePermission.DetailContent.04825B86": "所属数据源", - "src.component.Task.ApplyTablePermission.DetailContent.8CEA0610": "任务编号", - "src.component.Task.ApplyTablePermission.DetailContent.4B4A4E81": "任务类型", - "src.component.Task.ApplyTablePermission.DetailContent.6C1A740A": "申请表权限", - "src.component.Task.ApplyTablePermission.DetailContent.32776504": "项目", - "src.component.Task.ApplyTablePermission.DetailContent.3FE43B61": "表", - "src.component.Task.ApplyTablePermission.DetailContent.64239A78": "权限类型", - "src.component.Task.ApplyTablePermission.DetailContent.FB4B30E0": "权限有效期", - "src.component.Task.ApplyTablePermission.DetailContent.55EE2A17": "申请原因", - "src.component.Task.ApplyTablePermission.DetailContent.2740E99B": "创建人", + "src.component.ProfileFlow.customComponents.E406DF5A": "I/O 统计", + "src.constant.B59F26E3": "表权限管理", "src.component.Task.ApplyTablePermission.DetailContent.7EEDDF7A": "创建时间", - "src.component.Task.ApplyTablePermission.CreateModal.BC4488C7": "永不过期", - "src.component.Task.ApplyTablePermission.CreateModal.82C8FE0E": "查询", - "src.component.Task.ApplyTablePermission.CreateModal.E26609A0": "导出", - "src.component.Task.ApplyTablePermission.CreateModal.D802CFB3": "变更", - "src.component.Task.ApplyTablePermission.CreateModal.F357A49C": "7 天", - "src.component.Task.ApplyTablePermission.CreateModal.DFADB0AB": "30 天", - "src.component.Task.ApplyTablePermission.CreateModal.E06F8910": "90 天", - "src.component.Task.ApplyTablePermission.CreateModal.76C327CA": "半 年", - "src.component.Task.ApplyTablePermission.CreateModal.D6E6AE6E": "1 年", - "src.component.Task.ApplyTablePermission.CreateModal.A004AEF5": "3年", - "src.component.Task.ApplyTablePermission.CreateModal.705AE4C3": "永不过期", - "src.component.Task.ApplyTablePermission.CreateModal.F4D36D95": "自定义", - "src.component.Task.ApplyTablePermission.CreateModal.11B637AA": "确认取消申请表权限吗?", - "src.component.Task.ApplyTablePermission.CreateModal.0D449988": "工单创建成功", - "src.component.Task.ApplyTablePermission.CreateModal.8955ACFE": "暂无项目,请先", - "src.component.Task.ApplyTablePermission.CreateModal.DEF52B23": "加入项目", - "src.component.Task.ApplyTablePermission.CreateModal.7DDD3557": "申请表权限", - "src.component.Task.ApplyTablePermission.CreateModal.95EB40E7": "取消", - "src.component.Task.ApplyTablePermission.CreateModal.AB5C56FA": "新建", "src.component.Task.ApplyTablePermission.CreateModal.524AEC5C": "项目", - "src.component.Task.ApplyTablePermission.CreateModal.77D8F632": "请选择项目", - "src.component.Task.ApplyTablePermission.CreateModal.DC9A3E27": "请选择", - "src.component.Task.ApplyTablePermission.CreateModal.8A62AFC4": "表", - "src.component.Task.ApplyTablePermission.CreateModal.78B63403": "请选择", - "src.component.Task.ApplyTablePermission.CreateModal.3BCFDC84": "权限类型", - "src.component.Task.ApplyTablePermission.CreateModal.72AFD173": "请选择", - "src.component.Task.ApplyTablePermission.CreateModal.472B1735": "权限有效期", + "src.page.Project.User.ManageModal.Table.TaskApplyList.8BA76A12": "过期超三个月后此权限将被清除", "src.component.Task.ApplyTablePermission.CreateModal.BC9BE9CE": "请选择", - "src.component.Task.ApplyTablePermission.CreateModal.A206D2B4": "请选择", + "src.page.Project.User.ManageModal.Table.CreateAuth.705DD31B": "请选择", "src.component.Task.ApplyTablePermission.CreateModal.06672C99": "结束日期", + "src.component.ExecuteSqlDetailModal.69A79B8E": "执行详情", + "src.component.Task.ApplyTablePermission.DetailContent.8CEA0610": "任务编号", + "src.component.ExecuteSqlDetailModal.14585364": "计划统计", + "src.component.ExecuteSqlDetailModal.0DAD5E44": "树视图", + "src.component.Task.ApplyTablePermission.DetailContent.64239A78": "权限类型", "src.component.Task.ApplyTablePermission.CreateModal.55D2BC4D": "请选择", - "src.component.Task.ApplyTablePermission.CreateModal.B2D5729B": "申请原因", - "src.component.Task.ApplyTablePermission.CreateModal.A92A0F62": "请输入原因描述", - "src.component.Task.ApplyTablePermission.CreateModal.319F7B70": "申请原因不超过 200 个字符", - "src.component.Task.ApplyTablePermission.CreateModal.8B90F708": "请输出原因描述", + "src.component.ExecuteSqlDetailModal.97782AAE": "文本视图", + "src.component.ExecuteSqlDetailModal.052B3894": "文本视图", + "src.page.Project.User.ManageModal.Table.A3D05C57": "查询", + "src.page.Project.User.ManageModal.Table.UserAuthList.26E39901": "请输入", + "src.page.Project.User.ManageModal.Table.TaskApplyList.BC1F3BBD": "操作", + "src.constant.6AF8D624": "停止申请表权限", + "src.component.ProfileFlow.customComponents.F4F9EB2A": "数据量:", + "src.component.ExecuteSqlDetailModal.D11F8620": "计划统计", + "src.component.ProfileFlow.customComponents.B32C7D03": "适应宽度", + "src.page.Project.User.ManageModal.Database.1007E283": "工单授权", + "src.component.Task.ApplyTablePermission.DetailContent.3FE43B61": "表", + "src.component.Task.ApplyTablePermission.CreateModal.76C327CA": "半 年", + "src.page.Project.User.ManageModal.Table.CreateAuth.0635BFD4": "数据库", + "src.component.ProfileFlow.customComponents.C22AD2CB": "{dataName}的汇总", "src.component.Task.AlterDdlTask.DetailContent.FE4166B2": "行限流", + "src.component.Task.ApplyTablePermission.CreateModal.95EB40E7": "取消", + "src.component.ExecuteSqlDetailModal.D47F3410": "全链路诊断", + "src.component.Task.ApplyTablePermission.CreateModal.472B1735": "权限有效期", + "src.component.Task.ApplyTablePermission.CreateModal.A206D2B4": "请选择", "src.component.Task.AlterDdlTask.DetailContent.45E8ACBB": "数据大小限流", + "src.page.Project.User.ManageModal.Table.UserAuthList.DE0222B0": "批量回收", + "src.component.ExecuteSqlDetailModal.FB8B6D0B": "列表视图", + "src.page.Workspace.components.SQLExplain.F472322D": "预估代价", + "src.component.Task.ApplyTablePermission.CreateModal.8B90F708": "请输入原因描述", + "src.component.Task.ApplyTablePermission.DetailContent.04825B86": "所属数据源", + "src.page.Project.User.ManageModal.Table.CreateAuth.5FD0D70D": "权限类型", + "src.component.Task.ApplyTablePermission.DetailContent.9E007486": "数据库", + "src.page.Project.User.ManageModal.Table.Status.3F56D2D7": "即将过期", + "src.page.Workspace.components.DDLResultSet.22F863D6": "执行画像", + "src.component.Task.ApplyTablePermission.CreateModal.11B637AA": "确认取消申请表权限吗?", + "src.component.Task.component.TableSelecter.A56A8B2D": "确定要清空已选对象吗?", + "src.page.Project.User.ManageModal.Table.TaskApplyList.F38F822F": "请输入", + "src.component.ProfileFlow.customComponents.2AB1AD68": "Node 执行概览", "src.component.SQLConfig.1A5CCA98": "SQL 执行", - "src.component.SQLConfig.A614A99E": "SQL 执行", + "src.page.Project.User.ManageModal.Table.TaskApplyList.EC52BFBC": "过期时间", + "src.component.Task.ApplyTablePermission.CreateModal.E26609A0": "导出", + "src.component.Task.ApplyTablePermission.CreateModal.BC4488C7": "永不过期", + "src.component.Task.component.TaskTable.3236150E": "申请表权限", + "src.component.Task.ApplyTablePermission.CreateModal.78B63403": "请选择", + "src.component.Task.component.TableSelecter.E836E630": "选择表", + "src.page.Workspace.components.DDLResultSet.0B7666A0": "总耗时:{DBCostTime}", + "src.page.Workspace.components.SQLResultSet.3BA312DB": "无法申请表权限:表所属数据库没有归属项目", + "src.component.Task.ApplyTablePermission.CreateModal.8955ACFE": "暂无项目,请先", + "src.component.Task.ApplyTablePermission.CreateModal.77D8F632": "请选择项目", + "src.page.Project.User.ManageModal.Table.CreateAuth.9F6C8075": "取消", + "src.component.ExecuteSqlDetailModal.5B8FA08A": "Trace ID 为 \"{modalStoreExecuteSqlDetailDataTraceId}\" 的执行画像", + "src.page.Project.User.ManageModal.Table.92D4CD12": "用户授权", + "src.page.Workspace.components.SQLResultSet.D3F95049": "终 止", + "src.page.Workspace.components.SQLResultSet.4035B347": "查看执行画像", "src.component.ProfileFlow.C966E64A": "按 DB 耗时排序", - "src.component.ProfileFlow.C4791007": "按内存排序", - "src.component.ProfileFlow.6B28FD92": "按吐行排序", - "src.component.ProfileFlow.customComponents.F4F9EB2A": "数据量:", - "src.component.ProfileFlow.customComponents.2AB1AD68": "Node 执行概览", - "src.component.ProfileFlow.customComponents.0E9A817E": "I/O 统计", - "src.component.ProfileFlow.customComponents.422173C9": "节点属性", "src.component.ProfileFlow.customComponents.7812E9AE": "{nodeName}的汇总", - "src.component.ProfileFlow.customComponents.C22AD2CB": "{dataName}的汇总", + "src.component.Task.ApplyTablePermission.CreateModal.7DDD3557": "申请表权限", + "src.page.Project.User.ManageModal.Table.UserAuthList.A02EBD96": "过期时间", + "src.constant.A016D539": "申请表权限", + "src.component.ExecuteSqlDetailModal.BF467954": "执行计划", + "src.page.Project.User.ManageModal.Table.E297BA02": "确定", + "src.page.Workspace.components.DDLResultSet.E32AB474": "SQL 执行画像", + "src.component.Task.ApplyTablePermission.CreateModal.82C8FE0E": "查询", + "src.page.Project.User.3AE67EC2": "管理权限", + "src.component.Task.ApplyTablePermission.DetailContent.2740E99B": "创建人", "src.component.ProfileFlow.customComponents.66C75D66": "耗时 Top5", - "src.component.ProfileFlow.customComponents.5FAB7852": "SQL 执行概览", - "src.component.ProfileFlow.customComponents.E406DF5A": "I/O 统计", - "src.component.ProfileFlow.customComponents.12BFFE42": "缩小", - "src.component.ProfileFlow.customComponents.3057F753": "放大", + "src.page.Project.User.ManageModal.Table.CreateAuth.F34065CE": "请选择", + "src.page.Project.User.ManageModal.Table.TaskApplyList.AEDC316B": "批量回收", + "src.page.Project.User.ManageModal.Table.CreateAuth.1D45C292": "请选择", + "src.component.ProfileFlow.customComponents.0E9A817E": "I/O 统计", + "src.page.Workspace.components.SQLResultSet.455E73CE": "无法申请表权限:没有加入数据库所属项目", + "src.page.Project.User.ManageModal.Table.CreateAuth.E589EDA6": "请选择", + "src.constant.E15D0656": "新增表权限管理", + "src.component.Task.component.TableSelecter.9995622C": "已选 {selectedTreeDataCount} 项", + "src.page.Project.User.ManageModal.Table.TaskApplyList.C0ABE640": "请输入", + "src.component.Task.ApplyTablePermission.CreateModal.AB5C56FA": "新建", + "src.page.Project.User.ManageModal.Table.UserAuthList.E7BFBCC8": "请输入", + "src.page.Project.User.ManageModal.Table.TaskApplyList.9CDE663F": "回收", + "src.component.Task.ApplyTablePermission.CreateModal.DC9A3E27": "请选择", + "src.constant.7CFF0BF7": "创建申请表权限", + "src.page.Project.User.ManageModal.Table.UserAuthList.A644DA9A": "请输入", "src.component.ProfileFlow.customComponents.89BEEE9E": "实际尺寸", - "src.component.ProfileFlow.customComponents.B32C7D03": "适应宽度", + "src.page.Project.User.ManageModal.Table.TaskApplyList.88257A65": "请输入", "src.component.ODCSetting.CFC0C3E8": "快捷键冲突, 请重新输入。", - "src.component.ExecuteSqlDetailModal.38BDF819": "执行详情", - "src.component.ExecuteSqlDetailModal.8A207B02": "执行计划", - "src.component.ExecuteSqlDetailModal.0B221F0A": "全链路诊断", - "src.component.ExecuteSqlDetailModal.14585364": "计划统计", + "src.page.Project.User.ManageModal.946C38DA": "库权限", + "src.component.Task.ApplyTablePermission.CreateModal.3BCFDC84": "权限类型", + "src.page.Project.User.ManageModal.Table.TaskApplyList.3B1CD3B1": "请输入", + "src.page.Workspace.components.SQLExplain.E0965DAC": "实际行", + "src.component.Task.ApplyTablePermission.DetailContent.6C1A740A": "申请表权限", + "src.page.Project.User.ManageModal.Table.CreateAuth.680C9CFF": "新增授权", + "src.page.Project.User.ManageModal.A4F73E8C": "管理权限", + "src.component.Task.ApplyTablePermission.CreateModal.0D449988": "工单创建成功", + "src.component.Task.ApplyTablePermission.CreateModal.D6E6AE6E": "1 年", + "src.page.Workspace.components.SQLResultSet.73CA790E": "表", + "src.page.Project.User.ManageModal.Table.TaskApplyList.8F13E12E": "表", + "src.page.Project.User.ManageModal.Table.070B09D0": "变更", + "src.component.Task.ApplyTablePermission.CreateModal.705AE4C3": "永不过期", "src.component.ExecuteSqlDetailModal.D6886430": "当前 SQL 正在执行中,执行完成后可查看", - "src.component.ExecuteSqlDetailModal.68BF8995": "复制", - "src.component.ExecuteSqlDetailModal.69A79B8E": "执行详情", - "src.component.ExecuteSqlDetailModal.BF467954": "执行计划", - "src.component.ExecuteSqlDetailModal.D47F3410": "全链路诊断", - "src.component.ExecuteSqlDetailModal.D11F8620": "计划统计", - "src.component.ExecuteSqlDetailModal.5B8FA08A": "Trace ID 为 \"{modalStoreExecuteSqlDetailDataTraceId}\" 的执行画像", - "src.component.ExecuteSqlDetailModal.A944EAD1": "执行计划详情", - "src.component.ExecuteSqlDetailModal.3AAA9DF9": "Trace 视图", - "src.component.ExecuteSqlDetailModal.D1E28701": "列表视图", - "src.component.ExecuteSqlDetailModal.FB8B6D0B": "列表视图", - "src.component.ExecuteSqlDetailModal.052B3894": "文本视图", - "src.component.ExecuteSqlDetailModal.0DAD5E44": "树视图", - "src.component.ExecuteSqlDetailModal.2129C7A3": "列表视图", - "src.component.ExecuteSqlDetailModal.97782AAE": "文本视图" + "src.page.Workspace.components.SQLResultSet.DDB9284D": "缺少以下数据库表对应权限,请先申请权限", + "src.page.Project.User.ManageModal.Table.CreateAuth.9C0612BE": "权限有效期", + "src.page.Project.User.ManageModal.Table.CED524BB": "工单授权", + "src.constant.77379A9D": "拒绝申请表权限", + "src.component.ProfileFlow.customComponents.5FAB7852": "SQL 执行概览", + "src.page.Project.User.ManageModal.Table.2E8F3BF1": "操作成功", + "src.page.Project.User.ManageModal.Table.UserAuthList.012DC13E": "表", + "src.component.Task.ApplyTablePermission.DetailContent.FB4B30E0": "权限有效期", + "src.page.Workspace.components.SQLResultSet.9BDFC99E": "当前 Trace ID:", + "src.component.ProfileFlow.customComponents.3057F753": "放大", + "src.page.Project.User.ManageModal.81C0C3D0": "表权限", + "src.page.Project.User.ManageModal.Table.Status.F4074114": "已过期" } diff --git a/src/locales/must/strings/zh-TW.json b/src/locales/must/strings/zh-TW.json index db5f9064d..4f29f478f 100644 --- a/src/locales/must/strings/zh-TW.json +++ b/src/locales/must/strings/zh-TW.json @@ -3035,7 +3035,6 @@ "odc.AlterDdlTask.CreateModal.TaskErrorHandling": "任務錯誤處理", "odc.DataClearTask.DetailContent.TaskType": "任務類型", "odc.ResourceTree.Nodes.table.Partition": "分區", - "odc.Project.User.Edit": "編輯", "odc.SSO.SSODetailDrawer.Close": "關閉", "odc.Workspace.ActivityBar.type.Database": "資料庫", "odc.component.SelectTransfer.CountItemSelected": "已選 {count} 項", @@ -3945,7 +3944,6 @@ "src.component.Task.ApplyDatabasePermission.DetailContent.CE83F40A": "所屬數據源", "src.component.Task.StructureComparisonTask.CreateModal.A8C717F6": "取消", "src.page.Project.Notification.components.3548BA07": "批量操作成功", - "src.page.Project.User.ManageModal.1DCD8093": "工單授權", "src.page.ExternalIntegration.SSO.SSODetailDrawer.F86DB093": "用戶 DN", "src.component.Task.DataClearTask.CreateModal.ED9CFF17": "是", "src.page.Project.User.ManageModal.TaskApplyList.D0AC4874": "數據庫", @@ -4009,7 +4007,6 @@ "src.component.Task.component.PartitionPolicyFormTable.RuleFormItem.C6AB94A8": "起始", "src.page.Secure.Record.RecordPage.6F1F90F6": "庫權限管理", "src.page.Project.Notification.components.7C80562E": "請選擇通道類型", - "src.component.helpDoc.5373CF9E": "新建數據庫變更類工單(包括導入、模擬數據、數據庫變更、影子錶同步、SQL 計劃、分區計劃、數據歸檔和數據清理)的權限和執行變更語句的權限(SQL 窗口可否執行變更受安全規範配置約束)", "src.component.Task.component.ActionBar.A79907A3": "暫不可用", "src.page.Project.Notification.components.76BA6F01": "通道名稱", "src.component.Task.component.PartitionPolicyFormTable.90B10A59": "請輸入錶名", @@ -4076,7 +4073,6 @@ "src.component.Task.component.PartitionPolicyFormTable.C49FCEB6": "命名方式", "src.component.ODCSetting.config.DD62F7C6": "主題", "src.page.Project.Notification.components.D55443F5": "Webhook 地址", - "src.component.SQLConfig.C03B2372": "開啟全鏈路診斷", "src.page.Project.Notification.components.445FB17E": "查看", "src.component.Task.component.PartitionPolicyFormTable.RuleFormItem.8368A05F": "請輸入", "src.page.Secure.Env.components.F65C4578": "禁用失敗", @@ -4188,7 +4184,6 @@ "src.page.Project.User.ManageModal.UserAuthList.AD0486C8": "請輸入", "src.component.Task.StructureComparisonTask.DetailContent.BB26A84B": "源端數據源", "src.component.ODCSetting.config.5C426BEE": "個人空間", - "src.page.Workspace.components.SQLResultSet.52CCC188": "缺少以下數據庫對應權限,請先申請庫權限", "src.component.Task.component.PartitionPolicyFormTable.16355175": "請輸入預創建分區數量", "src.page.Project.Notification.components.2D408702": "查看", "src.component.Task.ApplyDatabasePermission.DetailContent.176A9CCE": "申請庫權限", @@ -4216,12 +4211,10 @@ "src.component.ODCSetting.654799D1": "已恢復到默認配置", "src.page.Project.Notification.components.82FB9375": "通道名稱", "src.component.Task.StructureComparisonTask.DetailContent.3AB981EC": "源表結構", - "src.page.Workspace.components.SQLResultSet.0B7D4FBE": "申請", "src.page.Project.User.ManageModal.28BC85BF": "用戶授權", "src.component.Task.component.PartitionPolicyFormTable.RuleFormItem.DE258551": "請輸入", "src.component.Task.PartitionTask.CreateModal.05B817DF": "請輸入超時時間", "src.page.Project.Notification.components.B65E55FA": "刪除", - "src.page.Project.User.ManageModal.211FFE62": "管理庫權限", "src.page.Secure.Env.components.351C7EB6": "請選擇引用環境", "src.page.Project.User.ManageModal.Status.F648282E": "已過期", "src.component.Task.StructureComparisonTask.CreateModal.F20205E5": "不支持", @@ -4230,7 +4223,6 @@ "src.component.Task.ApplyDatabasePermission.CreateModal.B4654D83": "30 天", "src.component.Task.9B79BD20": "自動執行", "src.component.Task.component.TaskTable.E1E161BA": "申請庫權限", - "src.page.Project.User.26C36450": "管理庫權限", "src.page.ExternalIntegration.SSO.NewSSODrawerButton.SSOForm.2E3212A5": "搜索群組查詢時使用的起始點或基準點", "src.component.Task.ApplyDatabasePermission.DetailContent.3EE454F2": "數據庫", "src.component.ODCSetting.config.B0184654": "否", @@ -4672,7 +4664,6 @@ "src.component.Task.MutipleAsyncTask.CreateModal.7026E054": "停止執行", "src.component.Task.MutipleAsyncTask.CreateModal.20CA9283": "請填寫 SQL 內容", "src.component.Task.MutipleAsyncTask.CreateModal.0D0BC691": "更多設置", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.69106FDA": "全部數據庫", "src.component.Task.MutipleAsyncTask.CreateModal.533E6CE4": "點擊或將多個文件拖拽到這裡上傳", "src.component.Task.MutipleAsyncTask.DetailContent.E2E22162": "手動確認超時時間", "src.component.Task.MutipleAsyncTask.CreateModal.450BFD6C": "小時", @@ -4693,7 +4684,6 @@ "src.component.Task.MutipleAsyncTask.CreateModal.C0D9B0C7": "數據庫選擇", "src.component.Task.1EDC83CC": "多庫變更", "src.component.Task.DataArchiveTask.CreateModal.AEEF3B7C": "指定分區", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.03B6F86A": "搜索數據庫", "src.page.Secure.RiskLevel.components.9742C706": "項目-", "src.component.Task.MutipleAsyncTask.CreateModal.38358F62": "超時未確認執行後,任務將終止", "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.987D5B8A": "當前數據源: {selectDatasourceName}", @@ -4771,7 +4761,6 @@ "src.component.Task.MutipleAsyncTask.CreateModal.A95292C7": "保存模版", "src.component.Task.component.CommonDetailModal.FC1C254D": "執行順序", "src.component.Task.MutipleAsyncTask.DetailContent.5FA1154F": "查詢結果限制", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.D7B63CB7": "打開 SQL 窗口", "src.constant.CE5A59D0": "列存", "src.component.Task.MutipleAsyncTask.DetailContent.A6BC0EA9": "數據庫詳情", "src.page.Project.Database.components.DatabaseOwnerSelect.tsx.CBBD314E": "請輸入", @@ -4798,9 +4787,7 @@ "src.page.Project.Database.ChangeOwnerModal.22191CF9": "修改數據庫管理員成功", "src.page.Project.Database.components.DatabaseOwnerSelect.tsx.094820AF": "請選擇", "src.component.Crontab.0130A0C7": "每秒", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.9F4C3737": "全部數據庫", "src.component.Task.DataArchiveTask.DetailContent.FFC5907D": "是", - "src.page.Workspace.SideBar.ResourceTree.DatabaseSearchModal.components.0D1BC60D": "查看更多", "src.component.Task.MutipleAsyncTask.CreateModal.3FBE491C": "取消", "src.component.Task.DataArchiveTask.CreateModal.94BCB0E1": "目標表", "src.component.Task.MutipleAsyncTask.DetailContent.B6FF5C81": "所屬項目", From 0b81dd6e73f475787e2b33460e21435f91fd740e Mon Sep 17 00:00:00 2001 From: xiaokang Date: Fri, 26 Jul 2024 14:10:45 +0800 Subject: [PATCH 19/20] fixes oceanbase/odc#2658 --- .../CreateModal/DatabaseQueue.tsx | 7 +++++-- .../CreateModal/InnerSelecter.tsx | 16 +++++++++++----- .../Task/MutipleAsyncTask/CreateModal/index.less | 4 ++-- .../components/Template/EditTemplate.tsx | 6 ++++-- .../components/Template/index.less | 4 ++-- 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/component/Task/MutipleAsyncTask/CreateModal/DatabaseQueue.tsx b/src/component/Task/MutipleAsyncTask/CreateModal/DatabaseQueue.tsx index 2c68afe64..39943241b 100644 --- a/src/component/Task/MutipleAsyncTask/CreateModal/DatabaseQueue.tsx +++ b/src/component/Task/MutipleAsyncTask/CreateModal/DatabaseQueue.tsx @@ -149,7 +149,7 @@ export const DatabaseQueueSelect: React.FC<{ innerAdd(undefined)} /> { @@ -170,7 +170,10 @@ export const DatabaseQueueSelect: React.FC<{ { diff --git a/src/component/Task/MutipleAsyncTask/CreateModal/InnerSelecter.tsx b/src/component/Task/MutipleAsyncTask/CreateModal/InnerSelecter.tsx index f3d3dbf19..2e7691f18 100644 --- a/src/component/Task/MutipleAsyncTask/CreateModal/InnerSelecter.tsx +++ b/src/component/Task/MutipleAsyncTask/CreateModal/InnerSelecter.tsx @@ -124,7 +124,7 @@ const InnerSelect: React.FC<{ />
{item?.label}
-
+
{item?.dataSource?.name}
@@ -211,7 +211,7 @@ const InnerSelect: React.FC<{ [styles.optionDisabled]: disabled, })} style={{ - backgroundColor: isCurrentItem ? '#e6f4ff' : null, + backgroundColor: isCurrentItem ? 'val(--hover-color)' : null, }} > @@ -227,15 +227,21 @@ const InnerSelect: React.FC<{
{item?.label}
-
+
{item?.dataSource?.name}
diff --git a/src/component/Task/MutipleAsyncTask/CreateModal/index.less b/src/component/Task/MutipleAsyncTask/CreateModal/index.less index 8d66a39ea..46b109d4e 100644 --- a/src/component/Task/MutipleAsyncTask/CreateModal/index.less +++ b/src/component/Task/MutipleAsyncTask/CreateModal/index.less @@ -159,11 +159,11 @@ .optionDisabled { cursor: not-allowed; - background-color: rgb(237, 237, 237); + background-color: var(--hover-color); &:hover { cursor: not-allowed; - background-color: rgb(237, 237, 237); + background-color: var(--hover-color); } } } diff --git a/src/component/Task/MutipleAsyncTask/components/Template/EditTemplate.tsx b/src/component/Task/MutipleAsyncTask/components/Template/EditTemplate.tsx index e90f8b8db..349ba6e80 100644 --- a/src/component/Task/MutipleAsyncTask/components/Template/EditTemplate.tsx +++ b/src/component/Task/MutipleAsyncTask/components/Template/EditTemplate.tsx @@ -301,7 +301,7 @@ const EditTemplate: React.FC<{ innerAdd(undefined)} /> { @@ -323,7 +323,9 @@ const EditTemplate: React.FC<{ { diff --git a/src/component/Task/MutipleAsyncTask/components/Template/index.less b/src/component/Task/MutipleAsyncTask/components/Template/index.less index 503b614fb..f5f0b52c4 100644 --- a/src/component/Task/MutipleAsyncTask/components/Template/index.less +++ b/src/component/Task/MutipleAsyncTask/components/Template/index.less @@ -139,11 +139,11 @@ } } .disabled { - color: var(--mask-color); + color: var(--text-color-hint); &:hover { cursor: not-allowed; - color: var(--mask-color) !important; + color: var(--text-color-hint) !important; } } From 4ea3890e386e41f9ca5742fd5069bef6392b0370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=95=85=E6=99=9A?= Date: Mon, 29 Jul 2024 10:20:18 +0800 Subject: [PATCH 20/20] PullRequest: 481 Fixes oceanbase/odc#2892 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'fix/dev-4.3.1-2892 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.3.1 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/481 Signed-off-by: 晓康 * Fixes oceanbase/odc#2892 --- src/component/Task/component/TableSelecter/index.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/component/Task/component/TableSelecter/index.less b/src/component/Task/component/TableSelecter/index.less index 991be2144..11d687dd0 100644 --- a/src/component/Task/component/TableSelecter/index.less +++ b/src/component/Task/component/TableSelecter/index.less @@ -66,8 +66,8 @@ .allTree, .selectedTree { :global { - .ant-tree-indent-unit { - width: 32px; + .ant-tree-treenode { + overflow: hidden; } } }