import React from 'react' import ReactEcharts from 'echarts-for-react' import { isEqual } from 'lodash' import { guid } from '../../../utils/common' class ChartLine extends React.Component { constructor(props) { super(props) this.state = { xAxis: [], data: [], legend: [], chartId: guid() } }; componentDidMount () { if (this.props.onRef) { this.props.onRef(this) } }; setValue = (xAxis, data, legend) => { if (!isEqual(data, this.state.data)) { this.setState({ xAxis: xAxis, data: data, legend: legend, chartId: guid() }) } } getOption = () => { let unitData = this.state.data let colors = ['#FD2446', '#248EFD', '#C916F2', '#6669B1'] let option = { legend: { top: '5%', textStyle: { color: '#333333' }, data: this.state.legend }, grid: { left: '2%', right: '6%', bottom: '2%', containLabel: true }, xAxis: [ { type: 'category', data: this.state.xAxis } ], yAxis: { type: 'value', }, dataZoom: [ { type: 'inside', xAxisIndex: [0] } ], tooltip: { trigger: 'axis', axisPointer: { type: 'shadow', textStyle: { color: '#B8B8B8' } }, formatter: function (params) { var relVal = params[0].name for (var i = 0, l = params.length; i < l; i++) { relVal += '
' + params[i].marker + params[i].seriesName + ' : ' + params[i].value + (unitData[i] == undefined ? '' : unitData[i].Unit) } return relVal } }, toolbox: { show: true, orient: 'vertical', right: '2%', top: 'center', feature: { magicType: { show: true, type: ['line', 'bar', 'stack', 'tiled'] }, restore: { show: true }, saveAsImage: { show: true } } }, series: [] } unitData.forEach((item, index) => { let dataseries = { name: item.Name, itemStyle: { color: colors[index] }, data: item.DataValue } dataseries.type = "line"; option.series.push(dataseries); }) return option } render () { return ( ) } } export default ChartLine