12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import {Duration, Moment} from 'moment';
- import {Series} from 'sentry/types/echarts';
- import {DataRow} from 'sentry/views/starfish/modules/APIModule/endpointTable';
- import {zeroFillSeries} from 'sentry/views/starfish/utils/zeroFillSeries';
- export default function combineTableDataWithSparklineData(
- tableData: DataRow[],
- aggregateData,
- momentInterval: Duration,
- startTime?: Moment,
- endTime?: Moment
- ): DataRow[] {
- const aggregatesGroupedByQuery = {};
- aggregateData.forEach(({description, interval, count, p50, p95}) => {
- if (description in aggregatesGroupedByQuery) {
- aggregatesGroupedByQuery[description].push({name: interval, count, p50, p95});
- } else {
- aggregatesGroupedByQuery[description] = [{name: interval, count, p50, p95}];
- }
- });
- const combinedData = tableData.map(data => {
- const query = data.description;
- const throughputSeries: Series = {
- seriesName: 'throughput',
- data: aggregatesGroupedByQuery[query]?.map(({name, count}) => ({
- name,
- value: count,
- })),
- };
- const p50Series: Series = {
- seriesName: 'p50 Trend',
- data: aggregatesGroupedByQuery[query]?.map(({name, p50}) => ({
- name,
- value: p50,
- })),
- };
- const p95Series: Series = {
- seriesName: 'p95 Trend',
- data: aggregatesGroupedByQuery[query]?.map(({name, p95}) => ({
- name,
- value: p95,
- })),
- };
- const zeroFilledThroughput = zeroFillSeries(
- throughputSeries,
- momentInterval,
- startTime,
- endTime
- );
- const zeroFilledP50 = zeroFillSeries(p50Series, momentInterval, startTime, endTime);
- const zeroFilledP95 = zeroFillSeries(p95Series, momentInterval, startTime, endTime);
- return {
- ...data,
- throughput: zeroFilledThroughput,
- p50_trend: zeroFilledP50,
- p95_trend: zeroFilledP95,
- };
- });
- return combinedData;
- }
|