OpenTSDB: use an effect to get aggregators and filters (#68785)

* only update state if it's different

* use an effect
This commit is contained in:
Ashley Harrison
2023-05-22 15:43:22 +01:00
committed by GitHub
parent b37a6e9d4c
commit 2cbd7f1be6

View File

@@ -1,5 +1,5 @@
import { css } from '@emotion/css';
import React, { useState } from 'react';
import React, { useEffect, useState } from 'react';
import { GrafanaTheme2, QueryEditorProps, textUtil } from '@grafana/data';
import { useStyles2 } from '@grafana/ui';
@@ -62,17 +62,21 @@ export function OpenTsdbQueryEditor({
query.downsampleFillPolicy = 'none';
}
datasource.getAggregators().then((aggs: string[]) => {
if (aggs.length !== 0) {
setAggregators(aggs);
}
});
useEffect(() => {
datasource.getAggregators().then((aggs: string[]) => {
if (aggs.length !== 0) {
setAggregators(aggs);
}
});
}, [datasource]);
datasource.getFilterTypes().then((filterTypes: string[]) => {
if (filterTypes.length !== 0) {
setFilterTypes(filterTypes);
}
});
useEffect(() => {
datasource.getFilterTypes().then((newFilterTypes: string[]) => {
if (newFilterTypes.length !== 0) {
setFilterTypes(newFilterTypes);
}
});
}, [datasource]);
async function suggestMetrics(value: string): Promise<Array<{ value: string; description: string }>> {
return datasource.metricFindQuery(`metrics(${value})`).then(getTextValues);