lineChart.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import type {LineSeriesOption} from 'echarts';
  2. import type {Series} from 'sentry/types/echarts';
  3. import LineSeries from './series/lineSeries';
  4. import type {BaseChartProps} from './baseChart';
  5. import BaseChart from './baseChart';
  6. export interface LineChartSeries
  7. extends Series,
  8. Omit<LineSeriesOption, 'data' | 'name' | 'color' | 'id' | 'areaStyle'> {
  9. dataArray?: LineSeriesOption['data'];
  10. }
  11. export interface LineChartProps extends Omit<BaseChartProps, 'series'> {
  12. series: LineChartSeries[];
  13. additionalSeries?: LineSeriesOption[];
  14. seriesOptions?: LineSeriesOption;
  15. }
  16. export function transformToLineSeries({
  17. series,
  18. seriesOptions,
  19. }: Pick<LineChartProps, 'series' | 'seriesOptions'>) {
  20. return series.map(({seriesName, data, dataArray, ...options}) =>
  21. LineSeries({
  22. ...seriesOptions,
  23. ...options,
  24. name: seriesName,
  25. data: dataArray || data?.map(({value, name}) => [name, value]),
  26. animation: false,
  27. animationThreshold: 1,
  28. animationDuration: 0,
  29. })
  30. );
  31. }
  32. export function LineChart({series, seriesOptions, ...props}: LineChartProps) {
  33. return <BaseChart {...props} series={transformToLineSeries({series, seriesOptions})} />;
  34. }