baseConfigForm.jsx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import React from 'react';
  2. import { Form, Select, Input, Icon, Dropdown, Menu, Row, Col, Card } from 'antd';
  3. const FormItem = Form.Item;
  4. const { Option } = Select;
  5. const { Search } = Input;
  6. import { connect } from 'dva';
  7. import chartDesigner from '../../../models/chartDesigner';
  8. import './baseConfigForm.less';
  9. class baseConfigForm extends React.Component {
  10. render() {
  11. const props = this.props;
  12. const allDataSource = props.chartDesigner.allDataSource;
  13. const { formItemLayout } = props
  14. const menu = (
  15. <Menu>
  16. <Menu.Item key="1">1st menu item</Menu.Item>
  17. <Menu.Item key="2">2nd memu item</Menu.Item>
  18. <Menu.Item key="3">3rd menu item</Menu.Item>
  19. </Menu>
  20. );
  21. return (
  22. <Form hideRequiredMark={true}>
  23. <FormItem label='数据源' {...formItemLayout}>
  24. <Select
  25. value={props.chartDesigner.baseConfig.dataSource}
  26. labelInValue={true}
  27. onChange={(value) => {
  28. props.dispatch({ type: 'chartDesigner/setModel', name: 'baseConfig', value: {
  29. ...props.chartDesigner.baseConfig, dataSource: value } });
  30. }}
  31. >
  32. {allDataSource.map((dataSource, i)=>{
  33. return (<Option key={`dataSource-${i}`} value={dataSource.id}>{dataSource.name}</Option>)
  34. })}
  35. </Select>
  36. </FormItem>
  37. <FormItem label='可视化模式' {...formItemLayout}>
  38. <Select
  39. dropdownClassName='baseconfig-viewtype'
  40. value={props.chartDesigner.baseConfig.viewType.key}
  41. dropdownMatchSelectWidth={false}
  42. onChange={(value, item) => {
  43. props.dispatch({ type: 'chartDesigner/setModel', name: 'baseConfig', value: { ...props.chartDesigner.baseConfig, viewType: { key: value, label: item.title } } });
  44. }}
  45. >
  46. <Option value="aggregateTable" title='总体统计数据表'>
  47. <div className='viewtype-box'>
  48. <div className='viewtype-icon viewtype-icon-agg'>
  49. </div>
  50. <div className='viewtype-text'>
  51. 总体统计数据表
  52. </div>
  53. </div>
  54. </Option>
  55. <Option value="dataView" title='个体统计数据表'>
  56. <div className='viewtype-box'>
  57. <div className='viewtype-icon'>
  58. </div>
  59. <div className='viewtype-text'>
  60. 个体统计数据表
  61. </div>
  62. </div>
  63. </Option>
  64. <Option value="line" title='折线图'>
  65. <div className='viewtype-box'>
  66. <div className='viewtype-icon'>
  67. </div>
  68. <div className='viewtype-text'>
  69. 折线图
  70. </div>
  71. </div>
  72. </Option>
  73. <Option value="bar" title='柱状图'>
  74. <div className='viewtype-box'>
  75. <div className='viewtype-icon'>
  76. </div>
  77. <div className='viewtype-text'>
  78. 柱状图
  79. </div>
  80. </div>
  81. </Option>
  82. <Option value="pie" title='饼状图'>
  83. <div className='viewtype-box'>
  84. <div className='viewtype-icon'>
  85. </div>
  86. <div className='viewtype-text'>
  87. 饼状图
  88. </div>
  89. </div>
  90. </Option>
  91. <Option value="scatter" title='散点图'>
  92. <div className='viewtype-box'>
  93. <div className='viewtype-icon'>
  94. </div>
  95. <div className='viewtype-text'>
  96. 散点图
  97. </div>
  98. </div>
  99. </Option>
  100. </Select>
  101. </FormItem>
  102. </Form>
  103. );
  104. }
  105. }
  106. function mapStateToProps({ present: { chartDesigner } }) {
  107. return { chartDesigner: chartDesigner }
  108. }
  109. export default Form.create()(connect(mapStateToProps)(baseConfigForm));