import React from 'react' import { Layout, Tabs, Switch, Button } from 'antd' import BaseConfigForm from './sections/baseConfigForm' import AggregateTableConfigForm from './sections/aggregateTableConfigForm' import DataViewConfigForm from './sections/dataViewConfigForm' import BarConfigForm from './sections/barConfigForm' import PieConfigForm from './sections/pieConfigForm' import LineConfigForm from './sections/lineConfigForm' import ScatterConfigForm from './sections/scatterConfigForm' import IndicatorConfigForm from './sections/indicatorConfigForm' import StyleConfigForm from './sections/style/index' import OtherConfigForm from './sections/otherConfigForm' import TableView from './charts/tableView' import EchartsView from './charts/echartsView' import AggregateTableView from './charts/aggregateTableView' import IndicatorView from './charts/indicatorView' import ToolBar from './sections/toolbar' import { connect } from 'dva' import EmptyContent from '../common/emptyContent/index' import Thumbnail from '../common/echarts/thumbnail' import { hashcode } from '../../utils/baseUtils' import themes from './sections/style/theme/index' import './content.less' const { Header, Sider, Content, Footer } = Layout const { TabPane } = Tabs class ChartDesignerContent extends React.Component { constructor(props) { super(props); this.state = { isOwner: false, autoRefresh: true, collapsed: false, } } static getDerivedStateFromProps(nextProps, nextState) { const { chartDesigner, main } = nextProps; const isOwner = chartDesigner.creatorCode === main.currentUser.code || main.currentUser.role === 'superAdmin'; if(chartDesigner.code !== nextState.code) { return { code: chartDesigner.code, isOwner: isOwner, collapsed: !isOwner, }; }else { return null; } } onCollapse = () => { this.setState({ collapsed: !this.state.collapsed, }, () => { window.setTimeout(() => { var e = document.createEvent("Event"); e.initEvent("resize", true, true); window.dispatchEvent(e); }, 500); }) } render() { const { chartDesigner, dispatch } = this.props; const { isOwner, autoRefresh } = this.state; const { code, baseConfig, chartOption, theme: themeName, styleConfig } = chartDesigner; const { viewType } = baseConfig; let configForm, chartView; let t = themes.find(t => t.name === themeName); let theme = t ? t.config : themes[0].config; if(viewType === 'aggregateTable') { configForm = (); chartView = (); }else if(viewType === 'dataView') { configForm = (); chartView = ( { return `第${range[0]}到第${range[1]}条数据,共${total}条数据`; }, onChange: (page, pageSize) => { dispatch({ type: 'chartDesigner/fetchDataViewData', page, pageSize }); } }} />); }else if(viewType === 'line') { configForm = (); // optionConfig 可以用来放替换属性(已做深拷贝替换) chartView = (); }else if(viewType === 'bar') { configForm = (); chartView = (); }else if(viewType === 'pie') { configForm = (); chartView = (); }else if(viewType === 'scatter') { configForm = (); chartView = (); }else if(viewType === 'indicator') { configForm = (); chartView = (); }else { chartView = } return ( }
{/* 创建一个隐藏echarts容器用于截缩略图 */} { chartView }
) } } export default connect(({ present:{ main, chartDesigner } }) => ({ main, chartDesigner }))(ChartDesignerContent);