import React, { useMemo } from 'react'; import { PanelProps, TimeRange, VizOrientation } from '@grafana/data'; import { StackingMode, TooltipDisplayMode, TooltipPlugin, useTheme2 } from '@grafana/ui'; import { BarChartOptions } from './types'; import { BarChart } from './BarChart'; import { prepareGraphableFrames } from './utils'; interface Props extends PanelProps {} /** * @alpha */ export const BarChartPanel: React.FunctionComponent = ({ data, options, width, height, timeZone }) => { const theme = useTheme2(); const { frames, warn } = useMemo(() => prepareGraphableFrames(data?.series, theme, options.stacking), [ data, theme, options.stacking, ]); const orientation = useMemo(() => { if (!options.orientation || options.orientation === VizOrientation.Auto) { return width < height ? VizOrientation.Horizontal : VizOrientation.Vertical; } return options.orientation; }, [width, height, options.orientation]); // Force 'multi' tooltip setting or stacking mode const tooltip = useMemo(() => { if (options.stacking === StackingMode.Normal || options.stacking === StackingMode.Percent) { return { ...options.tooltip, mode: TooltipDisplayMode.Multi }; } return options.tooltip; }, [options.tooltip, options.stacking]); if (!frames || warn) { return (

{warn ?? 'No data found in response'}

); } return ( {(config, alignedFrame) => { return ; }} ); };