heatMapChart.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import './components/visualMap';
  2. import * as React from 'react';
  3. import {EChartOption} from 'echarts';
  4. import {Series} from 'app/types/echarts';
  5. import HeatMapSeries from './series/heatMapSeries';
  6. import BaseChart from './baseChart';
  7. type ChartProps = React.ComponentProps<typeof BaseChart>;
  8. export type LineChartSeries = Series &
  9. Omit<EChartOption.SeriesHeatmap, 'data' | 'name'> & {
  10. dataArray?: EChartOption.SeriesHeatmap['data'];
  11. };
  12. type Props = Omit<ChartProps, 'series'> & {
  13. series: LineChartSeries[];
  14. seriesOptions?: EChartOption.SeriesHeatmap;
  15. visualMaps: EChartOption.VisualMap[];
  16. };
  17. export default class HeatMapChart extends React.Component<Props> {
  18. render() {
  19. const {series, seriesOptions, visualMaps, ...props} = this.props;
  20. return (
  21. <BaseChart
  22. options={{
  23. visualMap: visualMaps,
  24. }}
  25. {...props}
  26. series={series.map(({seriesName, data, dataArray, ...options}) =>
  27. HeatMapSeries({
  28. ...seriesOptions,
  29. ...options,
  30. name: seriesName,
  31. data: dataArray || data.map(({value, name}) => [name, value]),
  32. })
  33. )}
  34. />
  35. );
  36. }
  37. }