CloudMonitoring: Update Project to use experimental UI components (#51837)

This commit is contained in:
Kevin Yu 2022-07-07 01:25:08 -07:00 committed by GitHub
parent d99a7334d5
commit 5bd58be334
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 2 deletions

View File

@ -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 {

View File

@ -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<SelectableValue<string>>;
projectName: string;
}
export function Project({ refId, projectName, datasource, onChange, templateVariableOptions }: Props) {
const [projects, setProjects] = useState<Array<SelectableValue<string>>>([]);
useEffect(() => {
datasource.getProjects().then((projects) => setProjects(projects));
}, [datasource]);
const projectsWithTemplateVariables = useMemo(
() => [
projects,
{
label: 'Template Variables',
options: templateVariableOptions,
},
...projects,
],
[projects, templateVariableOptions]
);
return (
<EditorRow>
<EditorField label="Project">
<Select
width="auto"
allowCustomValue
formatCreateLabel={(v) => `Use project: ${v}`}
onChange={({ value }) => onChange(value!)}
options={projectsWithTemplateVariables}
value={{ value: projectName, label: projectName }}
placeholder="Select Project"
inputId={`${refId}-project`}
/>
</EditorField>
</EditorRow>
);
}

View File

@ -3,7 +3,6 @@ import React from 'react';
import { SelectableValue } from '@grafana/data';
import { EditorField, EditorFieldGroup, EditorRow, Stack } from '@grafana/experimental';
import { Project } from '..';
import { ALIGNMENT_PERIODS } from '../../constants';
import CloudMonitoringDatasource from '../../datasource';
import { AlignmentTypes, CustomMetaData, SLOQuery } from '../../types';
@ -11,6 +10,7 @@ import { AlignmentTypes, CustomMetaData, SLOQuery } from '../../types';
import { AliasBy } from './AliasBy';
import { AlignmentPeriodLabel } from './AlignmentPeriodLabel';
import { PeriodSelect } from './PeriodSelect';
import { Project } from './Project';
import { SLO } from './SLO';
import { Selector } from './Selector';
import { Service } from './Service';