import React, { useCallback, useMemo } from 'react'; import { Button, TooltipPlugin, GraphNG, GraphNGLegendEvent } from '@grafana/ui'; import { PanelProps } from '@grafana/data'; import { Options } from './types'; import { hideSeriesConfigFactory } from '../timeseries/overrides/hideSeriesConfigFactory'; import { getXYDimensions } from './dims'; import { changeSeriesColorConfigFactory } from '../timeseries/overrides/colorSeriesConfigFactory'; interface XYChartPanelProps extends PanelProps {} export const XYChartPanel: React.FC = ({ data, timeRange, timeZone, width, height, options, fieldConfig, onFieldConfigChange, }) => { const dims = useMemo(() => getXYDimensions(options.dims, data.series), [options.dims, data.series]); if (dims.error) { return (
ERROR: {dims.error}
{dims.hasData && (
{dims.hasTime && }
)}
); } const frames = useMemo(() => [dims.frame], [dims]); const onLegendClick = useCallback( (event: GraphNGLegendEvent) => { onFieldConfigChange(hideSeriesConfigFactory(event, fieldConfig, frames)); }, [fieldConfig, onFieldConfigChange, frames] ); const onSeriesColorChange = useCallback( (label: string, color: string) => { onFieldConfigChange(changeSeriesColorConfigFactory(label, color, fieldConfig)); }, [fieldConfig, onFieldConfigChange] ); return ( <>{/* needs to be an array */} ); };