antd#Progress JavaScript Examples
The following examples show how to use
antd#Progress.
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: line-mini.jsx From virtuoso-design-system with MIT License | 6 votes |
storiesOf('antd/progress', module).add('line-mini', () =>
<div style={{ width: 170 }}>
<Progress percent={30} size="small" />
<Progress percent={50} size="small" status="active" />
<Progress percent={70} size="small" status="exception" />
<Progress percent={100} size="small" />
</div>,
{ docs: { page: () => (<><h1 id="enus">en-US</h1>
<p>Appropriate for a narrow area.</p></>) } });
Example #2
Source File: index.jsx From rolwinreevan_gatsby_blog with MIT License | 6 votes |
ProgressBar = (props) => {
const { text, percent } = props;
return (
<div style={{ marginTop: '20px' }}>
<div>
<Progress
percent={percent || 0}
strokeWidth={22}
status="active"
/>
</div>
<div style={{
position: 'absolute',
marginTop: '-22px',
marginLeft: '15px',
color: 'white',
fontSize: '13px',
}}
>
<span>{ text || '' }</span>
</div>
</div>
);
}
Example #3
Source File: circle-dynamic.jsx From virtuoso-design-system with MIT License | 6 votes |
render() {
return (
<>
<Progress type="circle" percent={this.state.percent} />
<Button.Group>
<Button onClick={this.decline} icon={<MinusOutlined />} />
<Button onClick={this.increase} icon={<PlusOutlined />} />
</Button.Group>
</>
);
}
Example #4
Source File: dynamic.jsx From virtuoso-design-system with MIT License | 6 votes |
render() {
return (
<>
<Progress percent={this.state.percent} />
<Button.Group>
<Button onClick={this.decline} icon={<MinusOutlined />} />
<Button onClick={this.increase} icon={<PlusOutlined />} />
</Button.Group>
</>
);
}
Example #5
Source File: gradient-line.jsx From virtuoso-design-system with MIT License | 6 votes |
Demo = () => (
<>
<Progress
strokeColor={{
'0%': '#108ee9',
'100%': '#87d068',
}}
percent={99.9}
/>
<Progress
strokeColor={{
from: '#108ee9',
to: '#87d068',
}}
percent={99.9}
status="active"
/>
<Progress
type="circle"
strokeColor={{
'0%': '#108ee9',
'100%': '#87d068',
}}
percent={90}
/>
<Progress
type="circle"
strokeColor={{
'0%': '#108ee9',
'100%': '#87d068',
}}
percent={100}
/>
</>
)
Example #6
Source File: index.js From gobench with Apache License 2.0 | 6 votes |
render() {
return (
<div>
<h5 className="mb-3">
<strong>Basic</strong>
</h5>
<div className="mb-5">
<div className="mb-3">
<Progress percent={30} />
</div>
<div className="mb-3">
<Progress percent={50} status="active" />
</div>
<div className="mb-3">
<Progress percent={70} status="exception" />
</div>
<div className="mb-3">
<Progress percent={100} />
</div>
<div className="mb-3">
<Progress percent={50} showInfo={false} />
</div>
</div>
</div>
)
}
Example #7
Source File: line.jsx From virtuoso-design-system with MIT License | 6 votes |
storiesOf('antd/progress', module).add('line', () =>
<>
<Progress percent={30} />
<Progress percent={50} status="active" />
<Progress percent={70} status="exception" />
<Progress percent={100} />
<Progress percent={50} showInfo={false} />
</>,
{ docs: { page: () => (<><h1 id="enus">en-US</h1>
<p>A standard progress bar.</p></>) } });
Example #8
Source File: index.js From gobench with Apache License 2.0 | 6 votes |
Chart12v1 = () => {
return (
<div>
<div className="d-flex justify-content-between align-items-center">
<div className="pr-3">
<h2 className="font-size-18 font-weight-bold mb-1 text-dark">Feedbacks</h2>
<p className="font-size-15 mb-3">Profit</p>
</div>
<div className="text-success font-weight-bold font-size-24">160,100</div>
</div>
<div className="mb-3">
<Progress
type="line"
percent={55}
showInfo={false}
strokeWidth={12}
strokeColor="#46be8a"
/>
</div>
<div className="d-flex text-gray-5 justify-content-between font-size-14">
<span className="text-uppercase">Change</span>
<span className="text-uppercase">55%</span>
</div>
</div>
)
}
Example #9
Source File: index.js From gobench with Apache License 2.0 | 6 votes |
Chart12 = () => {
return (
<div>
<div className="d-flex justify-content-between align-items-center">
<div className="pr-3">
<h2 className="font-size-18 font-weight-bold mb-1 text-dark">Total Profit</h2>
<p className="font-size-15 mb-3">Profit</p>
</div>
<div className="text-primary font-weight-bold font-size-24">$18M</div>
</div>
<div className="mb-3">
<Progress
type="line"
percent={78}
showInfo={false}
strokeWidth={12}
strokeColor="#007bff"
/>
</div>
<div className="d-flex text-gray-5 justify-content-between font-size-14">
<span className="text-uppercase">Change</span>
<span className="text-uppercase">78%</span>
</div>
</div>
)
}
Example #10
Source File: segment.jsx From virtuoso-design-system with MIT License | 6 votes |
storiesOf('antd/progress', module).add('segment', () =>
<>
<Tooltip title="3 done / 3 in progress / 4 to do">
<Progress percent={60} success={{ percent: 30 }} />
</Tooltip>
<Tooltip title="3 done / 3 in progress / 4 to do">
<Progress percent={60} success={{ percent: 30 }} type="circle" />
</Tooltip>
<Tooltip title="3 done / 3 in progress / 4 to do">
<Progress percent={60} success={{ percent: 30 }} type="dashboard" />
</Tooltip>
</>,
{ docs: { page: () => (<><h1 id="enus">en-US</h1>
<p>A standard progress bar. Doesn't support trail color when <code>type="circle|dashboard"</code>.</p></>) } });
Example #11
Source File: steps.jsx From virtuoso-design-system with MIT License | 6 votes |
storiesOf('antd/progress', module).add('steps', () =>
<>
<Progress percent={50} steps={3} />
<br />
<Progress percent={30} steps={5} />
<br />
<Progress percent={100} steps={5} size="small" strokeColor="#52c41a" />
</>,
{ docs: { page: () => (<><h1 id="enus">en-US</h1>
<p>A progress bar with steps.</p></>) } });
Example #12
Source File: index.jsx From react-antd-admin-template with MIT License | 6 votes |
render() {
const {avatar} = this.props
return (
<div className="box-card-component">
<Card
cover={
<img
alt="example"
src="https://wpimg.wallstcn.com/e7d23d71-cf19-4b90-a1cc-f56af8c0903d.png"
style={{height:"480px"}}
/>
}
>
<div style={{ position: 'relative' }}>
<PanThumb image={avatar} className="panThumb" />
<Mallki className="mallki-text" text="难凉热血" />
<div style={{paddingTop:"35px"}} className="progress-item">
<span>Vue</span>
<Progress percent={70} />
</div>
<div className="progress-item">
<span>JavaScript</span>
<Progress percent={18} />
</div>
<div className="progress-item">
<span>Css</span>
<Progress percent={12} />
</div>
<div className="progress-item">
<span>ESLint</span>
<Progress percent={100} />
</div>
</div>
</Card>
</div>
);
}
Example #13
Source File: Skills.jsx From developerIdentity with MIT License | 6 votes |
render() {
return (
<div className='skills ' >
<h1 className='tex' > ♛ Skills ♕ </h1>
<h1 className='tex' >I love to create things with Cutting edge technologies..!<span role="img" aria-label="laptop"> ?</span> </h1>
<div className='ant-row'>
{this.state.events.map(ski => (
<div key={ski.id} >
<h2 style={{ color: 'whitesmoke' }} className={ski.icon}>{ }</h2> <i>{ski.title}</i>
<div className='bar' >
<Progress percent={ski.barloading} status="active" strokeColor={
'#4cff00'}
strokeWidth={13
} showInfo={false} /><span className='f5' > {ski.percent}%</span>
</div>
</div>
))}
</div>
</div>
)
}
Example #14
Source File: Progress.jsx From ResoBin with MIT License | 6 votes |
StyledProgress = styled(Progress)`
display: flex;
flex-direction: column-reverse;
align-items: center;
.ant-progress-bg {
background: ${({ theme }) => theme.logo};
}
.ant-progress-text {
color: ${({ theme }) => theme.textColor};
font-weight: 500;
}
.ant-progress-outer {
margin: 0;
padding: 0;
}
`
Example #15
Source File: dashboard.jsx From virtuoso-design-system with MIT License | 5 votes |
storiesOf('antd/progress', module).add('dashboard', () =>
<>
<Progress type="dashboard" percent={75} />
<Progress type="dashboard" percent={75} gapDegree={30} />
</>,
{ docs: { page: () => (<><h1 id="enus">en-US</h1>
<p>By setting <code>type=dashboard</code>, you can get a dashboard style of progress easily. Modify <code>gapDegree</code> to set the degree of gap.</p></>) } });
Example #16
Source File: daily_overview_expand_home.js From art-dashboard-ui with Apache License 2.0 | 5 votes |
render() {
return (
<div style={{backgroundColor: "white", margin: "30px", padding: "30px"}}>
<Divider>Statistics</Divider>
<br/>
<Row className="center">
<Col span={24}>
<StatisticsComp title="Date" value={this.state.date}/>
</Col>
</Row>
<br/>
<Row className="center">
<Col span={6}>
<StatisticsComp title="Total Build Attempts" value={this.state.total}/>
</Col>
<Col span={6}>
<StatisticsComp title="Successful Builds" value={this.state.success}/>
</Col>
<Col span={6}>
<StatisticsComp title="Failed Builds" value={this.state.failure}/>
</Col>
<Col span={6}>
<p>Success Rate</p>
<Progress
type="circle"
strokeColor={{
'0%': '#108ee9',
'100%': '#87d068',
}}
percent={Math.round(this.state.success_rate)}
/>
</Col>
</Row>
<br/>
<Divider>Detail Summary</Divider>
<Daily_overview_expanded_detailed_summary_table data={this.state.expanded_detail_summary_table_data}/>
</div>
)
}
Example #17
Source File: Dashboard.jsx From starter-antd-admin-crud-auth-mern with MIT License | 5 votes |
PreviewState = ({ tag, color, value }) => {
let colorCode = "#000";
switch (color) {
case "bleu":
colorCode = "#1890ff";
break;
case "green":
colorCode = "#95de64";
break;
case "red":
colorCode = "#ff4d4f";
break;
case "orange":
colorCode = "#ffa940";
break;
case "purple":
colorCode = "#722ed1";
break;
case "grey":
colorCode = "#595959";
break;
case "cyan":
colorCode = "#13c2c2";
break;
case "brown":
colorCode = "#614700";
break;
default:
break;
}
return (
<div style={{ color: "#595959", marginBottom: 5 }}>
<div className="left alignLeft">{tag}</div>
<div className="right alignRight">{value} %</div>
<Progress
percent={value}
showInfo={false}
strokeColor={{
"0%": colorCode,
"100%": colorCode,
}}
/>
</div>
);
}
Example #18
Source File: circle-mini.jsx From virtuoso-design-system with MIT License | 5 votes |
storiesOf('antd/progress', module).add('circle-mini', () =>
<>
<Progress type="circle" percent={30} width={80} />
<Progress type="circle" percent={70} width={80} status="exception" />
<Progress type="circle" percent={100} width={80} />
</>,
{ docs: { page: () => (<><h1 id="enus">en-US</h1>
<p>A smaller circular progress bar.</p></>) } });
Example #19
Source File: Dashboard.jsx From erp-crm with MIT License | 5 votes |
PreviewState = ({ tag, color, value }) => {
let colorCode = '#000';
switch (color) {
case 'bleu':
colorCode = '#1890ff';
break;
case 'green':
colorCode = '#95de64';
break;
case 'red':
colorCode = '#ff4d4f';
break;
case 'orange':
colorCode = '#ffa940';
break;
case 'purple':
colorCode = '#722ed1';
break;
case 'grey':
colorCode = '#595959';
break;
case 'cyan':
colorCode = '#13c2c2';
break;
case 'brown':
colorCode = '#614700';
break;
default:
break;
}
return (
<div style={{ color: '#595959', marginBottom: 5 }}>
<div className="left alignLeft">{tag}</div>
<div className="right alignRight">{value} %</div>
<Progress
percent={value}
showInfo={false}
strokeColor={{
'0%': colorCode,
'100%': colorCode,
}}
/>
</div>
);
}
Example #20
Source File: circle.jsx From virtuoso-design-system with MIT License | 5 votes |
storiesOf('antd/progress', module).add('circle', () =>
<>
<Progress type="circle" percent={75} />
<Progress type="circle" percent={70} status="exception" />
<Progress type="circle" percent={100} />
</>,
{ docs: { page: () => (<><h1 id="enus">en-US</h1>
<p>A circular progress bar.</p></>) } });
Example #21
Source File: linecap.jsx From virtuoso-design-system with MIT License | 5 votes |
storiesOf('antd/progress', module).add('linecap', () =>
<>
<Progress strokeLinecap="square" percent={75} />
<Progress strokeLinecap="square" type="circle" percent={75} />
<Progress strokeLinecap="square" type="dashboard" percent={75} />
</>,
{ docs: { page: () => (<><h1 id="enus">en-US</h1>
<p>By setting <code>strokeLinecap="square"</code>, you can change the linecaps from round to square.</p></>) } });
Example #22
Source File: format.jsx From virtuoso-design-system with MIT License | 5 votes |
storiesOf('antd/progress', module).add('format', () =>
<>
<Progress type="circle" percent={75} format={percent => `${percent} Days`} />
<Progress type="circle" percent={100} format={() => 'Done'} />
</>,
{ docs: { page: () => (<><h1 id="enus">en-US</h1>
<p>You can set a custom text by setting the <code>format</code> prop.</p></>) } });
Example #23
Source File: index.jsx From prometheusPro with MIT License | 4 votes |
render() {
const {
listAndbasicList: { list },
loading,
} = this.props;
const {
form: { getFieldDecorator },
} = this.props;
const { visible, done, current = {} } = this.state;
const editAndDelete = (key, currentItem) => {
if (key === 'edit') this.showEditModal(currentItem);
else if (key === 'delete') {
Modal.confirm({
title: '删除任务',
content: '确定删除该任务吗?',
okText: '确认',
cancelText: '取消',
onOk: () => this.deleteItem(currentItem.id),
});
}
};
const modalFooter = done
? {
footer: null,
onCancel: this.handleDone,
}
: {
okText: '保存',
onOk: this.handleSubmit,
onCancel: this.handleCancel,
};
const Info = ({ title, value, bordered }) => (
<div className={styles.headerInfo}>
<span>{title}</span>
<p>{value}</p>
{bordered && <em />}
</div>
);
const extraContent = (
<div className={styles.extraContent}>
<RadioGroup defaultValue="all">
<RadioButton value="all">全部</RadioButton>
<RadioButton value="progress">进行中</RadioButton>
<RadioButton value="waiting">等待中</RadioButton>
</RadioGroup>
<Search className={styles.extraContentSearch} placeholder="请输入" onSearch={() => ({})} />
</div>
);
const paginationProps = {
showSizeChanger: true,
showQuickJumper: true,
pageSize: 5,
total: 50,
};
const ListContent = ({ data: { owner, createdAt, percent, status } }) => (
<div className={styles.listContent}>
<div className={styles.listContentItem}>
<span>Owner</span>
<p>{owner}</p>
</div>
<div className={styles.listContentItem}>
<span>开始时间</span>
<p>{moment(createdAt).format('YYYY-MM-DD HH:mm')}</p>
</div>
<div className={styles.listContentItem}>
<Progress
percent={percent}
status={status}
strokeWidth={6}
style={{
width: 180,
}}
/>
</div>
</div>
);
const MoreBtn = ({ item }) => (
<Dropdown
overlay={
<Menu onClick={({ key }) => editAndDelete(key, item)}>
<Menu.Item key="edit">编辑</Menu.Item>
<Menu.Item key="delete">删除</Menu.Item>
</Menu>
}
>
<a>
更多 <DownOutlined />
</a>
</Dropdown>
);
const getModalContent = () => {
if (done) {
return (
<Result
status="success"
title="操作成功"
subTitle="一系列的信息描述,很短同样也可以带标点。"
extra={
<Button type="primary" onClick={this.handleDone}>
知道了
</Button>
}
className={styles.formResult}
/>
);
}
return (
<Form onSubmit={this.handleSubmit}>
<FormItem label="任务名称" {...this.formLayout}>
{getFieldDecorator('title', {
rules: [
{
required: true,
message: '请输入任务名称',
},
],
initialValue: current.title,
})(<Input placeholder="请输入" />)}
</FormItem>
<FormItem label="开始时间" {...this.formLayout}>
{getFieldDecorator('createdAt', {
rules: [
{
required: true,
message: '请选择开始时间',
},
],
initialValue: current.createdAt ? moment(current.createdAt) : null,
})(
<DatePicker
showTime
placeholder="请选择"
format="YYYY-MM-DD HH:mm:ss"
style={{
width: '100%',
}}
/>,
)}
</FormItem>
<FormItem label="任务负责人" {...this.formLayout}>
{getFieldDecorator('owner', {
rules: [
{
required: true,
message: '请选择任务负责人',
},
],
initialValue: current.owner,
})(
<Select placeholder="请选择">
<SelectOption value="付晓晓">付晓晓</SelectOption>
<SelectOption value="周毛毛">周毛毛</SelectOption>
</Select>,
)}
</FormItem>
<FormItem {...this.formLayout} label="产品描述">
{getFieldDecorator('subDescription', {
rules: [
{
message: '请输入至少五个字符的产品描述!',
min: 5,
},
],
initialValue: current.subDescription,
})(<TextArea rows={4} placeholder="请输入至少五个字符" />)}
</FormItem>
</Form>
);
};
return (
<>
<PageHeaderWrapper>
<div className={styles.standardList}>
<Card bordered={false}>
<Row>
<Col sm={8} xs={24}>
<Info title="我的待办" value="8个任务" bordered />
</Col>
<Col sm={8} xs={24}>
<Info title="本周任务平均处理时间" value="32分钟" bordered />
</Col>
<Col sm={8} xs={24}>
<Info title="本周完成任务数" value="24个任务" />
</Col>
</Row>
</Card>
<Card
className={styles.listCard}
bordered={false}
title="基本列表"
style={{
marginTop: 24,
}}
bodyStyle={{
padding: '0 32px 40px 32px',
}}
extra={extraContent}
>
<Button
type="dashed"
style={{
width: '100%',
marginBottom: 8,
}}
onClick={this.showModal}
ref={component => {
// eslint-disable-next-line react/no-find-dom-node
this.addBtn = findDOMNode(component);
}}
>
<PlusOutlined />
添加
</Button>
<List
size="large"
rowKey="id"
loading={loading}
pagination={paginationProps}
dataSource={list}
renderItem={item => (
<List.Item
actions={[
<a
key="edit"
onClick={e => {
e.preventDefault();
this.showEditModal(item);
}}
>
编辑
</a>,
<MoreBtn key="more" item={item} />,
]}
>
<List.Item.Meta
avatar={<Avatar src={item.logo} shape="square" size="large" />}
title={<a href={item.href}>{item.title}</a>}
description={item.subDescription}
/>
<ListContent data={item} />
</List.Item>
)}
/>
</Card>
</div>
</PageHeaderWrapper>
<Modal
title={done ? null : `任务${current ? '编辑' : '添加'}`}
className={styles.standardListForm}
width={640}
bodyStyle={
done
? {
padding: '72px 0',
}
: {
padding: '28px 0 0',
}
}
destroyOnClose
visible={visible}
{...modalFooter}
>
{getModalContent()}
</Modal>
</>
);
}
Example #24
Source File: tasks.js From hashcat.launcher with MIT License | 4 votes |
render() {
const { taskKey, task } = this.state;
return (
<>
<PageHeader
title="Tasks"
/>
<Content style={{ padding: '16px 24px' }}>
<Row gutter={16} className="height-100 tree-height-100">
<Col className="max-height-100" span={5}>
<Tree
showIcon
blockNode
treeData={this.state.data}
onSelect={this.onSelect}
selectedKeys={[taskKey]}
style={{
height: '100%',
paddingRight: '.5rem',
overflow: 'auto',
background: '#0a0a0a',
border: '1px solid #303030'
}}
/>
</Col>
<Col className="max-height-100" span={19}>
{task ? (
<Row gutter={[16, 14]} className="height-100" style={{ flexDirection: "column", flexWrap: "nowrap" }}>
<Col flex="0 0 auto">
<Row gutter={[16, 14]}>
<Col span={24}>
<PageHeader
title={task.id}
tags={
task.stats.hasOwnProperty("status") ? (
HASHCAT_STATUS_BADGE_WARNING.indexOf(task.stats["status"]) > -1 ? (
<Tag color="warning">{HASHCAT_STATUS_MESSAGES[task.stats["status"]]}</Tag>
) : HASHCAT_STATUS_BADGE_PROCESSING.indexOf(task.stats["status"]) > -1 ? (
<Tag color="processing">{HASHCAT_STATUS_MESSAGES[task.stats["status"]]}</Tag>
) : HASHCAT_STATUS_BADGE_ERROR.indexOf(task.stats["status"]) > -1 ? (
<Tag color="error">{HASHCAT_STATUS_MESSAGES[task.stats["status"]]}</Tag>
) : HASHCAT_STATUS_BADGE_SUCCESS.indexOf(task.stats["status"]) > -1 ? (
<Tag color="success">{HASHCAT_STATUS_MESSAGES[task.stats["status"]]}</Tag>
) : HASHCAT_STATUS_BADGE_PINK.indexOf(task.stats["status"]) > -1 ? (
<Tag color="pink">{HASHCAT_STATUS_MESSAGES[task.stats["status"]]}</Tag>
) : HASHCAT_STATUS_BADGE_YELLOW.indexOf(task.stats["status"]) > -1 ? (
<Tag color="yellow">{HASHCAT_STATUS_MESSAGES[task.stats["status"]]}</Tag>
) : (
<Tag color="default">{HASHCAT_STATUS_MESSAGES[task.stats["status"]]}</Tag>
)
) : null
}
style={{ padding: 0 }}
extra={
<Form layout="inline">
<Form.Item
label="Priority"
>
<InputNumber
min={-1}
max={999}
value={task.priority}
onChange={this.onChangePriority}
readOnly={this.state.isReadOnlyPriority}
bordered={false}
/>
</Form.Item>
<Button
icon={<ControlOutlined />}
onClick={this.onClickArguments}
style={{ marginRight: '1rem' }}
>
Arguments
</Button>
<Popconfirm
placement="topRight"
title="Are you sure you want to delete this task?"
onConfirm={this.onClickDelete}
okText="Yes"
cancelText="No"
>
<Button
type="danger"
icon={<DeleteOutlined />}
loading={this.state.isLoadingDelete}
>
Delete
</Button>
</Popconfirm>
</Form>
}
/>
</Col>
<Col span={24}>
{task.stats.hasOwnProperty("progress") ? (
<Progress type="line" percent={Math.trunc((task.stats["progress"][0] / task.stats["progress"][1])*100)} />
) : (
<Progress type="line" percent={0} />
)}
</Col>
<Col span={24}>
<Row gutter={[12, 10]}>
<Col>
<Button
type="primary"
icon={<PlayCircleOutlined />}
onClick={this.onClickStart}
loading={this.state.isLoadingStart}
>
Start
</Button>
</Col>
<Col>
<Button
icon={<ReloadOutlined />}
onClick={this.onClickRefresh}
loading={this.state.isLoadingRefresh}
>
Refresh
</Button>
</Col>
<Col>
<Button
icon={<PauseOutlined />}
onClick={this.onClickPause}
loading={this.state.isLoadingPause}
>
Pause
</Button>
</Col>
<Col>
<Button
icon={<CaretRightOutlined />}
onClick={this.onClickResume}
loading={this.state.isLoadingResume}
>
Resume
</Button>
</Col>
<Col>
<Button
icon={<EnvironmentOutlined />}
onClick={this.onClickCheckpoint}
loading={this.state.isLoadingCheckpoint}
>
Checkpoint
</Button>
</Col>
<Col>
<Button
icon={<StepForwardOutlined />}
onClick={this.onClickSkip}
loading={this.state.isLoadingSkip}
>
Skip
</Button>
</Col>
<Col>
<Popconfirm
placement="topRight"
title="Are you sure you want to quit this task?"
onConfirm={this.onClickQuit}
okText="Yes"
cancelText="No"
>
<Button
type="danger"
icon={<CloseOutlined />}
loading={this.state.isLoadingQuit}
>
Quit
</Button>
</Popconfirm>
</Col>
</Row>
</Col>
</Row>
</Col>
<Col flex="1 1 auto">
<Row gutter={[16, 14]} className="height-100">
<Col className="max-height-100" span={16}>
<Descriptions
column={2}
layout="horizontal"
bordered
>
{task.stats.hasOwnProperty("status") && (
<Descriptions.Item label="Status" span={2}>
{HASHCAT_STATUS_BADGE_WARNING.indexOf(task.stats["status"]) > -1 ? (
<Badge status="warning" text={HASHCAT_STATUS_MESSAGES[task.stats["status"]]} />
) : HASHCAT_STATUS_BADGE_PROCESSING.indexOf(task.stats["status"]) > -1 ? (
<Badge status="processing" text={HASHCAT_STATUS_MESSAGES[task.stats["status"]]} />
) : HASHCAT_STATUS_BADGE_ERROR.indexOf(task.stats["status"]) > -1 ? (
<Badge status="error" text={HASHCAT_STATUS_MESSAGES[task.stats["status"]]} />
) : HASHCAT_STATUS_BADGE_SUCCESS.indexOf(task.stats["status"]) > -1 ? (
<Badge status="success" text={HASHCAT_STATUS_MESSAGES[task.stats["status"]]} />
) : HASHCAT_STATUS_BADGE_PINK.indexOf(task.stats["status"]) > -1 ? (
<Badge color="pink" text={HASHCAT_STATUS_MESSAGES[task.stats["status"]]} />
) : HASHCAT_STATUS_BADGE_YELLOW.indexOf(task.stats["status"]) > -1 ? (
<Badge color="yellow" text={HASHCAT_STATUS_MESSAGES[task.stats["status"]]} />
) : (
<Badge status="default" text={HASHCAT_STATUS_MESSAGES[task.stats["status"]]} />
)}
</Descriptions.Item>
)}
{task.stats.hasOwnProperty("target") && (
<Descriptions.Item label="Target" span={2}>
{task.stats["target"]}
</Descriptions.Item>
)}
{task.stats.hasOwnProperty("progress") && (
<Descriptions.Item label="Progress" span={2}>
{task.stats["progress"][0] + " / " + task.stats["progress"][1] + " (" + Math.trunc((task.stats["progress"][0] / task.stats["progress"][1])*100) + "%)"}
{task.stats.hasOwnProperty("guess") && (
<Tooltip title={
<Descriptions bordered size="small" column={1} layout="horizontal">
{task.stats.guess.guess_base !== null ? (
<Descriptions.Item label="Guess Base">{task.stats.guess.guess_base} ({task.stats.guess.guess_base_offset}/{task.stats.guess.guess_base_count})</Descriptions.Item>
) : (
<Descriptions.Item label="Guess Base">-</Descriptions.Item>
)}
{task.stats.guess.guess_mod !== null ? (
<Descriptions.Item label="Guess Mod">{task.stats.guess.guess_mod} ({task.stats.guess.guess_mod_offset}/{task.stats.guess.guess_mod_count})</Descriptions.Item>
) : (
<Descriptions.Item label="Guess Mod">-</Descriptions.Item>
)}
</Descriptions>
}>
<InfoCircleOutlined style={{ marginLeft: ".5rem" }} />
</Tooltip>
)}
</Descriptions.Item>
)}
{task.stats.hasOwnProperty("rejected") && (
<Descriptions.Item label="Rejected" span={1}>
{task.stats["rejected"]}
</Descriptions.Item>
)}
{task.stats.hasOwnProperty("restore_point") && (
<Descriptions.Item label="Restore point" span={1}>
{task.stats["restore_point"]}
</Descriptions.Item>
)}
{task.stats.hasOwnProperty("recovered_hashes") && (
<Descriptions.Item label="Recovered hashes" span={1}>
{task.stats["recovered_hashes"][0] + " / " + task.stats["recovered_hashes"][1] + " (" + Math.trunc((task.stats["recovered_hashes"][0] / task.stats["recovered_hashes"][1])*100) + "%)"}
</Descriptions.Item>
)}
{task.stats.hasOwnProperty("recovered_salts") && (
<Descriptions.Item label="Recovered salts" span={1}>
{task.stats["recovered_salts"][0] + " / " + task.stats["recovered_salts"][1] + " (" + Math.trunc((task.stats["recovered_salts"][0] / task.stats["recovered_salts"][1])*100) + "%)"}
</Descriptions.Item>
)}
{task.stats.hasOwnProperty("devices") && (
<Descriptions.Item label="Speed" span={2}>
{humanizeSpeed(totalSpeed(task.stats["devices"]))}
<Tooltip title={
<Table
columns={[
{
title: 'ID',
dataIndex: 'id',
key: 'ID'
},
{
title: 'Speed',
dataIndex: 'speed',
key: 'Speed'
},
{
title: 'Temp',
dataIndex: 'temp',
key: 'Temp'
},
{
title: 'Util',
dataIndex: 'util',
key: 'Util'
}
]}
dataSource={task.stats["devices"].map(device =>
({
key: device.device_id,
id: device.device_id,
speed: humanizeSpeed(device.speed),
temp: device.hasOwnProperty("temp") ? device.temp + " °C": "-",
util: device.util + "%",
})
)}
size="small"
pagination={false}
style={{ overflow: 'auto' }}
/>
}>
<InfoCircleOutlined style={{ marginLeft: ".5rem" }} />
</Tooltip>
</Descriptions.Item>
)}
{task.stats.hasOwnProperty("time_start") && (
<Descriptions.Item label="Started" span={1}>
<Tooltip title={moment.unix(task.stats["time_start"]).format("MMMM Do YYYY, HH:mm")}>
{moment.unix(task.stats["time_start"]).fromNow()}
</Tooltip>
</Descriptions.Item>
)}
{task.stats.hasOwnProperty("estimated_stop") && (
<Descriptions.Item label="ETA" span={1}>
<Tooltip title={moment.unix(task.stats["estimated_stop"]).format("MMMM Do YYYY, HH:mm")}>
{moment.unix(task.stats["estimated_stop"]).fromNow()}
</Tooltip>
</Descriptions.Item>
)}
</Descriptions>
</Col>
<Col className="max-height-100" span={8}>
<div className="height-100" style={{ display: "flex", flexDirection: "column" }}>
<span><CodeOutlined /> Terminal</span>
<pre style={{
flex: 'auto',
overflow: 'auto',
padding: '.5rem',
margin: '0',
border: '1px solid #303030'
}}>
{task.journal.map(j => j.message + "\n")}
</pre>
</div>
</Col>
</Row>
</Col>
</Row>
) : (
"No selected task."
)}
</Col>
</Row>
</Content>
</>
)
}
Example #25
Source File: ExampleUI.jsx From nft-e2e-example with MIT License | 4 votes |
export default function ExampleUI({
purpose,
setPurposeEvents,
address,
mainnetProvider,
userProvider,
localProvider,
yourLocalBalance,
price,
tx,
readContracts,
writeContracts,
}) {
const [newPurpose, setNewPurpose] = useState("loading...");
return (
<div>
{/*
⚙️ Here is an example UI that displays and sets the purpose in your smart contract:
*/}
<div style={{ border: "1px solid #cccccc", padding: 16, width: 400, margin: "auto", marginTop: 64 }}>
<h2>Example UI:</h2>
<h4>purpose: {purpose}</h4>
<Divider />
<div style={{ margin: 8 }}>
<Input
onChange={e => {
setNewPurpose(e.target.value);
}}
/>
<Button
onClick={() => {
console.log("newPurpose", newPurpose);
/* look how you call setPurpose on your contract: */
tx(writeContracts.YourContract.setPurpose(newPurpose));
}}
>
Set Purpose
</Button>
</div>
<Divider />
Your Address:
<Address address={address} ensProvider={mainnetProvider} fontSize={16} />
<Divider />
ENS Address Example:
<Address
address="0x34aA3F359A9D614239015126635CE7732c18fDF3" /* this will show as austingriffith.eth */
ensProvider={mainnetProvider}
fontSize={16}
/>
<Divider />
{/* use formatEther to display a BigNumber: */}
<h2>Your Balance: {yourLocalBalance ? formatEther(yourLocalBalance) : "..."}</h2>
<div>OR</div>
<Balance address={address} provider={localProvider} price={price} />
<Divider />
<div>? Example Whale Balance:</div>
<Balance balance={parseEther("1000")} provider={localProvider} price={price} />
<Divider />
{/* use formatEther to display a BigNumber: */}
<h2>Your Balance: {yourLocalBalance ? formatEther(yourLocalBalance) : "..."}</h2>
<Divider />
Your Contract Address:
<Address
address={readContracts ? readContracts.YourContract.address : readContracts}
ensProvider={mainnetProvider}
fontSize={16}
/>
<Divider />
<div style={{ margin: 8 }}>
<Button
onClick={() => {
/* look how you call setPurpose on your contract: */
tx(writeContracts.YourContract.setPurpose("? Cheers"));
}}
>
Set Purpose to "? Cheers"
</Button>
</div>
<div style={{ margin: 8 }}>
<Button
onClick={() => {
/*
you can also just craft a transaction and send it to the tx() transactor
here we are sending value straight to the contract's address:
*/
tx({
to: writeContracts.YourContract.address,
value: parseEther("0.001"),
});
/* this should throw an error about "no fallback nor receive function" until you add it */
}}
>
Send Value
</Button>
</div>
<div style={{ margin: 8 }}>
<Button
onClick={() => {
/* look how we call setPurpose AND send some value along */
tx(
writeContracts.YourContract.setPurpose("? Paying for this one!", {
value: parseEther("0.001"),
}),
);
/* this will fail until you make the setPurpose function payable */
}}
>
Set Purpose With Value
</Button>
</div>
<div style={{ margin: 8 }}>
<Button
onClick={() => {
/* you can also just craft a transaction and send it to the tx() transactor */
tx({
to: writeContracts.YourContract.address,
value: parseEther("0.001"),
data: writeContracts.YourContract.interface.encodeFunctionData("setPurpose(string)", [
"? Whoa so 1337!",
]),
});
/* this should throw an error about "no fallback nor receive function" until you add it */
}}
>
Another Example
</Button>
</div>
</div>
{/*
? Maybe display a list of events?
(uncomment the event and emit line in YourContract.sol! )
*/}
<div style={{ width: 600, margin: "auto", marginTop: 32, paddingBottom: 32 }}>
<h2>Events:</h2>
<List
bordered
dataSource={setPurposeEvents}
renderItem={item => {
return (
<List.Item key={item.blockNumber + "_" + item.sender + "_" + item.purpose}>
<Address address={item[0]} ensProvider={mainnetProvider} fontSize={16} /> =>
{item[1]}
</List.Item>
);
}}
/>
</div>
<div style={{ width: 600, margin: "auto", marginTop: 32, paddingBottom: 256 }}>
<Card>
Check out all the{" "}
<a
href="https://github.com/austintgriffith/scaffold-eth/tree/master/packages/react-app/src/components"
target="_blank"
rel="noopener noreferrer"
>
? components
</a>
</Card>
<Card style={{ marginTop: 32 }}>
<div>
There are tons of generic components included from{" "}
<a href="https://ant.design/components/overview/" target="_blank" rel="noopener noreferrer">
? ant.design
</a>{" "}
too!
</div>
<div style={{ marginTop: 8 }}>
<Button type="primary">Buttons</Button>
</div>
<div style={{ marginTop: 8 }}>
<SyncOutlined spin /> Icons
</div>
<div style={{ marginTop: 8 }}>
Date Pickers?
<div style={{ marginTop: 2 }}>
<DatePicker onChange={() => {}} />
</div>
</div>
<div style={{ marginTop: 32 }}>
<Slider range defaultValue={[20, 50]} onChange={() => {}} />
</div>
<div style={{ marginTop: 32 }}>
<Switch defaultChecked onChange={() => {}} />
</div>
<div style={{ marginTop: 32 }}>
<Progress percent={50} status="active" />
</div>
<div style={{ marginTop: 32 }}>
<Spin />
</div>
</Card>
</div>
</div>
);
}
Example #26
Source File: LaunchpadProject.js From acy-dex-interface with MIT License | 4 votes |
TokenProcedure = ({ receivedData, poolBaseData, comparesaleDate, comparevestDate }) => {
const now_moment_utc = moment.utc();
const end_moment_utc = moment.utc(receivedData.saleEnd);
const start_moment_utc = moment.utc(receivedData.saleStart);
let procedure_status;
if (end_moment_utc < now_moment_utc) {
procedure_status = 'end';
} else {
procedure_status = 'open';
}
console.log('procedure', procedure_status);
const Procedure = () => {
return (
<div className="cardContent">
<div className="procedure">
<hr aria-orientation="vertical" className="verticalDivideLine" />
<div className="procedureNumber">1</div>
<div>
<p>Allocation</p>
</div>
</div>
<div className="procedure" style={{ marginTop: '24px' }}>
<hr
aria-orientation="vertical"
className={comparesaleDate ? 'verticalDivideLine' : 'verticalDivideLine_NotActive'}
/>
<div className={comparesaleDate ? 'procedureNumber' : 'procedureNumber_NotActive'}>
2
</div>
<div>
<p>Sale (FCFS)</p>
<div>
<p className="shortText">Start: </p>
<FormatedTime utc_string={receivedData.saleStart} />
<p className="shortText">End: </p>
<FormatedTime utc_string={receivedData.saleEnd} />
</div>
</div>
</div>
<div className="procedure" style={{ marginTop: '24px' }}>
<div className={comparevestDate ? 'procedureNumber' : 'procedureNumber_NotActive'}>
3
</div>
<div>
<p>Vesting</p>
</div>
</div>
</div>
);
};
const ProgressBar = ({ alreadySale, totalSale, projectToken }) => {
const salePercentage = (100 * Number(alreadySale) / Number(totalSale)).toFixed(2)
let tokenNum, mainCoinNum;
if (!alreadySale) {
tokenNum = 0
mainCoinNum = 0
} else {
tokenNum = alreadySale
mainCoinNum = (receivedData.totalRaise * alreadySale / totalSale).toFixed(0)
}
const progressStyle = {
width: { salePercentage } + '%',
};
const clickToScan = (address) => {
let link_url
if (LAUNCH_MAIN_TOKEN() == receivedData.mainCoin) {
link_url = SCAN_URL_PREFIX() + '/address/' + address
} else {
link_url = SCAN_URL_PREFIX() + '/address/' + address + '#tokentxns'
}
const newWindow = window.open(link_url, '_blank', 'noopener,noreferrer');
if (newWindow) newWindow.opener = null;
}
const [isShowToken, setIsShowToken] = useState(false)
const Image = React.memo(function Image({ src }) {
return <img
className="link"
alt=""
src={src}
loading="eager"
class="filter-acy-orange"
onClick={() => clickToScan(LAUNCHPAD_ADDRESS())}
/>;
});
return (
<>
<div
className="cardContent"
style={{ background: '#1a1d1c', borderRadius: '0rem 0rem 1rem 1rem' }}
>
<div className="progressHeader">
<p>Sale ProgressBar<span><Image src={linkBIcon} /></span>
</p>
<p style={{ color: '#eb5c1f' }}>{salePercentage}%</p>
</div>
<div className={styles.tokenProgress}>
<Progress
strokeColor={{
from: '#c6224e',
to: '#eb6c20',
}}
percent={salePercentage}
status={salePercentage === 0 ? "normal" : salePercentage !== 100 ? "active" : "success"}
/>
</div>
<div className="progressAmount" onClick={() => setIsShowToken(!isShowToken)}>
{
isShowToken ?
<div>{`${nFormatter(tokenNum, 3)} / ${nFormatter(totalSale, 3)} ${projectToken}`}</div>
:
<div>{`${nFormatter(mainCoinNum, 3)} / ${nFormatter(receivedData.totalRaise, 3)} ${receivedData.mainCoin}`}</div>
}
</div>
</div>
</>
);
};
return (
<div
className="circleBorderCard"
style={{
padding: 0,
}}
>
<Procedure />
{poolBaseData && procedure_status === 'open' &&
<ProgressBar
alreadySale={poolBaseData[1]}
totalSale={poolBaseData[0]}
projectToken={receivedData.projectToken}
/>
}
</div>
);
}
Example #27
Source File: index.js From ant-simple-pro with MIT License | 4 votes |
index = memo(function index() {
console.log('environment', environment())
const { Meta } = Card
const list = [
{
title: 'vue',
img: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606222411854&di=f097ace643e702e80a45436d3b9b3c1f&imgtype=0&src=http%3A%2F%2Fimg.php.cn%2Fupload%2Farticle%2F000%2F000%2F013%2F58452323389fc205.png',
des: '一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。'
},
{
title: 'react',
img: 'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2562962807,8352544&fm=26&gp=0.jpg',
des: '用于构建用户界面的 JavaScript 库,React 使创建交互式 UI 变得轻而易举,强大的生态支持,hooks使代码更加减少和实用'
},
{
title: 'angular',
img: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606223295087&di=1bd6c1d9c87c24458edc77f051eb00ba&imgtype=0&src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20180226%2F28d9ed8bd555408cbe1fd4a446c4b671.jpeg',
des: 'Angular构建应用,把这些代码和能力复用在多种多种不同平台的应用上,Web、移动 Web、移动应用等'
},
{
title: 'webpack',
img: 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1768538313,3737670186&fm=26&gp=0.jpg',
des: 'webpack找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(TypeScript等),将其转换和打包'
}
];
var data = [
{
type: 'ts',
value: 40,
},
{
type: 'react',
value: 20,
},
{
type: 'vue3.0',
value: 20,
},
{
type: 'angular',
value: 10,
},
{
type: 'css',
value: 10,
}
];
var config = {
appendPadding: 10,
data: data,
angleField: 'value',
colorField: 'type',
radius: 0.8,
label: {
type: 'outer',
formatter(v) {
return `${v.type}`
}
},
interactions: [{ type: 'pie-legend-active' }, { type: 'element-active' }],
legend: { position: 'bottom' },
tooltip: {
formatter: (v) => {
return { name: v.type, value: v.value + '%' }
},
}
};
const barConfig = {
data: data,
xField: 'value',
yField: 'type',
seriesField: 'type',
legend: { position: 'top' },
tooltip: {
formatter: (v) => {
return { name: v.type, value: v.value + '%' }
},
showTitle: false
}
}
return (
<>
<Row gutter={[10, 10]}>
<Col xs={24} sm={24} md={12} lg={8} xl={8}>
<Card
hoverable
cover={<img src={logon} alt="logon" height={250} />}>
<Meta
avatar={
<SvgIcon iconClass='logon' fontSize='30px' />
}
title='Ant-Simple-Pro'
description='简洁,美观,快速上手,支持3大框架;Concise, beautiful, quick to get started, support 3 big frameworks'
/>
<ul style={{ marginTop: '10px' }}>
{
data.map((item, index) => (
<li key={index}>
<div>{item.type}</div>
<Progress percent={item.value} status="active" />
</li>
))
}
</ul>
</Card>
</Col>
<Col xs={24} sm={24} md={12} lg={8} xl={8}>
<Pie {...config} className='bgW padding-10px' />
</Col>
<Col xs={24} sm={24} md={12} lg={8} xl={8}>
<Bar {...barConfig} className='bgW padding-10px'></Bar>
</Col>
</Row>
<List
grid={{
gutter: 16,
xs: 1,
sm: 2,
md: 4,
lg: 4,
xl: 4,
xxl: 4,
}}
dataSource={list}
renderItem={item => (
<List.Item>
<Card hoverable
cover={<img src={logon} alt="logon" />}>
<Meta
avatar={
<Avatar src={item.img} shape="square" />
}
title={item.title}
description={item.des}
/>
</Card>
</List.Item>
)}
/>
</>
)
})
Example #28
Source File: BasicList.js From youdidao-unmanned-shop with MIT License | 4 votes |
render() {
const {
list: { list },
loading,
} = this.props;
const {
form: { getFieldDecorator },
} = this.props;
const { visible, done, current = {} } = this.state;
const editAndDelete = (key, currentItem) => {
if (key === 'edit') this.showEditModal(currentItem);
else if (key === 'delete') {
Modal.confirm({
title: '删除任务',
content: '确定删除该任务吗?',
okText: '确认',
cancelText: '取消',
onOk: () => this.deleteItem(currentItem.id),
});
}
};
const modalFooter = done
? { footer: null, onCancel: this.handleDone }
: { okText: '保存', onOk: this.handleSubmit, onCancel: this.handleCancel };
const Info = ({ title, value, bordered }) => (
<div className={styles.headerInfo}>
<span>{title}</span>
<p>{value}</p>
{bordered && <em />}
</div>
);
const extraContent = (
<div className={styles.extraContent}>
<RadioGroup defaultValue="all">
<RadioButton value="all">全部</RadioButton>
<RadioButton value="progress">进行中</RadioButton>
<RadioButton value="waiting">等待中</RadioButton>
</RadioGroup>
<Search className={styles.extraContentSearch} placeholder="请输入" onSearch={() => ({})} />
</div>
);
const paginationProps = {
showSizeChanger: true,
showQuickJumper: true,
pageSize: 5,
total: 50,
};
const ListContent = ({ data: { owner, createdAt, percent, status } }) => (
<div className={styles.listContent}>
<div className={styles.listContentItem}>
<span>Owner</span>
<p>{owner}</p>
</div>
<div className={styles.listContentItem}>
<span>开始时间</span>
<p>{moment(createdAt).format('YYYY-MM-DD HH:mm')}</p>
</div>
<div className={styles.listContentItem}>
<Progress percent={percent} status={status} strokeWidth={6} style={{ width: 180 }} />
</div>
</div>
);
const MoreBtn = props => (
<Dropdown
overlay={
<Menu onClick={({ key }) => editAndDelete(key, props.current)}>
<Menu.Item key="edit">编辑</Menu.Item>
<Menu.Item key="delete">删除</Menu.Item>
</Menu>
}
>
<a>
更多 <Icon type="down" />
</a>
</Dropdown>
);
const getModalContent = () => {
if (done) {
return (
<Result
type="success"
title="操作成功"
description="一系列的信息描述,很短同样也可以带标点。"
actions={
<Button type="primary" onClick={this.handleDone}>
知道了
</Button>
}
className={styles.formResult}
/>
);
}
return (
<Form onSubmit={this.handleSubmit}>
<FormItem label="任务名称" {...this.formLayout}>
{getFieldDecorator('title', {
rules: [{ required: true, message: '请输入任务名称' }],
initialValue: current.title,
})(<Input placeholder="请输入" />)}
</FormItem>
<FormItem label="开始时间" {...this.formLayout}>
{getFieldDecorator('createdAt', {
rules: [{ required: true, message: '请选择开始时间' }],
initialValue: current.createdAt ? moment(current.createdAt) : null,
})(
<DatePicker
showTime
placeholder="请选择"
format="YYYY-MM-DD HH:mm:ss"
style={{ width: '100%' }}
/>
)}
</FormItem>
<FormItem label="任务负责人" {...this.formLayout}>
{getFieldDecorator('owner', {
rules: [{ required: true, message: '请选择任务负责人' }],
initialValue: current.owner,
})(
<Select placeholder="请选择">
<SelectOption value="付晓晓">付晓晓</SelectOption>
<SelectOption value="周毛毛">周毛毛</SelectOption>
</Select>
)}
</FormItem>
<FormItem {...this.formLayout} label="产品描述">
{getFieldDecorator('subDescription', {
rules: [{ message: '请输入至少五个字符的产品描述!', min: 5 }],
initialValue: current.subDescription,
})(<TextArea rows={4} placeholder="请输入至少五个字符" />)}
</FormItem>
</Form>
);
};
return (
<PageHeaderWrapper>
<div className={styles.standardList}>
<Card bordered={false}>
<Row>
<Col sm={8} xs={24}>
<Info title="我的待办" value="8个任务" bordered />
</Col>
<Col sm={8} xs={24}>
<Info title="本周任务平均处理时间" value="32分钟" bordered />
</Col>
<Col sm={8} xs={24}>
<Info title="本周完成任务数" value="24个任务" />
</Col>
</Row>
</Card>
<Card
className={styles.listCard}
bordered={false}
title="标准列表"
style={{ marginTop: 24 }}
bodyStyle={{ padding: '0 32px 40px 32px' }}
extra={extraContent}
>
<Button
type="dashed"
style={{ width: '100%', marginBottom: 8 }}
icon="plus"
onClick={this.showModal}
ref={component => {
/* eslint-disable */
this.addBtn = findDOMNode(component);
/* eslint-enable */
}}
>
添加
</Button>
<List
size="large"
rowKey="id"
loading={loading}
pagination={paginationProps}
dataSource={list}
renderItem={item => (
<List.Item
actions={[
<a
onClick={e => {
e.preventDefault();
this.showEditModal(item);
}}
>
编辑
</a>,
<MoreBtn current={item} />,
]}
>
<List.Item.Meta
avatar={<Avatar src={item.logo} shape="square" size="large" />}
title={<a href={item.href}>{item.title}</a>}
description={item.subDescription}
/>
<ListContent data={item} />
</List.Item>
)}
/>
</Card>
</div>
<Modal
title={done ? null : `任务${current.id ? '编辑' : '添加'}`}
className={styles.standardListForm}
width={640}
bodyStyle={done ? { padding: '72px 0' } : { padding: '28px 0 0' }}
destroyOnClose
visible={visible}
{...modalFooter}
>
{getModalContent()}
</Modal>
</PageHeaderWrapper>
);
}
Example #29
Source File: Dashboard.jsx From starter-antd-admin-crud-auth-mern with MIT License | 4 votes |
export default function Dashboard() {
const leadColumns = [
{
title: "Client",
dataIndex: "client",
},
{
title: "phone",
dataIndex: "phone",
},
{
title: "Status",
dataIndex: "status",
render: (status) => {
let color = status === "pending" ? "volcano" : "green";
return <Tag color={color}>{status.toUpperCase()}</Tag>;
},
},
];
const productColumns = [
{
title: "Product Name",
dataIndex: "productName",
},
{
title: "Price",
dataIndex: "price",
},
{
title: "Status",
dataIndex: "status",
render: (status) => {
let color = status === "available" ? "green" : "volcano";
return <Tag color={color}>{status.toUpperCase()}</Tag>;
},
},
];
return (
<DashboardLayout>
<Row gutter={[24, 24]}>
<TopCard
title={"Leads"}
tagColor={"cyan"}
prefix={"This month"}
tagContent={"34 000 $"}
/>
<TopCard
title={"Order"}
tagColor={"purple"}
prefix={"This month"}
tagContent={"34 000 $"}
/>
<TopCard
title={"Payment"}
tagColor={"green"}
prefix={"This month"}
tagContent={"34 000 $"}
/>
<TopCard
title={"Due Balance"}
tagColor={"red"}
prefix={"Not Paid"}
tagContent={"34 000 $"}
/>
</Row>
<div className="space30"></div>
<Row gutter={[24, 24]}>
<Col className="gutter-row" span={18}>
<div className="whiteBox shadow" style={{ height: "380px" }}>
<Row className="pad10" gutter={[0, 0]}>
<Col className="gutter-row" span={8}>
<div className="pad15">
<h3 style={{ color: "#22075e", marginBottom: 15 }}>
Lead Preview
</h3>
<PreviewState tag={"Draft"} color={"grey"} value={3} />
<PreviewState tag={"Pending"} color={"bleu"} value={5} />
<PreviewState tag={"Not Paid"} color={"orange"} value={12} />
<PreviewState tag={"Overdue"} color={"red"} value={6} />
<PreviewState
tag={"Partially Paid"}
color={"cyan"}
value={8}
/>
<PreviewState tag={"Paid"} color={"green"} value={55} />
</div>
</Col>
<Col className="gutter-row" span={8}>
{" "}
<div className="pad15">
<h3 style={{ color: "#22075e", marginBottom: 15 }}>
Quote Preview
</h3>
<PreviewState tag={"Draft"} color={"grey"} value={3} />
<PreviewState tag={"Pending"} color={"bleu"} value={5} />
<PreviewState tag={"Not Paid"} color={"orange"} value={12} />
<PreviewState tag={"Overdue"} color={"red"} value={6} />
<PreviewState
tag={"Partially Paid"}
color={"cyan"}
value={8}
/>
<PreviewState tag={"Paid"} color={"green"} value={55} />
</div>
</Col>
<Col className="gutter-row" span={8}>
{" "}
<div className="pad15">
<h3 style={{ color: "#22075e", marginBottom: 15 }}>
Order Preview
</h3>
<PreviewState tag={"Draft"} color={"grey"} value={3} />
<PreviewState tag={"Pending"} color={"bleu"} value={5} />
<PreviewState tag={"Not Paid"} color={"orange"} value={12} />
<PreviewState tag={"Overdue"} color={"red"} value={6} />
<PreviewState
tag={"Partially Paid"}
color={"cyan"}
value={8}
/>
<PreviewState tag={"Paid"} color={"green"} value={55} />
</div>
</Col>
</Row>
</div>
</Col>
<Col className="gutter-row" span={6}>
<div className="whiteBox shadow" style={{ height: "380px" }}>
<div
className="pad20"
style={{ textAlign: "center", justifyContent: "center" }}
>
<h3 style={{ color: "#22075e", marginBottom: 30 }}>
Customer Preview
</h3>
<Progress type="dashboard" percent={25} width={148} />
<p>New Customer this Month</p>
<Divider />
<Statistic
title="Active Customer"
value={11.28}
precision={2}
valueStyle={{ color: "#3f8600" }}
prefix={<ArrowUpOutlined />}
suffix="%"
/>
</div>
</div>
</Col>
</Row>
<div className="space30"></div>
<Row gutter={[24, 24]}>
<Col className="gutter-row" span={12}>
<div className="whiteBox shadow">
<div className="pad20">
<h3 style={{ color: "#22075e", marginBottom: 5 }}>
Recent Leads
</h3>
</div>
<RecentTable entity={"lead"} dataTableColumns={leadColumns} />
</div>
</Col>
<Col className="gutter-row" span={12}>
<div className="whiteBox shadow">
<div className="pad20">
<h3 style={{ color: "#22075e", marginBottom: 5 }}>
Recent Products
</h3>
</div>
<RecentTable entity={"product"} dataTableColumns={productColumns} />
</div>
</Col>
</Row>
</DashboardLayout>
);
}