baseConfigForm.jsx 3.4 KB

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