barChart.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import * as React from 'react';
  2. import type {BarSeriesOption} from 'echarts';
  3. import {Series} from 'sentry/types/echarts';
  4. import BarSeries from './series/barSeries';
  5. import BaseChart from './baseChart';
  6. type ChartProps = Omit<React.ComponentProps<typeof BaseChart>, 'css'>;
  7. export type BarChartSeries = Series & Omit<BarSeriesOption, 'data' | 'name'>;
  8. export interface BarChartProps extends Omit<ChartProps, 'series'> {
  9. series: BarChartSeries[];
  10. animation?: boolean;
  11. stacked?: boolean;
  12. }
  13. export function BarChart({series, stacked, xAxis, animation, ...props}: BarChartProps) {
  14. return (
  15. <BaseChart
  16. {...props}
  17. xAxis={xAxis !== null ? {...(xAxis || {})} : null}
  18. series={series.map(({seriesName, data, ...options}) =>
  19. BarSeries({
  20. name: seriesName,
  21. stack: stacked ? 'stack1' : undefined,
  22. data: data.map(({value, name, itemStyle}) => {
  23. if (itemStyle === undefined) {
  24. return [name, value];
  25. }
  26. return {value: [name, value], itemStyle};
  27. }),
  28. animation,
  29. ...options,
  30. })
  31. )}
  32. />
  33. );
  34. }