diff --git a/public/app/plugins/datasource/cloud-monitoring/components/Experimental/MetricQueryEditor.tsx b/public/app/plugins/datasource/cloud-monitoring/components/Experimental/MetricQueryEditor.tsx index 06428eca88d..4b8fff207f0 100644 --- a/public/app/plugins/datasource/cloud-monitoring/components/Experimental/MetricQueryEditor.tsx +++ b/public/app/plugins/datasource/cloud-monitoring/components/Experimental/MetricQueryEditor.tsx @@ -16,11 +16,11 @@ import { SLOQuery, ValueTypes, } from '../../types'; -import { Project } from '../index'; import { MQLQueryEditor } from './../MQLQueryEditor'; import { AliasBy } from './AliasBy'; import { GraphPeriod } from './GraphPeriod'; +import { Project } from './Project'; import { VisualMetricQueryEditor } from './VisualMetricQueryEditor'; export interface Props { diff --git a/public/app/plugins/datasource/cloud-monitoring/components/Experimental/Project.tsx b/public/app/plugins/datasource/cloud-monitoring/components/Experimental/Project.tsx new file mode 100644 index 00000000000..caa257d16d7 --- /dev/null +++ b/public/app/plugins/datasource/cloud-monitoring/components/Experimental/Project.tsx @@ -0,0 +1,51 @@ +import React, { useEffect, useMemo, useState } from 'react'; + +import { SelectableValue } from '@grafana/data'; +import { EditorField, EditorRow } from '@grafana/experimental'; +import { Select } from '@grafana/ui'; + +import CloudMonitoringDatasource from '../../datasource'; + +export interface Props { + refId: string; + datasource: CloudMonitoringDatasource; + onChange: (projectName: string) => void; + templateVariableOptions: Array>; + projectName: string; +} + +export function Project({ refId, projectName, datasource, onChange, templateVariableOptions }: Props) { + const [projects, setProjects] = useState>>([]); + useEffect(() => { + datasource.getProjects().then((projects) => setProjects(projects)); + }, [datasource]); + + const projectsWithTemplateVariables = useMemo( + () => [ + projects, + { + label: 'Template Variables', + options: templateVariableOptions, + }, + ...projects, + ], + [projects, templateVariableOptions] + ); + + return ( + + +