2020-08-06 10:22:54 -05:00
|
|
|
import { PanelData, QueryResultMetaStat, TimeZone } from '@grafana/data';
|
2020-06-18 07:31:30 -05:00
|
|
|
import { selectors } from '@grafana/e2e-selectors';
|
|
|
|
import { InspectStatsTable } from './InspectStatsTable';
|
|
|
|
import React from 'react';
|
|
|
|
|
|
|
|
interface InspectStatsTabProps {
|
|
|
|
data: PanelData;
|
2020-08-06 10:22:54 -05:00
|
|
|
timeZone: TimeZone;
|
2020-06-18 07:31:30 -05:00
|
|
|
}
|
2020-08-06 10:22:54 -05:00
|
|
|
|
|
|
|
export const InspectStatsTab: React.FC<InspectStatsTabProps> = ({ data, timeZone }) => {
|
2020-06-18 07:31:30 -05:00
|
|
|
if (!data.request) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
let stats: QueryResultMetaStat[] = [];
|
|
|
|
|
|
|
|
const requestTime = data.request.endTime ? data.request.endTime - data.request.startTime : -1;
|
|
|
|
const processingTime = data.timings?.dataProcessingTime || -1;
|
|
|
|
let dataRows = 0;
|
|
|
|
|
|
|
|
for (const frame of data.series) {
|
|
|
|
dataRows += frame.length;
|
|
|
|
}
|
|
|
|
|
2020-08-01 10:35:54 -05:00
|
|
|
if (requestTime > 0) {
|
|
|
|
stats.push({ displayName: 'Total request time', value: requestTime, unit: 'ms' });
|
|
|
|
}
|
|
|
|
if (processingTime > 0) {
|
|
|
|
stats.push({ displayName: 'Data processing time', value: processingTime, unit: 'ms' });
|
|
|
|
}
|
2020-06-18 07:31:30 -05:00
|
|
|
stats.push({ displayName: 'Number of queries', value: data.request.targets.length });
|
|
|
|
stats.push({ displayName: 'Total number rows', value: dataRows });
|
|
|
|
|
|
|
|
let dataStats: QueryResultMetaStat[] = [];
|
|
|
|
|
|
|
|
for (const series of data.series) {
|
|
|
|
if (series.meta && series.meta.stats) {
|
|
|
|
dataStats = dataStats.concat(series.meta.stats);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div aria-label={selectors.components.PanelInspector.Stats.content}>
|
2020-08-06 10:22:54 -05:00
|
|
|
<InspectStatsTable timeZone={timeZone} name={'Stats'} stats={stats} />
|
|
|
|
<InspectStatsTable timeZone={timeZone} name={'Data source stats'} stats={dataStats} />
|
2020-06-18 07:31:30 -05:00
|
|
|
</div>
|
|
|
|
);
|
|
|
|
};
|