Skip to content

Commit 4902f20

Browse files
authored
fix(console): 修复创建deployment时request memory含有小数的问题 (#2254)
* fix: 修复创建deployment是request memory含有小数的问题 * fix(console): resource tag 搜索 设定默认搜索名称
1 parent e451714 commit 4902f20

File tree

7 files changed

+166
-160
lines changed

7 files changed

+166
-160
lines changed

web/console/src/modules/cluster/components/clusterManage/ClusterTablePanel.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,19 @@
1818
import * as React from 'react';
1919
import { connect } from 'react-redux';
2020

21-
import { Bubble, Button, Drawer, Icon, Text, Dropdown, List } from '@tea/component';
21+
import { Bubble, Button, Drawer, Dropdown, Icon, List, Text } from '@tea/component';
2222
import { TablePanel, TablePanelColumnProps } from '@tencent/ff-component';
2323
import { bindActionCreators } from '@tencent/ff-redux';
2424
import { ChartPanel } from '@tencent/tchart';
25-
import { t, Trans } from '@tencent/tea-app/lib/i18n';
25+
import { Trans, t } from '@tencent/tea-app/lib/i18n';
2626

2727
import { dateFormatter } from '../../../../../helpers';
28-
import { router as addonRouter } from '../../../addon/router';
2928
import { Clip, LinkButton, TipInfo } from '../../../common/components';
3029
import { Cluster } from '../../../common/models';
3130
import { allActions } from '../../actions';
3231
import { ClusterTypeMap } from '../../constants/Config';
3332
import { DialogNameEnum } from '../../models';
34-
import { getClusterTables, MonitorPanelProps } from '../../models/MonitorPanel';
33+
import { MonitorPanelProps, getClusterTables } from '../../models/MonitorPanel';
3534
import { router } from '../../router';
3635
import { RootProps } from '../ClusterApp';
3736
import { KubectlDialog } from '../KubectlDialog';

web/console/src/modules/cluster/components/resource/resourceDetail/ResourceDetailPanel.tsx

Lines changed: 73 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { dateFormatter } from '../../../../../../helpers';
2727
import { HeadBubble, ListItem } from '../../../../common/components';
2828
import { DetailLayout } from '../../../../common/layouts';
2929
import { DetailDisplayFieldProps, DetailInfoProps } from '../../../../common/models';
30-
import { cloneDeep, isEmpty } from '../../../../common/utils';
30+
import { isEmpty } from '../../../../common/utils';
3131
import { allActions } from '../../../actions';
3232
import { ExternalTrafficPolicy, ResourceStatus, SessionAffinity } from '../../../constants/Config';
3333
import { BackendGroup, BackendRecord, CreateResource, LbcfResource, PortMap, Resource, RuleMap } from '../../../models';
@@ -52,23 +52,23 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
5252
}
5353

5454
render() {
55-
let { subRoot } = this.props,
55+
const { subRoot } = this.props,
5656
{ resourceName, resourceDetailState } = subRoot,
5757
{ resourceDetailInfo } = resourceDetailState;
5858

59-
let istapp = resourceName === 'tapp';
60-
let resourceIns = resourceDetailInfo.selection;
59+
const istapp = resourceName === 'tapp';
60+
const resourceIns = resourceDetailInfo.selection;
6161

6262
if (istapp && resourceIns) {
6363
//tapp 需要展示灰度升级的container信息
6464
//如果有灰度升级项,需要展示在container当中
65-
let { templates, templatePool } = resourceIns.spec;
65+
const { templates, templatePool } = resourceIns.spec;
6666
if (templates) {
67-
let extraContainers = Object.values(templates);
67+
const extraContainers = Object.values(templates);
6868
extraContainers.forEach((item: string) => {
6969
if (templatePool[item]) {
7070
//修改提示信息
71-
let grayUpdateContainers = templatePool[item].spec.containers.map(c => {
71+
const grayUpdateContainers = templatePool[item].spec.containers.map(c => {
7272
return {
7373
...c,
7474
name: `${c.name} (灰度升级${item})`
@@ -97,36 +97,38 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
9797

9898
/** 展示基础数据 */
9999
private _renderBasicInfo(resourceIns: Resource) {
100-
let { subRoot } = this.props,
100+
const { subRoot } = this.props,
101101
{ resourceInfo } = subRoot;
102102

103-
let basicInfo = resourceInfo.detailField.detailInfo.info ? resourceInfo.detailField.detailInfo.info : {};
104-
let blockKeys = Object.keys(basicInfo);
103+
const basicInfo = resourceInfo.detailField.detailInfo.info ? resourceInfo.detailField.detailInfo.info : {};
104+
const blockKeys = Object.keys(basicInfo);
105105
let content: JSX.Element;
106106

107107
if (blockKeys.length) {
108108
// 这里需要去遍历 info里面的 metadata 和 status当中的信息
109109

110-
let showContentObj: any[] = [];
110+
const showContentObj: any[] = [];
111111
let showContentArr: any[] = [];
112112

113113
blockKeys.forEach((blockKey, index) => {
114-
let detailInfoField = basicInfo[blockKey].dataField[0].split('.');
114+
const detailInfoField = basicInfo[blockKey].dataField[0].split('.');
115115
// 需要展示的详情的数据
116-
let detailInfo = this._getFinalData(detailInfoField, resourceIns);
117-
let displayField = Object.keys(basicInfo[blockKey].displayField).length ? basicInfo[blockKey].displayField : {};
116+
const detailInfo = this._getFinalData(detailInfoField, resourceIns);
117+
const displayField = Object.keys(basicInfo[blockKey].displayField).length
118+
? basicInfo[blockKey].displayField
119+
: {};
118120

119121
// 需要展示的字段名
120-
let showField = Object.keys(displayField);
122+
const showField = Object.keys(displayField);
121123

122124
showField.forEach((item, showIndex) => {
123-
let fieldInfo = displayField[item];
125+
const fieldInfo = displayField[item];
124126
/**
125127
* 这里是去判断annotations里面,其为 *.*.*. 可以有很多 .
126128
* eg: storageclass.beta.kubernetes.io/is-default-class
127129
* 那么这里的 数组 ['annotations', 'storageclass.beta.kubernetes.io/is-default-class']
128130
*/
129-
let dataFieldIns =
131+
const dataFieldIns =
130132
fieldInfo.dataField[0] !== ''
131133
? fieldInfo.dataField.length > 1
132134
? fieldInfo.dataField
@@ -138,7 +140,7 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
138140
showData = showData === '' ? fieldInfo.noExsitedValue : showData;
139141

140142
// 这里根据displayField当中搞得格式去展示相对应的showContent
141-
let showElement = this._renderFormItem({ showData, fieldInfo, detailInfo });
143+
const showElement = this._renderFormItem({ showData, fieldInfo, detailInfo });
142144
// 这里需要对齐进行排序
143145
showContentObj.push({
144146
order: fieldInfo.order,
@@ -170,14 +172,14 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
170172

171173
/** 展示转发规则 rules */
172174
private _renderRules(resourceIns: Resource) {
173-
let { subRoot } = this.props,
175+
const { subRoot } = this.props,
174176
{ resourceInfo } = subRoot;
175177

176178
let content: JSX.Element;
177179
// 展示转发规则
178-
let showContentArr: any[] = [];
180+
const showContentArr: any[] = [];
179181

180-
let isQcloudIngress =
182+
const isQcloudIngress =
181183
resourceIns &&
182184
resourceIns.metadata &&
183185
resourceIns.metadata.annotations &&
@@ -187,33 +189,33 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
187189

188190
// 这里是为了腾讯云专用的Ingress的展示,转发配置是放在annotaions里面的
189191
if (isQcloudIngress) {
190-
let annotations = resourceIns.metadata.annotations;
191-
let showData = {
192+
const annotations = resourceIns.metadata.annotations;
193+
const showData = {
192194
http: annotations['kubernetes.io/ingress.http-rules'] || '',
193195
https: annotations['kubernetes.io/ingress.https-rules'] || ''
194196
};
195197

196-
let showContent = this._renderRulesItem(showData, true, resourceIns);
198+
const showContent = this._renderRulesItem(showData, true, resourceIns);
197199
showContentArr.push(showContent);
198200
} else {
199-
let basicInfo = resourceInfo.detailField.detailInfo.rules ? resourceInfo.detailField.detailInfo.rules : {};
200-
let blockKeys = Object.keys(basicInfo);
201+
const basicInfo = resourceInfo.detailField.detailInfo.rules ? resourceInfo.detailField.detailInfo.rules : {};
202+
const blockKeys = Object.keys(basicInfo);
201203

202204
if (blockKeys.length) {
203205
blockKeys.forEach((blockKey, index) => {
204-
let detailInfoField = basicInfo[blockKey].dataField[0].split('.');
206+
const detailInfoField = basicInfo[blockKey].dataField[0].split('.');
205207
//需要展示的详情的数据
206-
let detailInfo = this._getFinalData(detailInfoField, resourceIns);
207-
let displayField = Object.keys(basicInfo[blockKey].displayField).length
208+
const detailInfo = this._getFinalData(detailInfoField, resourceIns);
209+
const displayField = Object.keys(basicInfo[blockKey].displayField).length
208210
? basicInfo[blockKey].displayField
209211
: {};
210212

211213
// 需要展示的字段名
212-
let showField = Object.keys(displayField);
214+
const showField = Object.keys(displayField);
213215

214216
showField.forEach((item, showIndex) => {
215-
let fieldInfo = displayField[item];
216-
let dataFieldIns = fieldInfo.dataField[0] !== '' ? fieldInfo.dataField[0].split('.') : [];
217+
const fieldInfo = displayField[item];
218+
const dataFieldIns = fieldInfo.dataField[0] !== '' ? fieldInfo.dataField[0].split('.') : [];
217219
let showData = this._getFinalData(dataFieldIns, detailInfo);
218220

219221
// 这里是要去判断noExist的展示
@@ -251,17 +253,17 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
251253

252254
/** 展示数据卷,数据卷这里特殊处理 */
253255
private _renderVolumes(resourceIns: Resource) {
254-
let { subRoot } = this.props,
256+
const { subRoot } = this.props,
255257
{ resourceInfo } = subRoot;
256258

257-
let detailInfo = resourceInfo.detailField.detailInfo.volume ? resourceInfo.detailField.detailInfo.volume : {};
258-
let blockKeys = Object.keys(detailInfo);
259+
const detailInfo = resourceInfo.detailField.detailInfo.volume ? resourceInfo.detailField.detailInfo.volume : {};
260+
const blockKeys = Object.keys(detailInfo);
259261
let content: JSX.Element;
260262

261263
if (blockKeys.length) {
262264
// 目前此区域只展示 volumes,故只需要获取volumes
263-
let detailInfoField = detailInfo['volumes'].dataField[0].split('.');
264-
let volumns = this._getFinalData(detailInfoField, resourceIns);
265+
const detailInfoField = detailInfo['volumes'].dataField[0].split('.');
266+
const volumns = this._getFinalData(detailInfoField, resourceIns);
265267

266268
// 展示数据卷资源的信息
267269
const renderVolumeInfo = (volumn, type: string) => {
@@ -271,7 +273,7 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
271273
} else if (type === 'secret') {
272274
content = volumn[type]['secretName'] + t('(资源名称)');
273275
} else if (type === 'hostPath') {
274-
let validateType = volumn[type]['type'] ? volumn[type]['type'] : t('不校验');
276+
const validateType = volumn[type]['type'] ? volumn[type]['type'] : t('不校验');
275277
content = volumn[type]['path'] + t('(主机路径)') + validateType + t('(路径检查类型)');
276278
} else if (type === 'nfs') {
277279
content = volumn[type]['server'] + ':' + volumn[type]['path'] + t('(NFS路径)');
@@ -303,8 +305,8 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
303305
* }
304306
* volumesType即数据卷的类型
305307
*/
306-
let keys = Object.keys(volumn);
307-
let label = keys.filter(item => item !== 'name')[0]; // 这里是因为volumes 当中的数据卷的类型是不固定的
308+
const keys = Object.keys(volumn);
309+
const label = keys.filter(item => item !== 'name')[0]; // 这里是因为volumes 当中的数据卷的类型是不固定的
308310

309311
return (
310312
<ListItem key={index} label={label}>
@@ -328,18 +330,18 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
328330

329331
/**展示service高级设置 */
330332
private _renderAdvancedInfo(resourceIns: Resource) {
331-
let { subRoot } = this.props,
333+
const { subRoot } = this.props,
332334
{ resourceInfo } = subRoot;
333335

334-
let detailInfo = resourceInfo.detailField.detailInfo.advancedInfo
336+
const detailInfo = resourceInfo.detailField.detailInfo.advancedInfo
335337
? resourceInfo.detailField.detailInfo.advancedInfo
336338
: {};
337-
let blockKeys = Object.keys(detailInfo);
339+
const blockKeys = Object.keys(detailInfo);
338340
let content: JSX.Element;
339341

340342
if (blockKeys.length) {
341-
let advancedInfoField = detailInfo['spec'].dataField[0].split('.');
342-
let advancedInfo = this._getFinalData(advancedInfoField, resourceIns);
343+
const advancedInfoField = detailInfo['spec'].dataField[0].split('.');
344+
const advancedInfo = this._getFinalData(advancedInfoField, resourceIns);
343345

344346
content = (
345347
<DetailLayout>
@@ -380,21 +382,23 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
380382
}
381383
/** 展示容器 */
382384
private _renderBackGroup(resourceIns: LbcfResource) {
383-
let { subRoot } = this.props,
385+
const { subRoot } = this.props,
384386
{ resourceInfo } = subRoot;
385387

386-
let detailInfo = resourceInfo.detailField.detailInfo.backGroup ? resourceInfo.detailField.detailInfo.backGroup : {};
387-
let blockKeys = Object.keys(detailInfo);
388+
const detailInfo = resourceInfo.detailField.detailInfo.backGroup
389+
? resourceInfo.detailField.detailInfo.backGroup
390+
: {};
391+
const blockKeys = Object.keys(detailInfo);
388392
let content: JSX.Element;
389393

390394
if (blockKeys.length) {
391395
// 目前此区域只展示backGroups,故只需要获取backGroups
392-
let detailInfoField = detailInfo['backGroups'].dataField[0].split('.');
393-
let backGroups: BackendGroup[] = this._getFinalData(detailInfoField, resourceIns);
396+
const detailInfoField = detailInfo['backGroups'].dataField[0].split('.');
397+
const backGroups: BackendGroup[] = this._getFinalData(detailInfoField, resourceIns);
394398

395399
const tabs = backGroups
396400
? backGroups.map((item, index) => {
397-
let tab = {
401+
const tab = {
398402
id: item['name'] + index,
399403
label: item['name']
400404
};
@@ -404,7 +408,7 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
404408

405409
let selected = tabs[0];
406410
if (this.state.tabName) {
407-
let finder = tabs.find(x => x.id === this.state.tabName);
411+
const finder = tabs.find(x => x.id === this.state.tabName);
408412
if (finder) {
409413
selected = finder;
410414
}
@@ -438,21 +442,23 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
438442

439443
/** 展示容器 */
440444
private _renderContainer(resourceIns: Resource) {
441-
let { subRoot } = this.props,
445+
const { subRoot } = this.props,
442446
{ resourceInfo } = subRoot;
443447

444-
let detailInfo = resourceInfo.detailField.detailInfo.container ? resourceInfo.detailField.detailInfo.container : {};
445-
let blockKeys = Object.keys(detailInfo);
448+
const detailInfo = resourceInfo.detailField.detailInfo.container
449+
? resourceInfo.detailField.detailInfo.container
450+
: {};
451+
const blockKeys = Object.keys(detailInfo);
446452
let content: JSX.Element;
447453

448454
if (blockKeys.length) {
449455
// 目前此区域只展示 volumes,故只需要获取volumes
450-
let detailInfoField = detailInfo['containers'].dataField[0].split('.');
451-
let containers = this._getFinalData(detailInfoField, resourceIns);
456+
const detailInfoField = detailInfo['containers'].dataField[0].split('.');
457+
const containers = this._getFinalData(detailInfoField, resourceIns);
452458

453459
const tabs = containers
454460
? containers.map((item, index) => {
455-
let tab = {
461+
const tab = {
456462
id: item['name'] + index,
457463
label: item['name']
458464
};
@@ -462,7 +468,7 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
462468

463469
let selected = tabs[0] ? tabs[0] : {};
464470
if (this.state.tabName) {
465-
let finder = tabs.find(x => x.id === this.state.tabName);
471+
const finder = tabs.find(x => x.id === this.state.tabName);
466472
if (finder) {
467473
selected = finder;
468474
}
@@ -499,9 +505,9 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
499505
/** 生成container内部的展示 */
500506
private _renderContainerBody(containers: any[], detailInfo: DetailInfoProps) {
501507
// 配置文件当中的detailInfo 下的 container
502-
let displayField = Object.keys(detailInfo).length ? detailInfo.displayField : {};
508+
const displayField = Object.keys(detailInfo).length ? detailInfo.displayField : {};
503509
// 需要展示的字段名
504-
let showField = Object.keys(displayField);
510+
const showField = Object.keys(displayField);
505511

506512
return containers
507513
? containers.map((container, index) => (
@@ -628,8 +634,12 @@ export class ResourceDetailPanel extends React.Component<RootProps, ResourceDeta
628634
placement="left"
629635
content={
630636
<React.Fragment>
631-
<p>{t('名称:') + `${refData['name']}`}</p>
632-
<p>{`Key:${refData['key']}`}</p>
637+
{Object.entries(refData ?? {}).map(([key, value]) => (
638+
<>
639+
<p>{`${t('名称:')}${key}`}</p>
640+
<p>{`Key:${value}`}</p>
641+
</>
642+
))}
633643
</React.Fragment>
634644
}
635645
>

0 commit comments

Comments
 (0)