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
This commit is contained in:
Jingwei.Zhang 2022-10-10 16:55:43 +08:00
parent 88eb2ad8b6
commit 26d6935bed
3 changed files with 34 additions and 56 deletions

View File

@ -43,12 +43,12 @@ import {
columnRender, columnRender,
getValueMapRender, getValueMapRender,
getUnitRender, getUnitRender,
getProjectRender,
getProjectId,
} from 'utils/table'; } from 'utils/table';
import { getNoValue } from 'utils/index'; import { getNoValue } from 'utils/index';
import { getLocalStorageItem, setLocalStorageItem } from 'utils/local-storage'; import { getLocalStorageItem, setLocalStorageItem } from 'utils/local-storage';
import { getLinkRender } from 'utils/route-map';
import { inject } from 'mobx-react'; import { inject } from 'mobx-react';
import globalRootStore from 'stores/root';
import CustomColumns from './CustomColumns'; import CustomColumns from './CustomColumns';
import ItemActionButtons from './ItemActionButtons'; import ItemActionButtons from './ItemActionButtons';
import PrimaryActionButtons from './PrimaryActionButtons'; import PrimaryActionButtons from './PrimaryActionButtons';
@ -322,32 +322,6 @@ export class BaseTable extends React.Component {
return actionList && actionList.length > 0; 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 (
<>
<div>{globalRootStore.hasAdminRole ? link : projectId}</div>
<div>{value || '-'}</div>
</>
);
};
};
getNoValueRender = (render) => { getNoValueRender = (render) => {
if (render) { if (render) {
return render; return render;
@ -439,7 +413,7 @@ export class BaseTable extends React.Component {
newRender = this.getNoValueRender(newRender); newRender = this.getNoValueRender(newRender);
} }
if (dataIndex === 'project_name') { if (dataIndex === 'project_name') {
newRender = this.getProjectRender(newRender); newRender = getProjectRender(newRender);
} }
if ((dataIndex === 'name' && routeName) || isLink) { if ((dataIndex === 'name' && routeName) || isLink) {
const { rowKey } = this.props; const { rowKey } = this.props;
@ -565,7 +539,7 @@ export class BaseTable extends React.Component {
it.dataIndex === 'project_name' it.dataIndex === 'project_name'
) { ) {
fIndex = 'project_id'; fIndex = 'project_id';
render = (_, record) => this.getProjectId(record); render = (_, record) => getProjectId(record);
} }
return [ return [
{ {

View File

@ -28,8 +28,8 @@ import {
getNameRenderByRouter, getNameRenderByRouter,
getValueMapRender, getValueMapRender,
getUnitRender, getUnitRender,
getProjectRender,
} from 'utils/table'; } from 'utils/table';
import { Link } from 'react-router-dom';
import { getNoValue } from 'utils/index'; import { getNoValue } from 'utils/index';
import styles from './index.less'; import styles from './index.less';
@ -111,7 +111,7 @@ export default class SimpleTable extends React.Component {
newRender = this.getNoValueRender(newRender); newRender = this.getNoValueRender(newRender);
} }
if (dataIndex === 'project_name') { if (dataIndex === 'project_name') {
newRender = this.getProjectRender(newRender); newRender = getProjectRender(newRender);
} }
if ((dataIndex === 'name' && routeName) || isLink) { if ((dataIndex === 'name' && routeName) || isLink) {
const { rowKey } = this.props; const { rowKey } = this.props;
@ -141,30 +141,6 @@ export default class SimpleTable extends React.Component {
return newColumn; 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 (
<>
<div>
<Link to={url}>{projectId}</Link>
</div>
<div>{value || '-'}</div>
</>
);
};
};
getNoValueRender = (render) => { getNoValueRender = (render) => {
if (render) { if (render) {
return render; return render;

View File

@ -28,6 +28,7 @@ import Status from 'components/Status';
import { renderFilterMap } from 'utils/index'; import { renderFilterMap } from 'utils/index';
import { getLinkRender } from 'utils/route-map'; import { getLinkRender } from 'utils/route-map';
import classnames from 'classnames'; import classnames from 'classnames';
import globalRootStore from 'stores/root';
const { Paragraph } = Typography; const { Paragraph } = Typography;
@ -312,3 +313,30 @@ export const getUnitRender = (column) => {
} }
return null; 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 = <Link to={url}>{getIdRender(projectId, true, true)}</Link>;
} else {
idRender = getIdRender(projectId, true, false);
}
return (
<>
<div>{idRender}</div>
<div>{value || '-'}</div>
</>
);
};
};