/* eslint-disable object-curly-newline */ import React, { Component } from 'react'; import { Card, Row, Col, Radio } from 'antd-v4'; import baseChar from '@/components/Common/baseChar'; /* 获取图表配置及数据 */ // import { Bar, Columnar, ColumnarGroup, BrokenLine, WaterWave, Gauge, ColumnarStack, PieGroup, Pie, TimeLineGroup, ColorBlock } from '../Charts'; import Bar from '@/components/Charts/Bar'; import Columnar from '@/components/Charts/Columnar'; import ColumnarGroup from '@/components/Charts/ColumnarGroup'; import BrokenLine from '@/components/Charts/BrokenLine'; import WaterWave from '@/components/Charts/WaterWave'; import Gauge from '@/components/Charts/Gauge'; import ColumnarStack from '@/components/Charts/ColumnarStack'; import PieGroup from '@/components/Charts/PieGroup'; import Pie from '@/components/Charts/Pie'; import TimeLineGroup from '@/components/Charts/TimeLineGroup'; import ColorBlock from '@/components/Charts/ColorBlock'; import styles from '@/components/Charts/index.less'; import * as utils from '@/utils/utils'; import CommonList from '@/components/Common/CommonList'; class CommonChar extends Component { constructor(props) { super(props); this.state = { sModelsId: props.sModelsId, charConfigAndData: [], commonChar: styles.commonChar, commonCharPage: styles.commonCharPage, childChar: styles.childChar, }; } componentWillReceiveProps(nextProps) { const { charConfigAndData } = nextProps; this.setState({ charConfigAndData: JSON.parse(JSON.stringify(charConfigAndData)) }); } shouldComponentUpdate(nextProps, nextState) { return JSON.stringify(nextState.charConfigAndData) !== JSON.stringify(this.state.charConfigAndData); } handleChar = (props) => { const { sCharType, child } = props; let content = ''; if (utils.isNotEmptyObject(child)) { child.height = props.iHeight; if (sCharType === 'sBar') { /* 横向条形图 */ content = ; } else if (sCharType === 'sColumnar') { /* 纵向条形图 */ content = ; } else if (sCharType === 'sColumnarGroup') { /* 纵向条形图 */ content = ; } else if (sCharType === 'sBrokenLine') { content = ; } else if (sCharType === 'sWaterWave') { content = ; } else if (sCharType === 'sGauge') { content = ; } else if (sCharType === 'sColumnarStack') { content = ; } else if (sCharType === 'sPieGroup') { content = ; } else if (sCharType === 'sPie') { content = ; } else if (sCharType === 'TimeLineGroup') { content = ; } else if (sCharType === 'commonList') { content = ; } else if (sCharType === 'ColorBlock') { content = ; } } return content; }; handleExtra = (menuTypeId) => { const { charMenu } = this.state; let content = ''; if (charMenu !== undefined && charMenu !== null) { const index = charMenu.findIndex(item => item.sId === menuTypeId); if (index > -1) { const { childConfig, radioType } = charMenu[index]; const props = { ...this.state, index }; content = ( this.handleChangeType(e, props)}> { childConfig.map((item) => { const { sTypeValue, showName, sId } = item; return ( {showName} ); }) } ); } } return content; }; handleChangeType = (e, props) => { const { charMenu, charConfigAndData, index } = props; const { childConfig } = charMenu[index]; const radioType = e.target.value; /* 更改后的菜单 */ charMenu[index].radioType = radioType; this.setState({ charMenu }); const each = charConfigAndData[index]; /* 当前图表的配置 */ const child = childConfig.filter(item => item.sType === 'searchType' && item.sTypeValue === radioType); if (utils.isNotEmptyArr(child)) { const { sName } = child[0]; each.sSqlCondition = { [sName]: radioType, }; } this.props.onEachChar(each); }; render() { const { commonChar, commonCharPage, childChar, sModelsId } = this.state; let { charConfigAndData } = this.state; if (sModelsId !== null && sModelsId !== undefined && sModelsId.toString() === '11811781131121915101184660940') { charConfigAndData = []; return ( { charConfigAndData.map((itemChar) => { const { showName, sId, iWidth, iOrder, childConfig } = itemChar; const extra = utils.isNotEmptyArr(childConfig) ? this.handleExtra(sId) : null; return ( {this.handleChar(itemChar)} ); }) } ); } else { return ( { charConfigAndData.map((itemChar) => { const { showName, sId, iWidth, iOrder, childConfig } = itemChar; const extra = utils.isNotEmptyArr(childConfig) ? this.handleExtra(sId) : null; return ( {this.handleChar(itemChar)} ); }) } ); } } } export default baseChar(CommonChar);