mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* Inspect: Should not subscribe to transformed data * PQR- allow controll whether or not field overrides and transformations should be applied * UI for inspector data options * fix * Null check fix * Refactor PanelInspector * TS fix * Merge fix * fix test * Update public/app/features/dashboard/components/Inspector/InspectDataTab.tsx Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com> * review batch 1 * Update API of usePanelLatestData * css * review batch 2 * Update usePanelLatestData hook Co-authored-by: Torkel Ödegaard <torkel@grafana.com> Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
69 lines
1.7 KiB
TypeScript
69 lines
1.7 KiB
TypeScript
import React from 'react';
|
|
import {
|
|
FieldType,
|
|
formattedValueToString,
|
|
getDisplayProcessor,
|
|
GrafanaTheme,
|
|
QueryResultMetaStat,
|
|
TimeZone,
|
|
} from '@grafana/data';
|
|
import { DashboardModel } from 'app/features/dashboard/state';
|
|
import { config } from 'app/core/config';
|
|
import { stylesFactory, useTheme } from '@grafana/ui';
|
|
import { css } from 'emotion';
|
|
|
|
interface InspectStatsTableProps {
|
|
dashboard: DashboardModel;
|
|
name: string;
|
|
stats: QueryResultMetaStat[];
|
|
}
|
|
export const InspectStatsTable: React.FC<InspectStatsTableProps> = ({ dashboard, name, stats }) => {
|
|
const theme = useTheme();
|
|
const styles = getStyles(theme);
|
|
|
|
if (!stats || !stats.length) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<div className={styles.wrapper}>
|
|
<div className="section-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, dashboard.getTimezone())}</td>
|
|
</tr>
|
|
);
|
|
})}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
function formatStat(stat: QueryResultMetaStat, timeZone?: TimeZone): string {
|
|
const display = getDisplayProcessor({
|
|
field: {
|
|
type: FieldType.number,
|
|
config: stat,
|
|
},
|
|
theme: config.theme,
|
|
timeZone,
|
|
});
|
|
return formattedValueToString(display(stat.value));
|
|
}
|
|
|
|
const getStyles = stylesFactory((theme: GrafanaTheme) => {
|
|
return {
|
|
wrapper: css`
|
|
padding-bottom: ${theme.spacing.md};
|
|
`,
|
|
cell: css`
|
|
text-align: right;
|
|
`,
|
|
};
|
|
});
|