mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 15:42:13 +08:00

* config for panel plugin translations * markup * tweaks * prettier * use data-testid * rename disable rule now it's been moved * final markup
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import memoizeOne from 'memoize-one';
|
|
import { useId } from 'react';
|
|
|
|
import { PanelProps } from '@grafana/data';
|
|
import { Trans } from '@grafana/i18n';
|
|
|
|
import { useLinks } from '../../../features/explore/utils/links';
|
|
|
|
import { NodeGraph } from './NodeGraph';
|
|
import { Options as NodeGraphOptions } from './panelcfg.gen';
|
|
import { getNodeGraphDataFrames } from './utils';
|
|
|
|
export const NodeGraphPanel = ({ width, height, data, options }: PanelProps<NodeGraphOptions>) => {
|
|
const getLinks = useLinks(data.timeRange);
|
|
const panelId = useId();
|
|
|
|
if (!data || !data.series.length) {
|
|
return (
|
|
<div className="panel-empty">
|
|
<p>
|
|
<Trans i18nKey="nodeGraph.node-graph-panel.no-data-found-in-response">No data found in response</Trans>
|
|
</p>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
const memoizedGetNodeGraphDataFrames = memoizeOne(getNodeGraphDataFrames);
|
|
return (
|
|
<div style={{ width, height }}>
|
|
<NodeGraph
|
|
dataFrames={memoizedGetNodeGraphDataFrames(data.series, options)}
|
|
getLinks={getLinks}
|
|
panelId={panelId}
|
|
zoomMode={options.zoomMode}
|
|
layoutAlgorithm={options.layoutAlgorithm}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|