import React, { useMemo } from 'react'; import { LegendDisplayMode, UPlotChart, useTheme2, VizLayout, VizLegend, VizLegendItem } from '@grafana/ui'; import { PanelProps } from '@grafana/data'; import { XYChartOptions } from './models.gen'; import { prepData, prepScatter } from './scatter'; interface XYChartPanelProps extends PanelProps {} export const XYChartPanel: React.FC = ({ data, width, height, options, fieldConfig, timeRange, //onFieldConfigChange, }) => { const theme = useTheme2(); const info = useMemo(() => { console.log('prepScatter!'); return prepScatter(options, data, theme, () => {}); // eslint-disable-next-line react-hooks/exhaustive-deps }, [data.structureRev, options]); // preps data in various shapes...aligned, stacked, merged, interpolated, etc.. const scatterData = useMemo(() => { console.log('prepData!'); return prepData(info, data.series); }, [info, data.series]); const legend = useMemo(() => { const items: VizLegendItem[] = []; for (const s of info.series) { const frame = s.frame(data.series); if (frame) { for (const item of s.legend(frame)) { items.push(item); } } } return ( ); // eslint-disable-next-line react-hooks/exhaustive-deps }, [info]); if (info.error) { return (

{info.error}

); } return ( {(vizWidth: number, vizHeight: number) => ( //
        //   {JSON.stringify(scatterData, null, 2)}
        // 
{/*children ? children(config, alignedFrame) : null*/} )}
); };