import { css } from '@emotion/css'; import { FieldType, formattedValueToString, getDisplayProcessor, GrafanaTheme2, QueryResultMetaStat, TimeZone, } from '@grafana/data'; import { useStyles2, useTheme2 } from '@grafana/ui'; interface InspectStatsTableProps { timeZone: TimeZone; name: string; stats: QueryResultMetaStat[]; } export const InspectStatsTable = ({ timeZone, name, stats }: InspectStatsTableProps) => { const theme = useTheme2(); const styles = useStyles2(getStyles); 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 = (theme: GrafanaTheme2) => ({ heading: css({ fontSize: theme.typography.body.fontSize, marginBottom: theme.spacing(1), }), wrapper: css({ paddingBottom: theme.spacing(2), }), cell: css({ textAlign: 'right', }), });