Преглед изворни кода

List & Dashboard Design Review

nikogu пре 8 година
родитељ
комит
b9382623ba

+ 2 - 1
src/components/Charts/MiniArea/index.js

@@ -18,7 +18,7 @@ class MiniArea extends PureComponent {
   }
 
   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)) {
       return;
@@ -31,6 +31,7 @@ class MiniArea extends PureComponent {
       container: this.node,
       forceFit: fit,
       height: height + 54,
+      animate,
       plotCfg: {
         margin: [36, 0, 30, 0],
       },

+ 10 - 7
src/components/Charts/MiniProgress/index.js

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

+ 1 - 0
src/components/Charts/MiniProgress/index.less

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

+ 3 - 1
src/components/Charts/Pie/index.js

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

+ 1 - 1
src/components/TagCloud/index.js

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

+ 2 - 1
src/layouts/PageHeaderLayout.js

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

+ 5 - 1
src/routes/Dashboard/Analysis.js

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

+ 5 - 0
src/routes/Dashboard/Analysis.less

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

+ 24 - 10
src/routes/Dashboard/Monitor.js

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

+ 1 - 1
src/routes/Dashboard/Workplace.js

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