import { Field, PanelProps } from '@grafana/data'; import { GraphNG, GraphNGLegendEvent, TooltipPlugin, ZoomPlugin } from '@grafana/ui'; import { getFieldLinksForExplore } from 'app/features/explore/utils/links'; import React, { useCallback } from 'react'; import { changeSeriesColorConfigFactory } from './overrides/colorSeriesConfigFactory'; import { hideSeriesConfigFactory } from './overrides/hideSeriesConfigFactory'; import { AnnotationsPlugin } from './plugins/AnnotationsPlugin'; import { ContextMenuPlugin } from './plugins/ContextMenuPlugin'; import { ExemplarsPlugin } from './plugins/ExemplarsPlugin'; import { Options } from './types'; interface TimeSeriesPanelProps extends PanelProps {} export const TimeSeriesPanel: React.FC = ({ data, timeRange, timeZone, width, height, options, fieldConfig, onChangeTimeRange, onFieldConfigChange, replaceVariables, }) => { const onLegendClick = useCallback( (event: GraphNGLegendEvent) => { onFieldConfigChange(hideSeriesConfigFactory(event, fieldConfig, data.series)); }, [fieldConfig, onFieldConfigChange, data.series] ); const getFieldLinks = (field: Field, rowIndex: number) => { return getFieldLinksForExplore({ field, rowIndex, range: timeRange }); }; const onSeriesColorChange = useCallback( (label: string, color: string) => { onFieldConfigChange(changeSeriesColorConfigFactory(label, color, fieldConfig)); }, [fieldConfig, onFieldConfigChange] ); if (!data || !data.series?.length) { return (

No data found in response

); } return ( {data.annotations && ( )} {data.annotations && } ); };