feat: update id/name column display
1. only show the first 8 characters of the id in table 2. can copy the id 3. bold the name to make it stand out 4. update cypress command clickLinkInColumn, click link with the left position, to avoid clicking the copy button on the right Change-Id: I91046cac9631bd8d2da5dfd236a8e1f14196e6f9
This commit is contained in:
parent
cd7f9bfdf6
commit
3026f4fca4
@ -206,4 +206,12 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.no-wrap {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-margin-bottom {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
import { Typography } from 'antd';
|
||||||
import {
|
import {
|
||||||
isArray,
|
isArray,
|
||||||
get,
|
get,
|
||||||
@ -26,6 +27,9 @@ import {
|
|||||||
import Status from 'components/Status';
|
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';
|
||||||
|
|
||||||
|
const { Paragraph } = Typography;
|
||||||
|
|
||||||
export function getStringValue(value) {
|
export function getStringValue(value) {
|
||||||
if (
|
if (
|
||||||
@ -147,6 +151,33 @@ const getLinkUrl = (prefix, id) => {
|
|||||||
return `${prefix}/${id}`;
|
return `${prefix}/${id}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getIdRender = (value, copyable = true, isLink = true) => {
|
||||||
|
const short = (value || '').substring(0, 8);
|
||||||
|
const shortRender = isLink ? (
|
||||||
|
<span className="link-class">{short}</span>
|
||||||
|
) : (
|
||||||
|
short
|
||||||
|
);
|
||||||
|
if (!copyable) {
|
||||||
|
return shortRender;
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<Paragraph
|
||||||
|
copyable={{ text: value }}
|
||||||
|
className={classnames('no-wrap', 'no-margin-bottom')}
|
||||||
|
>
|
||||||
|
{shortRender}
|
||||||
|
</Paragraph>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getNameRenderWithStyle = (name) => {
|
||||||
|
const style = {
|
||||||
|
fontWeight: 'bold',
|
||||||
|
};
|
||||||
|
return <div style={style}>{name || '-'}</div>;
|
||||||
|
};
|
||||||
|
|
||||||
export const getNameRender = (render, column, rowKey) => {
|
export const getNameRender = (render, column, rowKey) => {
|
||||||
if (render) {
|
if (render) {
|
||||||
return render;
|
return render;
|
||||||
@ -158,6 +189,7 @@ export const getNameRender = (render, column, rowKey) => {
|
|||||||
linkPrefixFunc,
|
linkPrefixFunc,
|
||||||
linkFunc,
|
linkFunc,
|
||||||
hasNoDetail = false,
|
hasNoDetail = false,
|
||||||
|
copyable = true,
|
||||||
} = column;
|
} = column;
|
||||||
return (value, record) => {
|
return (value, record) => {
|
||||||
const idValue = get(record, idKey || rowKey);
|
const idValue = get(record, idKey || rowKey);
|
||||||
@ -171,23 +203,25 @@ export const getNameRender = (render, column, rowKey) => {
|
|||||||
url = getLinkUrl(linkValue, idValue);
|
url = getLinkUrl(linkValue, idValue);
|
||||||
}
|
}
|
||||||
const nameValue = value || get(record, dataIndex) || '-';
|
const nameValue = value || get(record, dataIndex) || '-';
|
||||||
|
const nameRender = getNameRenderWithStyle(nameValue);
|
||||||
|
const idRender = getIdRender(idValue, copyable, !!url);
|
||||||
if (hasNoDetail) {
|
if (hasNoDetail) {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div>{idValue}</div>
|
<div>{idRender}</div>
|
||||||
<div>{nameValue}</div>
|
{nameRender}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (!url && !hasNoDetail) {
|
if (!url && !hasNoDetail) {
|
||||||
return nameValue;
|
return nameRender;
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
<Link to={url}>{idValue}</Link>
|
<Link to={url}>{idRender}</Link>
|
||||||
</div>
|
</div>
|
||||||
<div>{nameValue}</div>
|
{nameRender}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@ -205,13 +239,19 @@ export const getNameRenderByRouter = (render, column, rowKey) => {
|
|||||||
routeQuery = {},
|
routeQuery = {},
|
||||||
routeParamsFunc,
|
routeParamsFunc,
|
||||||
withoutName = false,
|
withoutName = false,
|
||||||
|
copyable = true,
|
||||||
} = column;
|
} = column;
|
||||||
return (value, record) => {
|
return (value, record) => {
|
||||||
const nameValue = value || get(record, dataIndex) || '-';
|
const nameValue = value || get(record, dataIndex) || '-';
|
||||||
|
const nameRender = getNameRenderWithStyle(nameValue);
|
||||||
if (!routeName) {
|
if (!routeName) {
|
||||||
return nameValue;
|
return nameValue;
|
||||||
}
|
}
|
||||||
const idValue = get(record, idKey || rowKey);
|
const idValue = get(record, idKey || rowKey);
|
||||||
|
if (!idValue) {
|
||||||
|
return '-';
|
||||||
|
}
|
||||||
|
const idRender = getIdRender(idValue, copyable, true);
|
||||||
const params = routeParamsFunc
|
const params = routeParamsFunc
|
||||||
? routeParamsFunc(record)
|
? routeParamsFunc(record)
|
||||||
: { [routeParamsKey]: idValue };
|
: { [routeParamsKey]: idValue };
|
||||||
@ -220,12 +260,12 @@ export const getNameRenderByRouter = (render, column, rowKey) => {
|
|||||||
key: routeName,
|
key: routeName,
|
||||||
params,
|
params,
|
||||||
query,
|
query,
|
||||||
value: idValue,
|
value: idRender,
|
||||||
});
|
});
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div>{link}</div>
|
<div>{link}</div>
|
||||||
{!withoutName && <div>{nameValue}</div>}
|
{!withoutName && nameRender}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -276,7 +276,7 @@ Cypress.Commands.add('clickLinkInColumn', (columnIndex, waitTime = 5000) => {
|
|||||||
.find('td')
|
.find('td')
|
||||||
.eq(columnIndex)
|
.eq(columnIndex)
|
||||||
.find('a')
|
.find('a')
|
||||||
.click(waitTime);
|
.click('left', waitTime);
|
||||||
});
|
});
|
||||||
|
|
||||||
Cypress.Commands.add('goToDetail', (index = 1, waitTime) => {
|
Cypress.Commands.add('goToDetail', (index = 1, waitTime) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user