You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ant-design/components/progress/index.jsx

126 lines
3.1 KiB
React

10 years ago
'use strict';
var Progressline = require('rc-progress').Line;
var Progresscircle = require('rc-progress').Circle;
var React = require('react');
var Line = React.createClass({
getDefaultProps: function () {
10 years ago
return {
percent: 0,
strokeWidth: 2,
status: 'normal' // exception
10 years ago
};
10 years ago
},
render() {
var statusColorMap = {
'normal': '#3FC7FA',
'exception': '#FE8C6A',
'success': '#85D262'
};
if (parseInt(this.props.percent) === 100) {
10 years ago
this.props.status = 'success';
}
10 years ago
var style = {
'width': this.props.width
10 years ago
};
var wrapStyle = {
'font-size': this.props.width / 100 * this.props.strokeWidth
10 years ago
};
var textStyle = {
'color': statusColorMap[this.props.status]
10 years ago
};
var progressInfo;
if (this.props.status === 'exception') {
10 years ago
progressInfo = (
<span style={textStyle} className='ant-progress-line-text'>
<i className='anticon anticon-exclamation-round'></i>
</span>
10 years ago
);
} else if(this.props.status === 'success'){
progressInfo = (
<span style={textStyle} className='ant-progress-line-text'>
<i className='anticon anticon-check-round'></i>
</span>
10 years ago
);
10 years ago
}else {
progressInfo = (
<span className='ant-progress-line-text'>{this.props.percent}%</span>
10 years ago
);
10 years ago
}
return (
<div className='ant-progress-line-wrap' style={wrapStyle}>
<div className='ant-progress-line-inner' style={style}>
<Progressline percent={this.props.percent} strokeWidth={this.props.strokeWidth}
strokeColor={statusColorMap[this.props.status]}/>
</div>
10 years ago
{progressInfo}
</div>
);
}
});
var Circle = React.createClass({
getDefaultProps: function () {
10 years ago
return {
percent: 0,
strokeWidth: 2,
status: 'normal' // exception
10 years ago
};
10 years ago
},
render() {
var statusColorMap = {
'normal': '#3FC7FA',
'exception': '#FE8C6A',
'success': '#85D262'
};
if (parseInt(this.props.percent) === 100) {
10 years ago
this.props.status = 'success';
}
10 years ago
var style = {
'width': this.props.width,
'height': this.props.width
10 years ago
};
var wrapStyle = {
'font-size': this.props.width * 0.3
10 years ago
};
var textStyle = {
'color': statusColorMap[this.props.status]
10 years ago
};
var progressInfo;
if (this.props.status === 'exception') {
10 years ago
progressInfo = (
<span style={textStyle} className='ant-progress-circle-text'>
<i className='anticon anticon-exclamation'></i>
</span>
10 years ago
);
}else {
10 years ago
progressInfo = (
<span className="ant-progress-circle-text">{this.props.percent}%</span>
10 years ago
);
10 years ago
}
return (
<div className="ant-progress-circle-wrap" style={wrapStyle}>
<div className="ant-progress-circle-inner" style={style}>
<Progresscircle percent={this.props.percent} strokeWidth={this.props.strokeWidth}
strokeColor={statusColorMap[this.props.status]}/>
{progressInfo}
</div>
10 years ago
</div>
);
}
});
module.exports = {
Line: Line,
Circle: Circle
};