mh_jy_safe_web/src/components/Chart/RadarChart.js
2025-08-25 10:08:30 +08:00

115 lines
2.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/** 雷达图 */
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import TableChart from './TableChart'
class RadarChart extends Component {
// 初始化 option
initOption = () => {
const { data, radar, titleText, saveImgName } = this.props
// 设置图例的默认选中,如果没有 Selected 属性,则默认为 true即默认选中
const legendData = []
const selectedData = {}
data.forEach(item => {
legendData.push({ name: item.Name, icon: 'roundRect' })
selectedData[item.Name] = item.LegendSelected !== undefined ? item.LegendSelected : true
})
return {
title: {
text: titleText,
textStyle: {
fontWeight: 'normal',
fontSize: 16
},
left: 'center',
top: 0
},
legend: {
top: '6%',
left: 'center',
textStyle: {
color: '#333333'
},
data: legendData,
selected: selectedData
},
radar: radar.map(item => ({
name: { color: '#000000' },
nameGap: 8,
center: ['50%', '60%'],
radius: '60%',
indicator: item.IndiCator.map(({ Text: text, Max: max }) => ({ text, max }))
})),
tooltip: {
trigger: 'item'
},
toolbox: {
show: true,
orient: 'vertical',
right: 0,
top: 'center',
itemSize: 12,
feature: {
restore: { show: true },
saveAsImage: { show: true, name: saveImgName || titleText }
}
},
series: []
}
}
// 生成 echarts 所需要 option
getOption = () => {
const option = this.initOption()
// 组装 option.series 数据
const { data } = this.props
data.forEach(item => {
const dataseries = {
name: item.Name,
type: 'radar',
// itemStyle 会同时设置 lineStyle 的 color 配置
itemStyle: {
color: item.Color || ''
},
data: [{
areaStyle: { opacity: 0.2 },
value: item.Data.map(element => element.Value)
}]
}
option.series.push(dataseries)
})
return option
}
render () {
const { loading, style } = this.props
return (
<TableChart
type={3}
option={this.getOption()}
loading={loading}
style={style}
/>
)
}
}
RadarChart.propTypes = {
data: PropTypes.array,
radar: PropTypes.array,
titleText: PropTypes.string,
saveImgName: PropTypes.string
}
RadarChart.defaultProps = {
data: [], // 图表数据
radar: [], // 雷达配置数据
titleText: '', // 图表 top center 位置的标题
saveImgName: '' // 导出为图片的图片文件名称
}
export default RadarChart