From ab279b31726125eeb24b9f1753a09d40d98f7838 Mon Sep 17 00:00:00 2001 From: TianWuwt <759644414@qq.com> Date: Fri, 10 Jan 2025 11:23:19 +0800 Subject: [PATCH] bug fix (#720) --- ui/src/components/TopoComponent/index.tsx | 131 +++++++++--------- ui/src/i18n/strings/en-US.json | 5 +- ui/src/i18n/strings/zh-CN.json | 5 +- .../pages/Cluster/Detail/Overview/index.tsx | 97 +++++++------ ui/src/pages/Cluster/New/Topo.tsx | 94 ++++++++----- .../Tenant/Detail/Overview/BasicInfo.tsx | 3 +- ui/src/pages/Tenant/Detail/Overview/index.tsx | 24 ++-- 7 files changed, 200 insertions(+), 159 deletions(-) diff --git a/ui/src/components/TopoComponent/index.tsx b/ui/src/components/TopoComponent/index.tsx index d214a0aa..b5a0e8b1 100644 --- a/ui/src/components/TopoComponent/index.tsx +++ b/ui/src/components/TopoComponent/index.tsx @@ -3,7 +3,7 @@ import G6, { IG6GraphEvent } from '@antv/g6'; import { createNodeFromReact } from '@antv/g6-react-node'; import { useAccess, useParams } from '@umijs/max'; import { useRequest, useUpdateEffect } from 'ahooks'; -import { Spin, message } from 'antd'; +import { message } from 'antd'; import _ from 'lodash'; import { ReactElement, useEffect, useMemo, useRef, useState } from 'react'; @@ -24,6 +24,7 @@ import { } from '@/services/reportRequest/clusterReportReq'; import { deleteObtenantPool } from '@/services/tenant'; import type { Topo } from '@/type/topo'; +import { PageContainer } from '@ant-design/pro-components'; import MoreModal from '../moreModal'; import { ReactNode, config } from './G6register'; import { @@ -39,7 +40,6 @@ import { checkTopoDataIsSame, getServerNumber, } from './helper'; -import styles from './index.less'; interface TopoProps { tenantReplicas?: API.ReplicaDetailType[]; @@ -487,71 +487,74 @@ export default function TopoComponent({ // Use different pictures for nodes in different states return ( -
- {header - ? header - : originTopoData && ( - - )} + +
+ {header + ? header + : originTopoData && ( + + )} -
- {useMemo( - () => ( - - ), +
+ {useMemo( + () => ( + + ), - [operateList, visible, status], - )} + [operateList, visible, status], + )} - { - if (refreshTenant) refreshTenant(); - operateSuccess(); - }} - params={{ - zoneName: chooseZoneName.current, - defaultValue: chooseServerNum, - defaultUnitCount: defaultUnitCount, - ...resourcePoolDefaultValue, - essentialParameter: isCreateResourcePool - ? resourcePoolDefaultValue?.essentialParameter - : getOriginResourceUsages( - resourcePoolDefaultValue?.essentialParameter, - resourcePoolDefaultValue?.replicaList?.find( - (replica) => - replica.zone === resourcePoolDefaultValue.editZone, + { + if (refreshTenant) refreshTenant(); + operateSuccess(); + }} + params={{ + zoneName: chooseZoneName.current, + defaultValue: chooseServerNum, + defaultUnitCount: defaultUnitCount, + ...resourcePoolDefaultValue, + essentialParameter: isCreateResourcePool + ? resourcePoolDefaultValue?.essentialParameter + : getOriginResourceUsages( + resourcePoolDefaultValue?.essentialParameter, + resourcePoolDefaultValue?.replicaList?.find( + (replica) => + replica.zone === resourcePoolDefaultValue.editZone, + ), ), - ), - newResourcePool: isCreateResourcePool, - zonesOptions: isCreateResourcePool - ? getZonesOptions( - getClusterFromTenant( - resourcePoolDefaultValue?.clusterList, - resourcePoolDefaultValue?.clusterResourceName, - ), - resourcePoolDefaultValue?.replicaList, - ) - : undefined, - }} - /> - - -
+ newResourcePool: isCreateResourcePool, + zonesOptions: isCreateResourcePool + ? getZonesOptions( + getClusterFromTenant( + resourcePoolDefaultValue?.clusterList, + resourcePoolDefaultValue?.clusterResourceName, + ), + resourcePoolDefaultValue?.replicaList, + ) + : undefined, + }} + /> +
+ ); } diff --git a/ui/src/i18n/strings/en-US.json b/ui/src/i18n/strings/en-US.json index b18d4a3b..eb0a515b 100644 --- a/ui/src/i18n/strings/en-US.json +++ b/ui/src/i18n/strings/en-US.json @@ -1252,7 +1252,8 @@ "src.pages.Cluster.Detail.Overview.FF85D01F": "Unmanaged Successfully", "src.pages.Cluster.New.AE7F8E70": "Please select {topologyConfiguration} Key", "src.pages.Cluster.New.5344AD47": "Please select {topologyConfiguration} Operator", - "src.pages.Cluster.New.870724D5": "Please select {topologyConfiguration} Value", + "src.pages.Cluster.New.870724D5": "Please enter {topologyConfiguration} Value", "src.pages.Cluster.New.AC56EBD8": "Please select PodAffinity Type", - "src.pages.Cluster.New.9DDB4176": "Please select the Tolerations Effect" + "src.pages.Cluster.New.9DDB4176": "Please select the Tolerations Effect", + "src.pages.Cluster.New.DB6FD585": "Input content and press Enter to add" } diff --git a/ui/src/i18n/strings/zh-CN.json b/ui/src/i18n/strings/zh-CN.json index 14d8cfbc..bbb8df64 100644 --- a/ui/src/i18n/strings/zh-CN.json +++ b/ui/src/i18n/strings/zh-CN.json @@ -1274,7 +1274,8 @@ "src.pages.Cluster.Detail.Overview.FF85D01F": "解除托管已成功", "src.pages.Cluster.New.AE7F8E70": "请选择 {topologyConfiguration} Key", "src.pages.Cluster.New.5344AD47": "请选择 {topologyConfiguration} Operator", - "src.pages.Cluster.New.870724D5": "请选择 {topologyConfiguration} Value", + "src.pages.Cluster.New.870724D5": "请输入 {topologyConfiguration} Value", "src.pages.Cluster.New.AC56EBD8": "请选择 PodAffinity Type", - "src.pages.Cluster.New.9DDB4176": "请选择 Tolerations Effect" + "src.pages.Cluster.New.9DDB4176": "请选择 Tolerations Effect", + "src.pages.Cluster.New.DB6FD585": "输入后按回车添加" } diff --git a/ui/src/pages/Cluster/Detail/Overview/index.tsx b/ui/src/pages/Cluster/Detail/Overview/index.tsx index 448f7de3..48986dfd 100644 --- a/ui/src/pages/Cluster/Detail/Overview/index.tsx +++ b/ui/src/pages/Cluster/Detail/Overview/index.tsx @@ -60,43 +60,24 @@ const ClusterOverview: React.FC = () => { const { setFieldsValue, validateFields } = form; - const { - data: listOBClusterParameters, - loading, - refresh, - } = useRequest(obcluster.listOBClusterParameters, { - defaultParams: [ns, name], - onSuccess: (res) => { - const newData = getNewData(res?.data); - setParametersData(newData); - }, - }); - const getNewData = (data) => { - const obt = data - ?.map((element) => { - // obcluster 的 parameters 里面加了个 specValue 的字段, - // 如果 specValue 不等于 value,状态写 "不匹配" (黄色tag),如果两个值相等,写"已匹配"(绿色tag) - const findSpec = parameters?.find( - (item: any) => item.value === item.specValue, - ); - if (!isEmpty(findSpec)) { - return { ...element, accordance: true }; - } else if (isEmpty(findSpec)) { - return { ...element, accordance: false }; - } - }) - ?.map((element: any) => { - // 在 obcluster 的 parameters 里面的就是托管给 operator - const findName = parameters?.find( - (item: any) => element.name === item.name, - ); - if (!isEmpty(findName)) { - return { ...element, controlParameter: true }; - } else if (isEmpty(findName)) { - return { ...element, controlParameter: false }; - } - }); + const obt = data?.map((element: any) => { + // 在 obcluster 的 parameters 里面的就是托管给 operator + const findName = parameters?.find( + (item: any) => element.name === item.name, + ); + + if (!isEmpty(findName)) { + return { + ...element, + controlParameter: true, + accordance: findName?.value === findName?.specValue, + }; + } else if (isEmpty(findName)) { + return { ...element, controlParameter: false, accordance: undefined }; + } + }); + return obt; }; @@ -112,6 +93,7 @@ const ClusterOverview: React.FC = () => { if (data.status === 'operating') { timerRef.current = setTimeout(() => { getClusterDetail({ ns: ns!, name: name! }); + refresh(); }, REFRESH_CLUSTER_TIME); } else if (timerRef.current) { clearTimeout(timerRef.current); @@ -119,6 +101,19 @@ const ClusterOverview: React.FC = () => { }, }); + const { + data: listOBClusterParameters, + loading, + refresh, + } = useRequest(obcluster.listOBClusterParameters, { + defaultParams: [ns, name], + refreshDeps: [clusterDetail?.status], + onSuccess: (res) => { + const newData = getNewData(res?.data); + setParametersData(newData); + }, + }); + const { runAsync: patchOBCluster, loading: patchOBClusterloading } = useRequest(obcluster.patchOBCluster, { manual: true, @@ -402,6 +397,12 @@ const ClusterOverview: React.FC = () => { defaultMessage: '参数值', }), dataIndex: 'value', + render: (text: string, record) => { + const content = + parameters?.find((item) => item.name === record.name)?.value || text; + + return {content}; + }, }, { title: intl.formatMessage({ @@ -456,7 +457,7 @@ const ClusterOverview: React.FC = () => { dataIndex: 'accordance', width: 100, - render: (text: boolean, record) => { + render: (text) => { const tagColor = text ? 'green' : 'gold'; const tagContent = text ? intl.formatMessage({ @@ -468,10 +469,10 @@ const ClusterOverview: React.FC = () => { defaultMessage: '不匹配', }); - return record?.controlParameter ? ( - {tagContent} - ) : ( + return text === undefined ? ( '/' + ) : ( + {tagContent} ); }, }, @@ -491,13 +492,20 @@ const ClusterOverview: React.FC = () => { 'max_syslog_file_count', ]; + const valueContent = + parameters?.find((item) => item.name === record.name)?.value || + record?.value; + return (