heatMapChart.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import './components/visualMap';
  2. import {forwardRef} from 'react';
  3. import type {HeatmapSeriesOption, VisualMapComponentOption} from 'echarts';
  4. import type {ReactEchartsRef, Series} from 'sentry/types/echarts';
  5. import HeatMapSeries from './series/heatMapSeries';
  6. import type {BaseChartProps} from './baseChart';
  7. import BaseChart from './baseChart';
  8. export interface HeatmapSeries
  9. extends Series,
  10. Omit<HeatmapSeriesOption, 'data' | 'name' | 'color' | 'id'> {
  11. dataArray?: HeatmapSeriesOption['data'];
  12. }
  13. interface HeatmapProps extends Omit<BaseChartProps, 'series'> {
  14. series: HeatmapSeries[];
  15. visualMaps: VisualMapComponentOption[];
  16. seriesOptions?: HeatmapSeriesOption;
  17. }
  18. export default forwardRef<ReactEchartsRef, HeatmapProps>((props, ref) => {
  19. const {series, seriesOptions, visualMaps, ...otherProps} = props;
  20. return (
  21. <BaseChart
  22. ref={ref}
  23. options={{
  24. visualMap: visualMaps,
  25. }}
  26. {...otherProps}
  27. series={series.map(({seriesName, data, dataArray, ...options}) =>
  28. HeatMapSeries({
  29. ...seriesOptions,
  30. ...options,
  31. name: seriesName,
  32. data: dataArray || data.map(({value, name}) => [name, value]),
  33. })
  34. )}
  35. />
  36. );
  37. });