Skip to content

Commit 8a1f040

Browse files
authored
fix sorting on top n queries table (#98)
Signed-off-by: Chenyang Ji <[email protected]>
1 parent 0a7e9a9 commit 8a1f040

File tree

4 files changed

+47
-31
lines changed

4 files changed

+47
-31
lines changed

common/utils/MetricUtils.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,18 @@ export function calculateMetric(
1414
defaultMsg: string = 'N/A'
1515
): string {
1616
if (value !== undefined && count !== undefined) {
17-
return `${(value / count / factor).toFixed(2)} ${unit}`;
17+
return `${calculateMetricNumber(value, count, factor).toFixed(2)} ${unit}`;
1818
}
1919
return defaultMsg;
2020
}
2121

22+
export function calculateMetricNumber(value?: number, count?: number, factor: number = 1): number {
23+
if (value !== undefined && count !== undefined && count !== 0 && factor !== 0) {
24+
return value / count / factor;
25+
}
26+
return 0;
27+
}
28+
2229
export function getTimeUnitFromAbbreviation(timeUnit: string): string {
2330
for (const [key, value] of Object.entries(TIME_UNIT_ABBREVIATION)) {
2431
if (value === timeUnit) {

public/components/__snapshots__/app.test.tsx.snap

+3-3
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ exports[`<QueryInsightsDashboardsApp /> spec renders the component 1`] = `
570570
aria-live="polite"
571571
aria-sort="none"
572572
class="euiTableHeaderCell"
573-
data-test-subj="tableHeaderCell_measurements_4"
573+
data-test-subj="tableHeaderCell_measurements.latency_4"
574574
role="columnheader"
575575
scope="col"
576576
>
@@ -595,7 +595,7 @@ exports[`<QueryInsightsDashboardsApp /> spec renders the component 1`] = `
595595
aria-live="polite"
596596
aria-sort="none"
597597
class="euiTableHeaderCell"
598-
data-test-subj="tableHeaderCell_measurements_5"
598+
data-test-subj="tableHeaderCell_measurements.cpu_5"
599599
role="columnheader"
600600
scope="col"
601601
>
@@ -620,7 +620,7 @@ exports[`<QueryInsightsDashboardsApp /> spec renders the component 1`] = `
620620
aria-live="polite"
621621
aria-sort="none"
622622
class="euiTableHeaderCell"
623-
data-test-subj="tableHeaderCell_measurements_6"
623+
data-test-subj="tableHeaderCell_measurements.memory_6"
624624
role="columnheader"
625625
scope="col"
626626
>

public/pages/QueryInsights/QueryInsights.tsx

+33-24
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,16 @@ import {
2323
TOTAL_SHARDS,
2424
TYPE,
2525
} from '../../../common/constants';
26-
import { calculateMetric } from '../../../common/utils/MetricUtils';
26+
import { calculateMetric, calculateMetricNumber } from '../../../common/utils/MetricUtils';
2727
import { parseDateString } from '../../../common/utils/DateUtils';
2828
import { QueryInsightsDataSourceMenu } from '../../components/DataSourcePicker';
2929
import { QueryInsightsDashboardsPluginStartDependencies } from '../../types';
3030

3131
const TIMESTAMP_FIELD = 'timestamp';
3232
const MEASUREMENTS_FIELD = 'measurements';
33+
const LATENCY_FIELD = 'measurements.latency';
34+
const CPU_FIELD = 'measurements.cpu';
35+
const MEMORY_FIELD = 'measurements.memory';
3336
const INDICES_FIELD = 'indices';
3437
const SEARCH_TYPE_FIELD = 'search_type';
3538
const NODE_ID_FIELD = 'node_id';
@@ -174,48 +177,51 @@ const QueryInsights = ({
174177
truncateText: true,
175178
},
176179
{
177-
field: MEASUREMENTS_FIELD,
180+
field: LATENCY_FIELD,
178181
name: LATENCY,
179-
render: (measurements: SearchQueryRecord['measurements']) => {
180-
return calculateMetric(
181-
measurements?.latency?.number,
182-
measurements?.latency?.count,
183-
'ms',
184-
1,
185-
METRIC_DEFAULT_MSG
182+
render: (latency: SearchQueryRecord['measurements']['latency']) => {
183+
return calculateMetric(latency?.number, latency?.count, 'ms', 1, METRIC_DEFAULT_MSG);
184+
},
185+
sortable: (query: SearchQueryRecord) => {
186+
return calculateMetricNumber(
187+
query.measurements?.latency?.number,
188+
query.measurements?.latency?.count
186189
);
187190
},
188-
sortable: true,
189191
truncateText: true,
190192
},
191193
{
192-
field: MEASUREMENTS_FIELD,
194+
field: CPU_FIELD,
193195
name: CPU_TIME,
194-
render: (measurements: SearchQueryRecord['measurements']) => {
196+
render: (cpu: SearchQueryRecord['measurements']['cpu']) => {
195197
return calculateMetric(
196-
measurements?.cpu?.number,
197-
measurements?.cpu?.count,
198+
cpu?.number,
199+
cpu?.count,
198200
'ms',
199201
1000000, // Divide by 1,000,000 for CPU time
200202
METRIC_DEFAULT_MSG
201203
);
202204
},
203-
sortable: true,
205+
sortable: (query: SearchQueryRecord) => {
206+
return calculateMetricNumber(
207+
query.measurements?.cpu?.number,
208+
query.measurements?.cpu?.count
209+
);
210+
},
204211
truncateText: true,
205212
},
206213
{
207-
field: MEASUREMENTS_FIELD,
214+
field: MEMORY_FIELD,
208215
name: MEMORY_USAGE,
209-
render: (measurements: SearchQueryRecord['measurements']) => {
210-
return calculateMetric(
211-
measurements?.memory?.number,
212-
measurements?.memory?.count,
213-
'B',
214-
1,
215-
METRIC_DEFAULT_MSG
216+
render: (memory: SearchQueryRecord['measurements']['memory']) => {
217+
return calculateMetric(memory?.number, memory?.count, 'B', 1, METRIC_DEFAULT_MSG);
218+
},
219+
sortable: (query: SearchQueryRecord) => {
220+
return calculateMetricNumber(
221+
query.measurements?.memory?.number,
222+
query.measurements?.memory?.count
216223
);
217224
},
218-
sortable: true,
219225
truncateText: true,
220226
},
221227
{
@@ -379,6 +385,9 @@ const QueryInsights = ({
379385
defaultFields: [
380386
TIMESTAMP_FIELD,
381387
MEASUREMENTS_FIELD,
388+
LATENCY_FIELD,
389+
CPU_FIELD,
390+
MEMORY_FIELD,
382391
INDICES_FIELD,
383392
SEARCH_TYPE_FIELD,
384393
NODE_ID_FIELD,

public/pages/QueryInsights/__snapshots__/QueryInsights.test.tsx.snap

+3-3
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ exports[`QueryInsights Component renders the table with the correct columns and
527527
aria-live="polite"
528528
aria-sort="none"
529529
class="euiTableHeaderCell"
530-
data-test-subj="tableHeaderCell_measurements_4"
530+
data-test-subj="tableHeaderCell_measurements.latency_4"
531531
role="columnheader"
532532
scope="col"
533533
>
@@ -552,7 +552,7 @@ exports[`QueryInsights Component renders the table with the correct columns and
552552
aria-live="polite"
553553
aria-sort="none"
554554
class="euiTableHeaderCell"
555-
data-test-subj="tableHeaderCell_measurements_5"
555+
data-test-subj="tableHeaderCell_measurements.cpu_5"
556556
role="columnheader"
557557
scope="col"
558558
>
@@ -577,7 +577,7 @@ exports[`QueryInsights Component renders the table with the correct columns and
577577
aria-live="polite"
578578
aria-sort="none"
579579
class="euiTableHeaderCell"
580-
data-test-subj="tableHeaderCell_measurements_6"
580+
data-test-subj="tableHeaderCell_measurements.memory_6"
581581
role="columnheader"
582582
scope="col"
583583
>

0 commit comments

Comments
 (0)