Browse Source

List & Dashboard Design Review

pull/8/head^2
nikogu 9 years ago
parent
commit
b4d7f6cd7a
  1. 3
      src/components/Charts/MiniArea/index.js
  2. 17
      src/components/Charts/MiniProgress/index.js
  3. 1
      src/components/Charts/MiniProgress/index.less
  4. 4
      src/components/Charts/Pie/index.js
  5. 2
      src/components/TagCloud/index.js
  6. 3
      src/layouts/PageHeaderLayout.js
  7. 6
      src/routes/Dashboard/Analysis.js
  8. 5
      src/routes/Dashboard/Analysis.less
  9. 34
      src/routes/Dashboard/Monitor.js
  10. 2
      src/routes/Dashboard/Workplace.js

3
src/components/Charts/MiniArea/index.js

@ -18,7 +18,7 @@ class MiniArea extends PureComponent {
} }
renderChart(data) { renderChart(data) {
const { height = 0, fit = true, color = '#33abfb', line, xAxis, yAxis } = this.props; const { height = 0, fit = true, color = '#33abfb', line, xAxis, yAxis, animate = true } = this.props;
if (!data || (data && data.length < 1)) { if (!data || (data && data.length < 1)) {
return; return;
@ -31,6 +31,7 @@ class MiniArea extends PureComponent {
container: this.node, container: this.node,
forceFit: fit, forceFit: fit,
height: height + 54, height: height + 54,
animate,
plotCfg: { plotCfg: {
margin: [36, 0, 30, 0], margin: [36, 0, 30, 0],
}, },

17
src/components/Charts/MiniProgress/index.js

@ -1,16 +1,19 @@
import React from 'react'; import React from 'react';
import { Popover } from 'antd';
import styles from './index.less'; import styles from './index.less';
const MiniProgress = ({ target, color, strokeWidth, percent }) => ( const MiniProgress = ({ target, color, strokeWidth, percent }) => (
<div className={styles.miniProgress}> <div className={styles.miniProgress}>
<div <Popover title={null} content={`目标值: ${target}%`}>
className={styles.target} <div
style={{ left: (target ? `${target}%` : null) }} className={styles.target}
> style={{ left: (target ? `${target}%` : null) }}
<span style={{ backgroundColor: (color || null) }} /> >
<span style={{ backgroundColor: (color || null) }} /> <span style={{ backgroundColor: (color || null) }} />
</div> <span style={{ backgroundColor: (color || null) }} />
</div>
</Popover>
<div className={styles.progressWrap}> <div className={styles.progressWrap}>
<div <div
className={styles.progress} className={styles.progress}

1
src/components/Charts/MiniProgress/index.less

@ -17,6 +17,7 @@
height: 100%; height: 100%;
} }
.target { .target {
cursor: pointer;
position: absolute; position: absolute;
top: 0; top: 0;
bottom: 0; bottom: 0;

4
src/components/Charts/Pie/index.js

@ -14,7 +14,9 @@ class Pie extends Component {
} }
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
this.renderChart(nextProps.data); if (this.props.data !== nextProps.data) {
this.renderChart(nextProps.data);
}
} }
handleRef = (n) => { handleRef = (n) => {

2
src/components/TagCloud/index.js

@ -79,7 +79,7 @@ class TagCloud extends PureComponent {
height, height,
// 设定文字大小配置函数(默认为12-40px的随机大小) // 设定文字大小配置函数(默认为12-40px的随机大小)
size: words => (((words.value - min) / (max - min)) * 10) + 12, size: words => (((words.value - min) / (max - min)) * 12) + 6,
// 设定文字内容 // 设定文字内容
text: words => words.name, text: words => words.name,

3
src/layouts/PageHeaderLayout.js

@ -1,8 +1,9 @@
import React from 'react'; import React from 'react';
import PageHeader from '../components/PageHeader'; import PageHeader from '../components/PageHeader';
export default ({ children, wrapperClassName, ...restProps }) => ( export default ({ children, wrapperClassName, top, ...restProps }) => (
<div style={{ margin: '-24px -24px 0' }} className={wrapperClassName}> <div style={{ margin: '-24px -24px 0' }} className={wrapperClassName}>
{top}
<PageHeader {...restProps} /> <PageHeader {...restProps} />
{children ? <div style={{ margin: '24px 24px 0' }}>{children}</div> : null} {children ? <div style={{ margin: '24px 24px 0' }}>{children}</div> : null}
</div> </div>

6
src/routes/Dashboard/Analysis.js

@ -60,6 +60,10 @@ export default class Analysis extends Component {
this.setState({ this.setState({
rangePickerValue, rangePickerValue,
}); });
this.props.dispatch({
type: 'chart/fetchSalesData',
});
} }
selectDate = (type) => { selectDate = (type) => {
@ -84,7 +88,7 @@ export default class Analysis extends Component {
salesTypeData, salesTypeData,
salesTypeDataOnline, salesTypeDataOnline,
salesTypeDataOffline, salesTypeDataOffline,
} = chart; } = chart;
const salesPieData = salesType === 'all' ? const salesPieData = salesType === 'all' ?
salesTypeData salesTypeData

5
src/routes/Dashboard/Analysis.less

@ -3,8 +3,13 @@
.iconGroup { .iconGroup {
i { i {
transition: color 0.32s;
color: @text-color-secondary;
cursor: pointer; cursor: pointer;
margin-left: 16px; margin-left: 16px;
&:hover {
color: @text-color;
}
} }
} }
.rankingList { .rankingList {

34
src/routes/Dashboard/Monitor.js

@ -11,12 +11,15 @@ import { fixedZero } from '../../utils/utils';
import styles from './Monitor.less'; import styles from './Monitor.less';
const activeData = []; function getActiveData() {
for (let i = 0; i < 24; i += 1) { const activeData = [];
activeData.push({ for (let i = 0; i < 24; i += 1) {
x: `${fixedZero(i)}:00`, activeData.push({
y: (i * 50) + (Math.floor(Math.random() * 200)), x: `${fixedZero(i)}:00`,
}); y: (i * 50) + (Math.floor(Math.random() * 200)),
});
}
return activeData;
} }
const MapData = []; const MapData = [];
@ -33,13 +36,23 @@ const targetTime = new Date().getTime() + 3900000;
monitor: state.monitor, monitor: state.monitor,
})) }))
export default class Monitor extends PureComponent { export default class Monitor extends PureComponent {
state = {
activeData: getActiveData(),
}
componentDidMount() { componentDidMount() {
this.props.dispatch({ this.props.dispatch({
type: 'monitor/fetchTags', type: 'monitor/fetchTags',
}); });
}
setInterval(() => {
this.setState({
activeData: getActiveData(),
});
}, 1000);
}
render() { render() {
const { activeData = [] } = this.state;
const { monitor } = this.props; const { monitor } = this.props;
const { tags } = monitor; const { tags } = monitor;
@ -90,6 +103,7 @@ export default class Monitor extends PureComponent {
/> />
<div style={{ marginTop: 32 }}> <div style={{ marginTop: 32 }}>
<MiniArea <MiniArea
animate={false}
line line
color="#5DD1DD" color="#5DD1DD"
height={84} height={84}
@ -129,7 +143,7 @@ export default class Monitor extends PureComponent {
bordered={false} bordered={false}
> >
<Gauge <Gauge
title="跳出率" title="核销率"
height={164} height={164}
percent={87} percent={87}
/> />
@ -143,7 +157,7 @@ export default class Monitor extends PureComponent {
style={{ marginBottom: 24 }} style={{ marginBottom: 24 }}
bordered={false} bordered={false}
> >
<Row style={{ padding: '18px 0 19px 0' }}> <Row gutter={4} style={{ padding: '18px 0 19px 0' }}>
<Col span={8}> <Col span={8}>
<Pie <Pie
percent={28} percent={28}
@ -174,7 +188,7 @@ export default class Monitor extends PureComponent {
</Card> </Card>
</Col> </Col>
<Col sm={8} xs={24} style={{ marginBottom: 24 }}> <Col sm={8} xs={24} style={{ marginBottom: 24 }}>
<Card title="热门搜索" bordered={false}> <Card title="热门搜索" bordered={false} bodyStyle={{ height: 214 }}>
<TagCloud <TagCloud
data={tags} data={tags}
height={161} height={161}

2
src/routes/Dashboard/Workplace.js

@ -144,9 +144,9 @@ export default class Workplace extends PureComponent {
return ( return (
<PageHeaderLayout <PageHeaderLayout
top={pageHeaderContent}
action={pageHeaderAction} action={pageHeaderAction}
title={pageHeaderTitle} title={pageHeaderTitle}
content={pageHeaderContent}
> >
<Row gutter={24}> <Row gutter={24}>
<Col lg={16} md={24} sm={24} xs={24}> <Col lg={16} md={24} sm={24} xs={24}>

Loading…
Cancel
Save