grafana/public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/common.ts

40 lines
1.4 KiB
TypeScript

import { rangeUtil } from '@grafana/data';
import TimegrainConverter from '../time_grain_converter';
import { AzureMonitorOption } from '../types';
// Defaults to returning a fallback option so the UI still shows the value while the API is loading
export const findOption = (options: AzureMonitorOption[], value: string | undefined) =>
value ? options.find((v) => v.value === value) ?? { value, label: value } : null;
export const findOptions = (options: AzureMonitorOption[], values: string[] = []) => {
if (values.length === 0) {
return [];
}
const set = values.reduce((accum, item) => {
accum.add(item);
return accum;
}, new Set());
return options.filter((option) => set.has(option.value));
};
export const toOption = (v: { text: string; value: string }) => ({ value: v.value, label: v.text });
export function convertTimeGrainsToMs<T extends { value: string }>(timeGrains: T[]) {
const allowedTimeGrainsMs: number[] = [];
timeGrains.forEach((tg: any) => {
if (tg.value !== 'auto') {
allowedTimeGrainsMs.push(rangeUtil.intervalToMs(TimegrainConverter.createKbnUnitFromISO8601Duration(tg.value)));
}
});
return allowedTimeGrainsMs;
}
// Route definitions shared with the backend.
// Check: /pkg/tsdb/azuremonitor/azuremonitor-resource-handler.go <registerRoutes>
export const routeNames = {
azureMonitor: 'azuremonitor',
logAnalytics: 'loganalytics',
appInsights: 'appinsights',
resourceGraph: 'resourcegraph',
};