mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 10:03:33 -06:00
49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
import uniqBy from 'lodash/uniqBy';
|
|
import { alignOptions, aggOptions } from './constants';
|
|
|
|
export const extractServicesFromMetricDescriptors = metricDescriptors => uniqBy(metricDescriptors, 'service');
|
|
|
|
export const getMetricTypesByService = (metricDescriptors, service) =>
|
|
metricDescriptors.filter(m => m.service === service);
|
|
|
|
export const getMetricTypes = (metricDescriptors, metricType, interpolatedMetricType, selectedService) => {
|
|
const metricTypes = getMetricTypesByService(metricDescriptors, selectedService).map(m => ({
|
|
value: m.type,
|
|
name: m.displayName,
|
|
}));
|
|
const metricTypeExistInArray = metricTypes.some(m => m.value === interpolatedMetricType);
|
|
const selectedMetricType = metricTypeExistInArray ? metricType : metricTypes[0].value;
|
|
return {
|
|
metricTypes,
|
|
selectedMetricType,
|
|
};
|
|
};
|
|
|
|
export const getAlignmentOptionsByMetric = (metricValueType, metricKind) => {
|
|
return !metricValueType
|
|
? []
|
|
: alignOptions.filter(i => {
|
|
return i.valueTypes.indexOf(metricValueType) !== -1 && i.metricKinds.indexOf(metricKind) !== -1;
|
|
});
|
|
};
|
|
|
|
export const getAggregationOptionsByMetric = (valueType, metricKind) => {
|
|
return !metricKind
|
|
? []
|
|
: aggOptions.filter(i => {
|
|
return i.valueTypes.indexOf(valueType) !== -1 && i.metricKinds.indexOf(metricKind) !== -1;
|
|
});
|
|
};
|
|
|
|
export const getLabelKeys = async (datasource, selectedMetricType) => {
|
|
const refId = 'handleLabelKeysQuery';
|
|
const response = await datasource.getLabels(selectedMetricType, refId);
|
|
const labelKeys = response.meta
|
|
? [
|
|
...Object.keys(response.meta.resourceLabels).map(l => `resource.label.${l}`),
|
|
...Object.keys(response.meta.metricLabels).map(l => `metric.label.${l}`),
|
|
]
|
|
: [];
|
|
return labelKeys;
|
|
};
|