import { DashboardCursorSync, Field, PanelProps } from '@grafana/data'; import { config } from '@grafana/runtime'; import { TooltipDisplayMode, usePanelContext, TimeSeries, TooltipPlugin, ZoomPlugin } from '@grafana/ui'; import { getFieldLinksForExplore } from 'app/features/explore/utils/links'; import React, { useMemo } from 'react'; import { AnnotationsPlugin } from './plugins/AnnotationsPlugin'; import { ContextMenuPlugin } from './plugins/ContextMenuPlugin'; import { ExemplarsPlugin } from './plugins/ExemplarsPlugin'; import { TimeSeriesOptions } from './types'; import { prepareGraphableFields } from './utils'; interface TimeSeriesPanelProps extends PanelProps {} export const TimeSeriesPanel: React.FC = ({ data, timeRange, timeZone, width, height, options, onChangeTimeRange, replaceVariables, }) => { const { sync } = usePanelContext(); const getFieldLinks = (field: Field, rowIndex: number) => { return getFieldLinksForExplore({ field, rowIndex, range: timeRange }); }; const { frames, warn } = useMemo(() => prepareGraphableFields(data?.series, config.theme2), [data]); if (!frames || warn) { return (

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

); } return ( {(config, alignedDataFrame) => { return ( <> {data.annotations && ( )} {data.annotations && ( )} ); }} ); };