From 5c2a344ce17058ca5c6c54df1f995816311c3916 Mon Sep 17 00:00:00 2001
From: Joey <90795735+joey-grafana@users.noreply.github.com>
Date: Tue, 25 Apr 2023 08:56:06 +0100
Subject: [PATCH] Traces: Order keys in span filter select (#66689)
* Order logs keys last
* Add tests
---
.../SpanFilters/SpanFilters.test.tsx | 17 +++++++++++++++++
.../TracePageHeader/SpanFilters/SpanFilters.tsx | 15 ++++++++-------
2 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.test.tsx b/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.test.tsx
index 857398e7739..eef40e507b1 100644
--- a/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.test.tsx
+++ b/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.test.tsx
@@ -151,6 +151,23 @@ describe('SpanFilters', () => {
await selectAndCheckValue(user, tagValue, 'TagValue0');
});
+ it('should order tag filters', async () => {
+ render();
+ const tagKey = screen.getByLabelText('Select tag key');
+
+ await user.click(tagKey);
+ jest.advanceTimersByTime(1000);
+ await waitFor(() => {
+ const container = screen.getByText('TagKey0').parentElement?.parentElement?.parentElement;
+ expect(container?.childNodes[0].textContent).toBe('ProcessKey0');
+ expect(container?.childNodes[1].textContent).toBe('ProcessKey1');
+ expect(container?.childNodes[2].textContent).toBe('TagKey0');
+ expect(container?.childNodes[3].textContent).toBe('TagKey1');
+ expect(container?.childNodes[4].textContent).toBe('LogKey0');
+ expect(container?.childNodes[5].textContent).toBe('LogKey1');
+ });
+ });
+
it('should allow adding/removing tags', async () => {
render();
expect(screen.getAllByLabelText('Select tag key').length).toBe(1);
diff --git a/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx b/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx
index 829c1778fb5..504668a5105 100644
--- a/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx
+++ b/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx
@@ -112,7 +112,8 @@ export const SpanFilters = memo((props: SpanFilterProps) => {
const getTagKeys = () => {
if (!tagKeys) {
- const keys: string[] = [];
+ let keys: string[] = [];
+ let logKeys: string[] = [];
trace.spans.forEach((span) => {
span.tags.forEach((tag) => {
@@ -124,18 +125,18 @@ export const SpanFilters = memo((props: SpanFilterProps) => {
if (span.logs !== null) {
span.logs.forEach((log) => {
log.fields.forEach((field) => {
- keys.push(field.key);
+ logKeys.push(field.key);
});
});
}
});
+ keys = uniq(keys).sort();
+ logKeys = uniq(logKeys).sort();
setTagKeys(
- uniq(keys)
- .sort()
- .map((name) => {
- return toOption(name);
- })
+ [...keys, ...logKeys].map((name) => {
+ return toOption(name);
+ })
);
}
};