content.jsx 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import React from 'react'
  2. import { Layout, Collapse, Form, Select, Input, Tabs, Switch, Button } from 'antd'
  3. const { Header, Sider, Content, Footer } = Layout
  4. const CollapsePanel = Collapse.Panel
  5. const { TabPane } = Tabs
  6. const { FormItem } = Form
  7. const { Option } = Select
  8. import BaseConfigForm from './sections/baseConfigForm'
  9. import PreparingForm from './sections/preparingForm'
  10. import AggregateTableConfigForm from './sections/aggregateTableConfigForm'
  11. import DataViewConfigForm from './sections/dataViewConfigForm'
  12. import BarConfigForm from './sections/barConfigForm'
  13. import PieConfigForm from './sections/pieConfigForm'
  14. import LineConfigForm from './sections/lineConfigForm'
  15. import TableView from './charts/table'
  16. import EchartsView from './charts/echartsView'
  17. import StyleEditor from './sections/styleEditor'
  18. import ToolBar from './sections/toolBar'
  19. import { connect } from 'dva'
  20. import '../../models/chartDesigner'
  21. import '../../data/charts/option/bar.json'
  22. import './content.less'
  23. class ChartDesignerContent extends React.Component {
  24. constructor(props) {
  25. super(props);
  26. this.state = {
  27. autoRefresh: true // 自动刷新
  28. }
  29. }
  30. changeRefreshMode = () => {
  31. this.setState({
  32. autoRefresh: !this.state.autoRefresh
  33. })
  34. }
  35. render() {
  36. const { autoRefresh } = this.state;
  37. const { chartDesigner, dispatch } = this.props;
  38. const { baseConfig } = chartDesigner;
  39. const { viewType } = baseConfig;
  40. const formItemLayout = {
  41. labelCol: { span: 8 },
  42. wrapperCol: { span: 16 },
  43. };
  44. let configForm, chartView;
  45. if(viewType.key == 'aggregateTable') {
  46. configForm = (<AggregateTableConfigForm formItemLayout={formItemLayout}/>);
  47. chartView = (<TableView />);
  48. }else if(viewType.key == 'dataView') {
  49. configForm = (<DataViewConfigForm formItemLayout={formItemLayout}/>);
  50. chartView = (<TableView />);
  51. }else if(viewType.key == 'line') {
  52. // configForm = (<DataViewConfigForm formItemLayout={formItemLayout}/>);
  53. // chartView = (<EchartsView option={chartOption}/>);
  54. }else if(viewType.key == 'bar') {
  55. configForm = (<BarConfigForm formItemLayout={formItemLayout}/>);
  56. chartView = (<EchartsView />);
  57. }else if(viewType.key == 'pie') {
  58. configForm = (<PieConfigForm formItemLayout={formItemLayout}/>);
  59. // chartView = (<EchartsView option={chartOption}/>);
  60. }
  61. return (
  62. <Layout className='chartdesigner'>
  63. <Sider className='sider-left' width={300}>
  64. <Tabs className='sider-tabs'>
  65. <TabPane className='chartconfig' tab='图表设置' key='1'>
  66. <BaseConfigForm formItemLayout={formItemLayout}/>
  67. { configForm }
  68. </TabPane>
  69. <TabPane className='otherconfig' tab='其他设置' key='2'>
  70. <StyleEditor formItemLayout={formItemLayout}/>
  71. </TabPane>
  72. </Tabs>
  73. <Footer className='sider-footer'>
  74. <div className='fresh-bar'>
  75. <Switch defaultChecked checkedChildren='自动刷新' unCheckedChildren='手动刷新' onChange={this.changeRefreshMode}/>
  76. <Button hidden={autoRefresh} size='small' onClick={() => {
  77. const viewType = chartDesigner.baseConfig.viewType.key;
  78. if(viewType == 'bar') {
  79. dispatch({ type: 'chartDesigner/fetchBarData'});
  80. }else if(viewType == 'pie') {
  81. console.log(111);
  82. //dispatch({ type: 'chartDesigner/fetchPieData' });
  83. }
  84. }}
  85. >立即刷新</Button>
  86. </div>
  87. </Footer>
  88. </Sider>
  89. <Content>
  90. <Layout>
  91. <Header className='content-header'>
  92. <ToolBar className='header-toolbar'/>
  93. </Header>
  94. <Content>
  95. { chartView }
  96. </Content>
  97. </Layout>
  98. </Content>
  99. </Layout>
  100. )
  101. }
  102. }
  103. function mapStateToProps({ present: { chartDesigner } }) {
  104. return { chartDesigner: chartDesigner }
  105. }
  106. export default connect(mapStateToProps)(ChartDesignerContent);