import React, { useEffect, useState } from 'react'; import { SelectableValue } from '@grafana/data'; import { Select } from '@grafana/ui'; import { QueryEditorRow } from '..'; import { SELECT_WIDTH } from '../../constants'; import CloudMonitoringDatasource from '../../datasource'; import { SLOQuery } from '../../types'; export interface Props { refId: string; onChange: (query: SLOQuery) => void; query: SLOQuery; templateVariableOptions: Array>; datasource: CloudMonitoringDatasource; } export const SLO = ({ refId, query, templateVariableOptions, onChange, datasource }: Props) => { const [slos, setSLOs] = useState>>([]); const { projectName, serviceId } = query; useEffect(() => { if (!projectName || !serviceId) { return; } datasource.getServiceLevelObjectives(projectName, serviceId).then((sloIds: Array>) => { setSLOs([ { label: 'Template Variables', options: templateVariableOptions, }, ...sloIds, ]); }); }, [datasource, projectName, serviceId, templateVariableOptions]); return (