mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 15:32:08 +08:00

* update eslint, tsconfig + esbuild to handle new jsx transform * remove thing that breaks the new jsx transform * remove react imports * adjust grafana-icons build * is this the correct syntax? * try this * well this was much easier than expected... * change grafana-plugin-configs webpack config * fixes * fix lockfile * fix 2 more violations * use path.resolve instead of require.resolve * remove react import * fix react imports * more fixes * remove React import * remove import React from docs * remove another react import
70 lines
1.6 KiB
TypeScript
70 lines
1.6 KiB
TypeScript
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 (
|
|
<div className={styles.wrapper}>
|
|
<div className={styles.heading}>{name}</div>
|
|
<table className="filter-table width-30">
|
|
<tbody>
|
|
{stats.map((stat, index) => {
|
|
return (
|
|
<tr key={`${stat.displayName}-${index}`}>
|
|
<td>{stat.displayName}</td>
|
|
<td className={styles.cell}>{formatStat(stat, timeZone, theme)}</td>
|
|
</tr>
|
|
);
|
|
})}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
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',
|
|
}),
|
|
});
|