import { css } from '@emotion/css'; import React from 'react'; import { FieldType, formattedValueToString, getDisplayProcessor, GrafanaTheme2, QueryResultMetaStat, TimeZone, } from '@grafana/data'; import { stylesFactory, useTheme2 } from '@grafana/ui'; interface InspectStatsTableProps { timeZone: TimeZone; name: string; stats: QueryResultMetaStat[]; } export const InspectStatsTable: React.FC = ({ timeZone, name, stats }) => { const theme = useTheme2(); const styles = getStyles(theme); if (!stats || !stats.length) { return null; } return (
{name}
{stats.map((stat, index) => { return ( ); })}
{stat.displayName} {formatStat(stat, timeZone, theme)}
); }; function formatStat(stat: QueryResultMetaStat, timeZone: TimeZone, theme: GrafanaTheme2): string { const display = getDisplayProcessor({ field: { type: FieldType.number, config: stat, }, theme, timeZone, }); return formattedValueToString(display(stat.value)); } const getStyles = stylesFactory((theme: GrafanaTheme2) => { return { wrapper: css` padding-bottom: ${theme.spacing(2)}; `, cell: css` text-align: right; `, }; });