lineChart.tsx 1.1 KB

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