echarts#color TypeScript Examples
The following examples show how to use
echarts#color.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: groups.tsx From fe-v5 with Apache License 2.0 | 4 votes |
Resource: React.FC = () => { const { t } = useTranslation(); const { type } = useParams<{ type: string; }>(); const [activeKey, setActiveKey] = useState<UserType>(UserType.Team); const [visible, setVisible] = useState<boolean>(false); const [action, setAction] = useState<ActionType>(); const [userId, setUserId] = useState<string>(''); const [teamId, setTeamId] = useState<string>(''); const [memberId, setMemberId] = useState<string>(''); const [memberList, setMemberList] = useState<User[]>([]); const [allMemberList, setAllMemberList] = useState<User[]>([]); const [teamInfo, setTeamInfo] = useState<Team>(); const [teamList, setTeamList] = useState<Team[]>([]); const [memberLoading, setMemberLoading] = useState<boolean>(false); const [searchValue, setSearchValue] = useState<string>(''); const [searchMemberValue, setSearchMemberValue] = useState<string>(''); const userRef = useRef(null as any); let { profile } = useSelector<RootState, accountStoreState>((state) => state.account); const userColumn: ColumnsType<User> = [ { title: t('用户名'), dataIndex: 'username', ellipsis: true, }, { title: t('显示名'), dataIndex: 'nickname', ellipsis: true, render: (text: string, record) => record.nickname || '-', }, { title: t('邮箱'), dataIndex: 'email', render: (text: string, record) => record.email || '-', }, { title: t('手机'), dataIndex: 'phone', render: (text: string, record) => record.phone || '-', }, ]; const teamMemberColumns: ColumnsType<User> = [ ...userColumn, { title: t('操作'), width: '100px', render: ( text: string, record, // <DelPopover ) => ( // teamId={teamId} // memberId={record.id} // userType='member' // onClose={() => handleClose()} // ></DelPopover> <a style={{ color: 'red', }} onClick={() => { let params = { ids: [record.id], }; confirm({ title: t('是否删除该成员'), onOk: () => { deleteMember(teamId, params).then((_) => { message.success(t('成员删除成功')); handleClose('updateMember'); }); }, onCancel: () => {}, }); }} > {t('删除')} </a> ), }, ]; useEffect(() => { getList(true); }, []); //teamId变化触发 useEffect(() => { if (teamId) { getTeamInfoDetail(teamId); } }, [teamId]); const getList = (isDeleteOrAdd = false) => { getTeamList('', isDeleteOrAdd); }; // 获取团队列表 const getTeamList = (search?: string, isDelete?: boolean) => { getTeamInfoList({ query: search || '' }).then((data) => { setTeamList(data.dat || []); if ((!teamId || isDelete) && data.dat.length > 0) { setTeamId(data.dat[0].id); } }); }; // 获取团队详情 const getTeamInfoDetail = (id: string) => { setMemberLoading(true); getTeamInfo(id).then((data: TeamInfo) => { setTeamInfo(data.user_group); setMemberList(data.users); setAllMemberList(data.users); setMemberLoading(false); }); }; const handleSearch = (type?: string, val?: string) => { if (type === 'team') { getTeamList(val); } else { if (!val) { getTeamInfoDetail(teamId); } else { setMemberLoading(true); let newList = allMemberList.filter( (item) => item.username.indexOf(val) !== -1 || item.nickname.indexOf(val) !== -1 || item.id.toString().indexOf(val) !== -1 || item.phone.indexOf(val) !== -1 || item.email.indexOf(val) !== -1, ); setMemberList(newList); setMemberLoading(false); } } }; const handleClick = (type: ActionType, id?: string, memberId?: string) => { if (id) { setTeamId(id); } else { setTeamId(''); } if (memberId) { setMemberId(memberId); } else { setMemberId(''); } setAction(type); setVisible(true); }; // 弹窗关闭回调 const handleClose = (isDeleteOrAdd: boolean | string = false) => { setVisible(false); if (searchValue) { handleSearch('team', searchValue); } else { // 添加、删除成员 不用获取列表 if (isDeleteOrAdd !== 'updateMember') { getList(isDeleteOrAdd !== 'updateName'); // 修改名字,不用选中第一个 } } if (teamId && (isDeleteOrAdd === 'update' || isDeleteOrAdd === 'updateMember' || isDeleteOrAdd === 'updateName')) { getTeamInfoDetail(teamId); } }; return ( <PageLayout title={t('团队管理')} icon={<UserOutlined />} hideCluster> <div className='user-manage-content'> <div style={{ display: 'flex', height: '100%' }}> <div className='left-tree-area'> <div className='sub-title'> {t('团队列表')} <Button style={{ height: '30px', }} size='small' type='link' onClick={() => { handleClick(ActionType.CreateTeam); }} > {t('新建团队')} </Button> </div> <div style={{ display: 'flex', margin: '5px 0px 12px' }}> <Input prefix={<SearchOutlined />} value={searchValue} onChange={(e) => { setSearchValue(e.target.value); }} placeholder={t('搜索团队名称')} onPressEnter={(e) => { // @ts-ignore getTeamList(e.target.value); }} onBlur={(e) => { // @ts-ignore getTeamList(e.target.value); }} /> </div> <List style={{ marginBottom: '12px', flex: 1, overflow: 'auto', }} dataSource={teamList} size='small' renderItem={(item) => ( <List.Item key={item.id} className={teamId === item.id ? 'is-active' : ''} onClick={() => setTeamId(item.id)}> {item.name} </List.Item> )} /> </div> {teamList.length > 0 ? ( <div className='resource-table-content'> <Row className='team-info'> <Col span='24' style={{ color: '#000', fontSize: '14px', fontWeight: 'bold', display: 'inline', }} > {teamInfo && teamInfo.name} <EditOutlined title={t('刷新')} style={{ marginLeft: '8px', fontSize: '14px', }} onClick={() => handleClick(ActionType.EditTeam, teamId)} ></EditOutlined> <DeleteOutlined style={{ marginLeft: '8px', fontSize: '14px', }} onClick={() => { confirm({ title: t('是否删除该团队'), onOk: () => { deleteTeam(teamId).then((_) => { message.success(t('团队删除成功')); handleClose(true); }); }, onCancel: () => {}, }); }} /> </Col> <Col style={{ marginTop: '8px', color: '#666', }} > {t('备注')}:{teamInfo && teamInfo.note ? teamInfo.note : '-'} </Col> </Row> <Row justify='space-between' align='middle'> <Col span='12'> <Input prefix={<SearchOutlined />} value={searchMemberValue} className={'searchInput'} onChange={(e) => setSearchMemberValue(e.target.value)} placeholder={t('用户名、显示名、邮箱或手机')} onPressEnter={(e) => handleSearch('member', searchMemberValue)} /> </Col> <Button type='primary' ghost onClick={() => { handleClick(ActionType.AddUser, teamId); }} > {t('添加成员')} </Button> </Row> <Table rowKey='id' columns={teamMemberColumns} dataSource={memberList} loading={memberLoading} /> </div> ) : ( <div className='blank-busi-holder'> <p style={{ textAlign: 'left', fontWeight: 'bold' }}> <InfoCircleOutlined style={{ color: '#1473ff' }} /> {t('提示信息')} </p> <p> 没有与您相关的团队,请先 <a onClick={() => handleClick(ActionType.CreateTeam)}>创建团队</a> </p> </div> )} </div> <UserInfoModal visible={visible} action={action as ActionType} width={500} userType={activeKey} onClose={handleClose} onSearch={(val) => { setSearchValue(val); handleSearch('team', val); }} userId={userId} teamId={teamId} memberId={memberId} /> </div> </PageLayout> ); }
Example #2
Source File: users.tsx From fe-v5 with Apache License 2.0 | 4 votes |
Resource: React.FC = () => {
const { t } = useTranslation();
const [activeKey, setActiveKey] = useState<UserType>(UserType.User);
const [visible, setVisible] = useState<boolean>(false);
const [action, setAction] = useState<ActionType>();
const [userId, setUserId] = useState<string>('');
const [teamId, setTeamId] = useState<string>('');
const [memberId, setMemberId] = useState<string>('');
const [allMemberList, setAllMemberList] = useState<User[]>([]);
const [teamList, setTeamList] = useState<Team[]>([]);
const [query, setQuery] = useState<string>('');
const [searchValue, setSearchValue] = useState<string>('');
const userRef = useRef(null as any);
let { profile } = useSelector<RootState, accountStoreState>((state) => state.account);
const userColumn: ColumnsType<User> = [
{
title: t('用户名'),
dataIndex: 'username',
ellipsis: true,
},
{
title: t('显示名'),
dataIndex: 'nickname',
ellipsis: true,
render: (text: string, record) => record.nickname || '-',
},
{
title: t('邮箱'),
dataIndex: 'email',
render: (text: string, record) => record.email || '-',
},
{
title: t('手机'),
dataIndex: 'phone',
render: (text: string, record) => record.phone || '-',
},
];
const userColumns: ColumnsType<User> = [
...userColumn,
{
title: t('角色'),
dataIndex: 'roles',
render: (text: [], record) => text.join(', '),
},
{
title: t('操作'),
width: '240px',
render: (text: string, record) => (
<>
<Button className='oper-name' type='link' onClick={() => handleClick(ActionType.EditUser, record.id)}>
{t('编辑')}
</Button>
<Button className='oper-name' type='link' onClick={() => handleClick(ActionType.Reset, record.id)}>
{t('重置密码')}
</Button>
{/* <DelPopover
userId={record.id}
userType='user'
onClose={() => handleClose()}
></DelPopover> */}
<a
style={{
color: 'red',
marginLeft: '16px',
}}
onClick={() => {
confirm({
title: t('是否删除该用户'),
onOk: () => {
deleteUser(record.id).then((_) => {
message.success(t('用户删除成功'));
handleClose();
});
},
onCancel: () => {},
});
}}
>
{t('删除')}
</a>
</>
),
},
];
if (!profile.roles.includes('Admin')) {
userColumns.pop(); //普通用户不展示操作列
}
const getList = () => {
userRef.current.refreshList();
};
const handleClick = (type: ActionType, id?: string, memberId?: string) => {
if (id) {
activeKey === UserType.User ? setUserId(id) : setTeamId(id);
} else {
activeKey === UserType.User ? setUserId('') : setTeamId('');
}
if (memberId) {
setMemberId(memberId);
} else {
setMemberId('');
}
setAction(type);
setVisible(true);
};
// 弹窗关闭回调
const handleClose = () => {
setVisible(false);
getList();
};
const onSearchQuery = (e) => {
let val = e.target.value;
setQuery(val);
};
return (
<PageLayout title={t('用户管理')} icon={<UserOutlined />} hideCluster>
<div className='user-manage-content'>
<div className='user-content'>
<Row className='event-table-search'>
<div className='event-table-search-left'>
<Input className={'searchInput'} prefix={<SearchOutlined />} onPressEnter={onSearchQuery} placeholder={t('用户名、邮箱或手机')} />
</div>
<div className='event-table-search-right'>
{activeKey === UserType.User && profile.roles.includes('Admin') && (
<div className='user-manage-operate'>
<Button type='primary' onClick={() => handleClick(activeKey === UserType.User ? ActionType.CreateUser : t('创建团队'))} ghost>
{t('创建用户')}
</Button>
</div>
)}
</div>
</Row>
<BaseTable
ref={userRef}
fetchHandle={getUserInfoList}
columns={userColumns}
rowKey='id'
needPagination={true}
fetchParams={{
query,
}}
></BaseTable>
</div>
<UserInfoModal
visible={visible}
action={action as ActionType}
width={activeKey === UserType.User ? 500 : 700}
userType={activeKey}
onClose={handleClose}
userId={userId}
teamId={teamId}
memberId={memberId}
/>
</div>
</PageLayout>
);
}