From 26d6935bedd904b6b5ccd0c66eaee93646982a41 Mon Sep 17 00:00:00 2001 From: "Jingwei.Zhang" Date: Mon, 10 Oct 2022 16:55:43 +0800 Subject: [PATCH] feat: update project id/name column display Update project column in the list page and selectTable component: 1. update project id to the first 8 characters 2. support copy the project id Change-Id: Ic7563db2b3d3e99a5bc2b100e7c7d6fc5d54ca68 --- src/components/Tables/Base/index.jsx | 34 +++------------------ src/components/Tables/SimpleTable/index.jsx | 28 ++--------------- src/utils/table.jsx | 28 +++++++++++++++++ 3 files changed, 34 insertions(+), 56 deletions(-) diff --git a/src/components/Tables/Base/index.jsx b/src/components/Tables/Base/index.jsx index 67883600..2cb3642d 100644 --- a/src/components/Tables/Base/index.jsx +++ b/src/components/Tables/Base/index.jsx @@ -43,12 +43,12 @@ import { columnRender, getValueMapRender, getUnitRender, + getProjectRender, + getProjectId, } from 'utils/table'; import { getNoValue } from 'utils/index'; import { getLocalStorageItem, setLocalStorageItem } from 'utils/local-storage'; -import { getLinkRender } from 'utils/route-map'; import { inject } from 'mobx-react'; -import globalRootStore from 'stores/root'; import CustomColumns from './CustomColumns'; import ItemActionButtons from './ItemActionButtons'; import PrimaryActionButtons from './PrimaryActionButtons'; @@ -322,32 +322,6 @@ export class BaseTable extends React.Component { return actionList && actionList.length > 0; }; - getProjectId = (record) => - record.project_id || record.owner || record.fingerprint || record.tenant; - - getProjectRender = (render) => { - if (render) { - return render; - } - return (value, record) => { - const projectId = this.getProjectId(record); - if (!projectId) { - return '-'; - } - const link = getLinkRender({ - key: 'projectDetailAdmin', - params: { id: projectId }, - value: projectId, - }); - return ( - <> -
{globalRootStore.hasAdminRole ? link : projectId}
-
{value || '-'}
- - ); - }; - }; - getNoValueRender = (render) => { if (render) { return render; @@ -439,7 +413,7 @@ export class BaseTable extends React.Component { newRender = this.getNoValueRender(newRender); } if (dataIndex === 'project_name') { - newRender = this.getProjectRender(newRender); + newRender = getProjectRender(newRender); } if ((dataIndex === 'name' && routeName) || isLink) { const { rowKey } = this.props; @@ -565,7 +539,7 @@ export class BaseTable extends React.Component { it.dataIndex === 'project_name' ) { fIndex = 'project_id'; - render = (_, record) => this.getProjectId(record); + render = (_, record) => getProjectId(record); } return [ { diff --git a/src/components/Tables/SimpleTable/index.jsx b/src/components/Tables/SimpleTable/index.jsx index 4d43ded3..360e3319 100644 --- a/src/components/Tables/SimpleTable/index.jsx +++ b/src/components/Tables/SimpleTable/index.jsx @@ -28,8 +28,8 @@ import { getNameRenderByRouter, getValueMapRender, getUnitRender, + getProjectRender, } from 'utils/table'; -import { Link } from 'react-router-dom'; import { getNoValue } from 'utils/index'; import styles from './index.less'; @@ -111,7 +111,7 @@ export default class SimpleTable extends React.Component { newRender = this.getNoValueRender(newRender); } if (dataIndex === 'project_name') { - newRender = this.getProjectRender(newRender); + newRender = getProjectRender(newRender); } if ((dataIndex === 'name' && routeName) || isLink) { const { rowKey } = this.props; @@ -141,30 +141,6 @@ export default class SimpleTable extends React.Component { return newColumn; }); - getProjectId = (record) => - record.project_id || record.owner || record.fingerprint || record.tenant; - - getProjectRender = (render) => { - if (render) { - return render; - } - return (value, record) => { - const projectId = this.getProjectId(record); - if (!projectId) { - return '-'; - } - const url = `/identity/project-admin/detail/${projectId}`; - return ( - <> -
- {projectId} -
-
{value || '-'}
- - ); - }; - }; - getNoValueRender = (render) => { if (render) { return render; diff --git a/src/utils/table.jsx b/src/utils/table.jsx index 55d84e23..1ac94b81 100644 --- a/src/utils/table.jsx +++ b/src/utils/table.jsx @@ -28,6 +28,7 @@ import Status from 'components/Status'; import { renderFilterMap } from 'utils/index'; import { getLinkRender } from 'utils/route-map'; import classnames from 'classnames'; +import globalRootStore from 'stores/root'; const { Paragraph } = Typography; @@ -312,3 +313,30 @@ export const getUnitRender = (column) => { } return null; }; + +export const getProjectRender = (render) => { + if (render) { + return render; + } + return (value, record) => { + const projectId = getProjectId(record); + if (!projectId) { + return '-'; + } + const { hasAdminRole } = globalRootStore; + const hasLink = !!hasAdminRole; + let idRender = null; + if (hasLink) { + const url = `/identity/project-admin/detail/${projectId}`; + idRender = {getIdRender(projectId, true, true)}; + } else { + idRender = getIdRender(projectId, true, false); + } + return ( + <> +
{idRender}
+
{value || '-'}
+ + ); + }; +};