From 2aecfedacb5f35500c73f3f108d63fe75391728a Mon Sep 17 00:00:00 2001
From: "grafana-delivery-bot[bot]"
<132647405+grafana-delivery-bot[bot]@users.noreply.github.com>
Date: Thu, 10 Aug 2023 20:03:26 +0300
Subject: [PATCH] [v10.0.x] Cloud Monitoring: Support AliasBy property in MQL
mode (#73165)
Cloud Monitoring: Support AliasBy property in MQL mode (#73116)
(cherry picked from commit eeefa7dd2217cd0d14211afaaa940c8d43a8a910)
Co-authored-by: Alyssa Bull <58453566+alyssabull@users.noreply.github.com>
---
.../components/MetricQueryEditor.test.tsx | 15 +++++++++-
.../components/MetricQueryEditor.tsx | 28 +++++++++++++------
2 files changed, 34 insertions(+), 9 deletions(-)
diff --git a/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.test.tsx b/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.test.tsx
index f40397cb19f..14549d8545e 100644
--- a/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.test.tsx
+++ b/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.test.tsx
@@ -1,4 +1,4 @@
-import { render, screen } from '@testing-library/react';
+import { render, screen, waitFor } from '@testing-library/react';
import React from 'react';
import { createMockDatasource } from '../__mocks__/cloudMonitoringDatasource';
@@ -64,4 +64,17 @@ describe('MetricQueryEditor', () => {
const projectDropdown = await screen.findByLabelText('Project');
expect(projectDropdown).toBeInTheDocument();
});
+
+ it('preserves the aliasBy property when switching between Builder and MQL queries', async () => {
+ const query = createMockQuery({ aliasBy: 'AliasTest' });
+ query.queryType = QueryType.TIME_SERIES_QUERY;
+
+ render();
+ await waitFor(() => expect(screen.getByLabelText('Alias by').closest('input')!.value).toEqual('AliasTest'));
+
+ query.queryType = QueryType.TIME_SERIES_LIST;
+
+ render();
+ await waitFor(() => expect(screen.getByLabelText('Alias by').closest('input')!.value).toEqual('AliasTest'));
+ });
});
diff --git a/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.tsx b/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.tsx
index 62970cf97f9..bca3233f684 100644
--- a/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.tsx
+++ b/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.tsx
@@ -1,7 +1,7 @@
import React, { useCallback, useEffect } from 'react';
import { SelectableValue } from '@grafana/data';
-import { EditorRows } from '@grafana/experimental';
+import { EditorRows, Stack } from '@grafana/experimental';
import CloudMonitoringDatasource from '../datasource';
import {
@@ -13,6 +13,7 @@ import {
TimeSeriesQuery,
} from '../types';
+import { AliasBy } from './AliasBy';
import { GraphPeriod } from './GraphPeriod';
import { MQLQueryEditor } from './MQLQueryEditor';
import { Project } from './Project';
@@ -75,6 +76,7 @@ function Editor({
queryType: QueryType.TIME_SERIES_LIST,
intervalMs: query.intervalMs,
timeSeriesList: defaultTimeSeriesList(datasource),
+ aliasBy: query.aliasBy,
});
}
if (query.queryType === QueryType.TIME_SERIES_QUERY && !query.timeSeriesQuery) {
@@ -84,6 +86,7 @@ function Editor({
queryType: QueryType.TIME_SERIES_QUERY,
intervalMs: query.intervalMs,
timeSeriesQuery: defaultTimeSeriesQuery(datasource),
+ aliasBy: query.aliasBy,
});
}
}, [onQueryChange, query, datasource]);
@@ -105,13 +108,22 @@ function Editor({
{query.queryType === QueryType.TIME_SERIES_QUERY && query.timeSeriesQuery && (
<>
- onChangeTimeSeriesQuery({ ...query.timeSeriesQuery!, projectName: projectName })}
- templateVariableOptions={variableOptionGroup.options}
- projectName={query.timeSeriesQuery.projectName!}
- />
+
+
+ onChangeTimeSeriesQuery({ ...query.timeSeriesQuery!, projectName: projectName })
+ }
+ templateVariableOptions={variableOptionGroup.options}
+ projectName={query.timeSeriesQuery.projectName!}
+ />
+ onQueryChange({ ...query, aliasBy })}
+ />
+
onChangeTimeSeriesQuery({ ...query.timeSeriesQuery!, query: q })}
onRunQuery={onRunQuery}